[KAFKA] kafka broker scale out 하기

2025. 5. 23. 11:34Big Data

kafka를 서비스 중인 broker server의 연식이 다 되어서 교체할 필요가 생겼다.

 

교체 순서는 우선 broker scale out -> topic 이전 -> 기존 broker server remove 

위의 순서대로 진행할 예정이다.

 

일단 broker scale out을 위해 신규 서버에 kafka를 설치한다.

kafka 설치는 https://kafka.apache.org/downloads 해당 사이트에 들어 간 후 자신이 원하는 버전의 kafka를 다운 받으면 된다.

 

다운을 다 받았다면 압축을 푼 후, kafka/config 폴더 내의 server.properties 파일을 수정해 주자.

 

우선 수정해야 할 것은 broker.id를 수정해 준다.

기존 kafka broker에 scale out을 하는 형태이기 때문에 기존 broker에서 사용 중인 id를 사용하면 안된다.

 

broker.id=3

 

kafka log가 저장될 로그 디렉토리도 설정 해 주자. 기존에는 /tmp/kafka-logs로 설정이 되어 있는데 tmp 폴더는 삭제될 가능성이 있으니 따로 지정해 주자.

 

log.dirs=/logs/kafka-logs

 

kafka 클러스터를 구성하기 위해서는 zookeeper 연결이 필요하다. 설치된 zookeeper를 연결해 주자.

 

zookeeper.connect=zookeeper1:2181,zookeeper2:2181/kafka

 

위와 같이 설정하면 kafka에 대한 설정은 모두 끝이 났다. (쉬움)

 

이제 kafka를 띄워 주면 자기가 알아서 zookeeper와 연동된 kafka cluster에 붙게 된다. 실행 전에 아래의 환경 변수를 설정해 주자.

 

export KAFKA_HEAP_OPTS="-Xmx24G -Xms24G"

export KAFKA_JVM_PERFORMANCE_OPTS="-XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"

export JMX_PORT=9999

export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"

 

아래와 같은 명령어로 kafka broker를 띄운다.

 

$> bin/kafka-server-start.sh -daemon config/server.properties

 

아래의 명령어로 kafka broker를 중지시킬 수 있다.

$> bin/kafka-server-stop.sh -daemon config/server.properties

 

kafka-manager와 kafka-ui를 통해 scale-out된 broker들을 확인해 볼수가 있다.

참고로 kafka-ui의 경우에는 broker count는 나오지만 실제 데이터가 없기 때문에 broker 목록에는 나타나지 않을 수 있다. 

위와 같은 경우에는 topic reassignment를 한 후 해당 broker에 데이터를 추가해 주면 broker 목록이 나타나게 된다.

 

kafka-manager에 추가된 broker 리스트

 

kafka-ui에 표시되는 broker 리스트. topic이 없는 broker의 경우에는 목록에 안나타날 수 있다.