728x90
카프카 브로커를 스케일 아웃 하는 것은 처리량을 늘리기 위한 방법은 아니다. (처리량을 늘리려면 가장 먼저 파티션을 늘려야 한다)
카프카는 리더 브로커만 실질적으로 프로듀서와 통신하고 나머지 팔로워 브로커는 복제만 담당하기 때문이다.
하지만 혹시 모를 이슈 상황을 대비해 카프카 브로커를 스케일 아웃 해보았다.
현재 카프카 브로커는 3개이며 5개로 스케일 아웃을 하고, 다시 3개로 스케일 인을 해보았다.
- 카프카 버전 : 3.7.0
- 총 소요시간 : 8시간
(인증세팅이 없으면 1시간도 안걸리는 작업이지만, 카프카 브로커 sasl 인증을 추가해 줄 때 Credential을 자꾸 추가해 주는 실수를 해서... 오래 걸렸다. 한번 주키퍼에 저장된 Credentail은 다시 지정해줄 필요가 없다. 인증 프로세스 숙지가 미흡했기에 다시 공부를 하며 작업을 진행했다.)
Scale out 테스트
먼저, docker ps 와 docker images 로 현재 컨테이너 및 이미지를 조회. 현재 kafka1, kafka2, kafka3 이 띄워져 있다.
1. kafka4 컨테이너 추가
docker-compose.yml에 추가하고 docker compose up 을 하면 모든 컨테이너가 새로 생성이 되기 때문에, 명령어로 컨테이너를 추가했다.
docker run --name kafka4 \\
--network kafka_default \\
-p 9095:9095 \\
--restart unless-stopped \\
-v /docker/kafka/kafka_server_jaas.conf:/opt/bitnami/kafka/config/kafka_server_jaas.conf \\
-v /docker/kafka/sasl_client.properties:/opt/bitnami/kafka/config/sasl_client.properties \\
-e KAFKA_BROKER_ID=4 \\
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9095 \\
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.2.44:9095 \\
-e KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.2.44:2181,192.168.2.44:2182,192.168.2.44:2183 \\
-e KAFKA_ENABLE_KRAFT=no \\
-e KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3 \\
--user root \\
bitnami/kafka
scale out 을 하기 위해 컨테이너를 1개 생성했다.
docker ps 로 kafka4가 생긴 것을 확인
2. server.properties 에 보안 정보 추가 (인증 세팅을 한 경우에만 진행)
docker exec -it kafka4 bash
apt-get update && apt-get install vim net-tools -y
vi /opt/bitnami/kafka/config/server.properties
listeners=SASL_PLAINTEXT://:9095
advertised.listeners=SASL_PLAINTEXT://192.168.2.44:9095
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512
3. 환경변수 설정 (인증 세팅을 한 경우에만 진행)
vi /opt/bitnami/scripts/kafka-env.sh
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/bitnami/kafka/config/kafka_server_jaas.conf"
4. kafka4 재시작
exit
docker restart kafka4
5. 주키퍼에 붙은 카프카 브로커 목록 확인
zookeeper-shell.sh 명령어로 확인
zookeeper-shell.sh zookeeper1 ls /brokers/ids
카프카 4가 주키퍼에 잘 붙은 것을 확인.
6. 카프카 5도 추가
위와 같은 방법으로 추가하였다.
브로커 5개가 주키퍼에 붙은 것을 확인.
Scale in 테스트
해당 브로커를 중지 또는 삭제하며 스케일 인을 할 수 있다. 현 테스트는 중지(stop)시키며 테스트했다.
1. 카프카 5 중지
먼저 제일 마지막에 추가한 kafka5먼저 중지했다.
docker stop kafka5
카프카 5를 중지시키니, 주키퍼에 붙은 카프카 브로커가 4개가 된 것을 확인.
2. 카프카 4중지
이제 fafka4를 중지시켰다.
docker stop kafka4
카프카 브로커가 원래대로 3개가 된 것을 확인.
'Infra > Kafka, MQTT' 카테고리의 다른 글
[MQTT] Kafka → 웹 소켓 메시지 전송 테스트(Vue3으로 화면 만들어 테스트) (0) | 2024.08.09 |
---|---|
[MQTT,Kafka] EMQX 웹 소켓 사용하여 대시보드에 실시간 데이터 보여주기 (Throughput 테스트) (0) | 2024.07.11 |
[Kafka] 카프카 컨슈머에서 받은 데이터 MariaDB로 전송하기 (0) | 2024.06.18 |
[Kafka] 카프카 브로커 하나씩 다운시킨 후 메시지 전송 테스트 (고가용성 테스트, replication test) (0) | 2024.06.10 |
[Kafka] 스프링 부트에 Kafka Streams 적용하기 (1) | 2024.06.07 |