주키퍼는 과반수 법칙에 따라 구성되기 때문에 3대로 구성한 경우 1대의 노드에 문제가 생겨도 지속적인 서비스가 가능하다.어떠한 이유에 의해서 3대로 구성된 클러스터를 5대 또는 그 이상으로 스케일 아웃 해야할 경우가 있다.
/[data폴더]/myid 파일에 신규 ID를 설정
zoo.cfg 파일에 server.[id]=[호스트]:[노드포트]:[리더선출포트] 설정을 추가
server.4=myzoo04:2888:3888
server.5=myzoo05:2888:3888
1대씩 롤링 재시작
리더를 찾는 방법은 아래 명령어로 확인이 가능하다
$ ./bin/zkServer.sh status
재시작 완료후 다음과 같은 명령어로 스케일 아웃이 제대로 반영되었는지 확인할 수 있다.
$ echo mntr | nc localhost 2181 | grep zk_synced_followers
카프카 클러스터의 스케일 아웃은 새롭게 추가된 서버의 설정파일에 broker.id 설정을 다른 서버와 중복되지 않도록 한뒤 실행하면 된다.
노드가 잘 추가되었는지 확인할 때는 주키퍼에서 /my-kafka/brokers/ids의 하위 디렉토리 목록을 살펴보면 된다
$ ls /my-kafka/brokers/ids
그러나 브로커가 추가되더라도 파티션 재배치는 자동으로 하지 않기 때문에 추가된 브로커에는 토픽과 파티션이 없는 상태다.따라서 새로 추가된 브로커에도 리소스를 분산시키기 위해서는 파티션 분산 작업을 해야한다.