728x90
반응형
# EKS 클러스터에 Kafka를 설치 후 테스트를 진행해 보자.
1. 헬름을 통한 설치를 진행한다.
- 헬름이란?
2021.10.24 - [⭐ Kubernetes & EKS/Helm] - Helm이란? 및 기본 명령어 정리
2. 헬름을 통해 카프카를 설치해보자.
helm repo add bitnami https://charts.bitnami.com/bitnami
# kafka 설치하기
helm install my-kafka bitnami/kafka
# kafka 브로커 3개 설치
helm install my-kafka --set replicaCount=3 bitnami/kafka
3. 설치된 pod를 확인해보자.
kubectl get pod
NAME READY STATUS RESTARTS AGE
my-kafka-0 1/1 Running 0 20m
my-kafka-client 1/1 Running 0 17m
my-kafka-zookeeper-0 1/1 Running 0 20m
- kafka는 별도의 namespace를 주지 않았으므로, default옵션으로 조회가 가능하다.
kubectl get pod
NAME READY STATUS RESTARTS AGE
my-kafka-0 1/1 Running 0 20m
my-kafka-client 1/1 Running 0 17m
my-kafka-zookeeper-0 1/1 Running 0 20m
seungkim:~/environment $ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/my-kafka-0 1/1 Running 0 22m
pod/my-kafka-client 1/1 Running 0 18m
pod/my-kafka-zookeeper-0 1/1 Running 0 22m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 9d
service/my-kafka ClusterIP 172.20.224.33 <none> 9092/TCP 22m
service/my-kafka-headless ClusterIP None <none> 9092/TCP,9093/TCP 22m
service/my-kafka-zookeeper ClusterIP 172.20.87.252 <none> 2181/TCP,2888/TCP,3888/TCP 22m
service/my-kafka-zookeeper-headless ClusterIP None <none> 2181/TCP,2888/TCP,3888/TCP 22m
NAME READY AGE
statefulset.apps/my-kafka 1/1 22m
statefulset.apps/my-kafka-zookeeper 1/1 22m
4. Kafka 테스트
- 기본 명령어 확인, helm으로 설치를 하면 아래와 같이 기본적인 명령어를 제공해 준다.
- 프로듀서를 활용하여 메세지를 보내는것과 컨슈머를 활용하여 메세지를 받는 명령어 등을 확인할 수 있다.
helm install my-kafka bitnami/kafka
NAME: my-kafka
LAST DEPLOYED: Mon Sep 26 00:15:37 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kafka
CHART VERSION: 18.4.4
APP VERSION: 3.2.3
** Please be patient while the chart is being deployed **
Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:
my-kafka.default.svc.cluster.local
Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:
my-kafka-0.my-kafka-headless.default.svc.cluster.local:9092
To create a pod that you can use as a Kafka client run the following commands:
kubectl run my-kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.2.3-debian-11-r1 --namespace default --command -- sleep infinity
kubectl exec --tty -i my-kafka-client --namespace default -- bash
PRODUCER:
kafka-console-producer.sh \
--broker-list my-kafka-0.my-kafka-headless.default.svc.cluster.local:9092 \
--topic test
CONSUMER:
kafka-console-consumer.sh \
--bootstrap-server my-kafka.default.svc.cluster.local:9092 \
--topic test \
--from-beginning
- Kafka 클라이언트용 프로그램을 실행
kubectl run my-kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.2.3-debian-11-r1 --namespace default --command -- sleep infinity
- 실행된 클라이언트용 pod로 접속
kubectl exec --tty -i my-kafka-client --namespace default -- bash
- Producer - 브로커에서 메세지 전송
- 클라이언트 pod에 접속된 상태에서 실행
kafka-console-producer.sh \
> --broker-list my-kafka-0.my-kafka-headless.default.svc.cluster.local:9092 \
> --topic test
>hello
>world
>hi
>hi
>hi
>hi
>hi
- Consumer - 브로커로부터 메세지 받기
브로커로부터 메세지를 받기 위해 별도의 터미널에서 kafka 클라이언트 pod로 접근한다.
kubectl exec --tty -i my-kafka-client --namespace default -- bash
- 위의 Producer에서 생성한 메세지를 모두 받으려면 --from-beginning 옵션을 사용하여 확인을 할 수 있다.
# 새로운 터미널 생성 후 클라이언트 접속
kubectl exec --tty -i my-kafka-client --namespace default -- bash
# 메세지 확인
kafka-console-consumer.sh \
> --bootstrap-server my-kafka.default.svc.cluster.local:9092 \
> --topic test \
> --from-beginning
hello
world
hi
hi
hi
hi
hi
728x90
반응형
'Apache Kafka' 카테고리의 다른 글
Producer에서 Topic 생성, Partition 개수 늘리기, Consumer 데이터 확인 및 기본 명령어 정리 (0) | 2023.12.15 |
---|---|
Kafka 설정 정리 (0) | 2023.12.14 |
Apache Kafka 주요 개념 정리 (0) | 2023.12.14 |
Windows에서 Apache kafka 실행하기 (0) | 2023.04.11 |
Springboot에서 Kafka 연동하기 (1) | 2022.09.26 |