Kafka
[Kafka] Reassign Partition 방법
흥부가귀막혀
2022. 3. 15. 14:41
필요한 상황
- 신규 broker 장비 추가
- broker 장비 이전
- 특정 토픽을 특정 노드에서만 운영하고 싶을 때
실행 방법
- kafka bin 디렉토리 하위에 있는 kafka-reassign-partitions.sh 스크립트를 사용
- 이동시킬 topic 이 무엇인지 json 포맷으로 정의 예) example-to-move.json
{"topics":[{"topic": "example1"},{"topic": "example2"},{"topic": "example3"}],"version":1}
- --topics-to-move-json-file 옵션으로 위에서 생성한 json 파일을 지정하고, --generate 옵션을 통해 이동시킬 broker 에 대한 파티션 설정값을 자동으로 생성
$ bin/kafka-reassign-partitions.sh --zookeeper "zookeeper-host:port,zookeeper-host:port,..." --broker-list "1,2,3" --topics-to-move-json-file example-to-move.json --generate
- 위 실행을 통해 Current partition replica assignment 과 Proposed partition reassignment configuration 이라는 제목으로 콘솔창에 json 내용이 출력되게 되는데 Proposed partition reassignment configuration 내용을 복사하여 파일로 만들고, Current partition replica assignment 는 혹시 롤백을 해야할 경우를 대비해 따로 복사해둔다.(해당 예시에서는 example-partitions-to-move.json 이름으로 생성)
- --reassignment-json-file 옵션으로 위에서 생성한 json 파일을 지정하고, --execute 옵션을 통해 파티션을 이동시키도록 실행한다.
$ bin/kafka-reassign-partitions.sh --zookeeper "zookeeper-host:port,zookeeper-host:port,..." --reassignment-json-file example-partitions-to-move.json --execute
- --verify 옵션을 통해 현재 이동 상태를 확인한다.
$ bin/kafka-reassign-partitions.sh --zookeeper "zookeeper-host:port,zookeeper-host:port,..." --reassignment-json-file example-partitions-to-move.json --verify
Status of partition reassignment:
Reassignment of partition example1-52 completed successfully
Reassignment of partition example1-15 completed successfully
Reassignment of partition example2-4 completed successfully
Reassignment of partition example2-12 completed successfully
Reassignment of partition example3-11 completed successfully
Reassignment of partition example1-29 completed successfully
Reassignment of partition example2-40 completed successfully
Reassignment of partition example3-45 completed successfully
Reassignment of partition example3-37 completed successfully
...