728x90
반응형
작성한 docker-compose 파일은 다음과 같다
version: '3.1'
services:
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
depends_on:
- zookeeper
zookeeper → 2181:2181
kafka → 9092:9092
docker-compose 실행
docker-compose -f docker-compose-single-broker.yml up -d
docker-compose 종료
docker-compose -f docker-compose-single-broker.yml down
kafka container에 들어가서 /opt/kafka_2.13-2.8.1/bin 으로 들어가면 사용할 수 있는 명령어들을 확인할 수 있다.
kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic quickstart
해당 명령어로 토픽 만들어서 실행해봄
kafka UI Tool 사용
Kafka-UI Tool 을 이용하여 Kafka 관리하기
UI for Apache Kafka 사용
- zookeeper → 2181:2181
- 172.10.40.152:2181
- kafka → 9092:9092
- 172.10.40.152:9092
version: '2'
services:
kafka-ui:
image: provectuslabs/kafka-ui
container_name: kafka-ui
ports:
- "8989:8080"
restart: always
environment:
- KAFKA_CLUSTERS_0_NAME=localhost
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
- KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
- GitHub: https://github.com/provectus/kafka-ui
- License: Apache 2
- 비용: 무료
- 장점: UI가 이쁘고, 유연하며, 기능이 많다.
- 단점: 아직 개발 중에 있다.
현재 접속 가능한 URL
(이 주소는 현재 회사 VPN으로 연결된 서버라서 본인 우분투 서버의 public ip에 8989 포트를 이용해서 열면된다.)
[Brokers 화면]
[Topics 화면]
UI로도 만들 수 있는데, 실제 컨테이너에 들어가서 명령어를 이용해서 topic을 생성할 수도 있다.
[topic 생성해보기]
docker exec -it kafka /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test
Topic 생성된 것 확인 가능
[Topic으로 신호 주고받기]
test topic 듣고 있는 producer를 하나 만듬
kafka-console-producer.sh --topic test --bootstrap-server kafka:9092
그리고 hi, hello, yo-man을 차례대로 보냈다.
UI에서 해당 메시지가 온것을 확인할 수 있다. (아니면 직접 consumer를 명령어로 실행시켜서 확인할 수도 있다.)
kafka-console-consumer.sh —topic tet —from-beginning —bootstrap-server kafka:9092
카프카를 사용하는 서비스(Store Service) 배포
docker build --platform linux/amd64 -t kimtaeheon/storeservice:1.0 .
docker save -o store-service.tar kimtaeheon/storeservice:1.0
scp store-service.tar root@{harbor주소}:/root/kth
docker load -i /kth/store-service.tar
docker tag kimtaeheon/storeservice:1.0 msa.harbor.com/library/storeservice:1.0
docker push msa.harbor.com/library/storeservice:1.0
apiVersion: apps/v1
kind: Deployment
metadata:
name: store-deployment
labels:
app: store
spec:
replicas: 1
selector:
matchLabels:
app: store
template:
metadata:
labels:
app: store
spec:
containers:
- name: store
image: msa.harbor.com/library/storeservice:1.0
imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: store-service
spec:
clusterIP: 10.104.193.24
selector:
app: store
ports:
- port: 8080
protocol: TCP
targetPort: 8080
오류 1 : kafka 연결이 안되는듯..
java.net.UnknownHostException: kafka
해결 : kafka docker-compose에서 KAFKA_ADVERTISED_HOST_NAME 속성 수정
version: '3.1'
services:
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 172.10.40.152
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
depends_on:
- zookeeper
728x90
반응형
'프로젝트' 카테고리의 다른 글
Kafka Topic replicationFactor 오류 원인 및 해결(Spring Kafka) (0) | 2024.07.22 |
---|---|
쿠버네티스 Discovery, API Gateway, Microservice 연동 (0) | 2024.03.14 |
마이크로서비스 프라이빗 클라우드에 배포하기 (0) | 2024.03.12 |
Service Discovery (0) | 2024.03.05 |