15.2. 브로커 추가 후 파티션 재할당


kafka-reassign-partitions.sh 툴에서 생성한 재할당 파일을 사용하여 Kafka 클러스터의 브로커 수를 늘린 후 파티션을 다시 할당합니다. 재할당 파일은 확대된 Kafka 클러스터의 브로커에 파티션을 다시 할당하는 방법을 설명해야 합니다. 파일에 지정된 재할당을 브로커에 적용한 다음 새 파티션 할당을 확인합니다.

이 절차에서는 TLS를 사용하는 보안 확장 프로세스를 설명합니다. TLS 암호화 및 mTLS 인증을 사용하는 Kafka 클러스터가 필요합니다.

참고

kafka-reassign-partitions.sh 툴을 사용할 수 있지만 자동 파티션 재할당 및 클러스터 재조정에 Cruise Control을 사용하는 것이 좋습니다. 크루즈 컨트롤은 다운타임 없이 한 브로커에서 다른 브로커로 주제를 이동할 수 있으며 파티션을 다시 할당하는 가장 효율적인 방법입니다.

사전 요구 사항

  • 기존 Kafka 클러스터입니다.
  • 추가 AMQ 브로커가 설치된 새 머신입니다.
  • 확장 가능한 클러스터의 브로커에 파티션을 다시 할당하는 방법을 지정하는 JSON 파일을 생성했습니다.

    이 절차에서는 my-topic 이라는 주제의 모든 파티션을 다시 할당하고 있습니다. topics.json 이라는 JSON 파일은 주제를 지정하고 reassignment.json 파일을 생성하는 데 사용됩니다.

JSON 파일의 예는 my-topic을 지정합니다.

{
  "version": 1,
  "topics": [
    { "topic": "my-topic"}
  ]
}

프로세스

  1. 클러스터의 다른 브로커와 동일한 설정을 사용하여 새 브로커에 대한 구성 파일을 생성합니다. 단, broker.id 는 다른 브로커에서 아직 사용하지 않는 숫자여야 합니다.
  2. 이전 단계에서 생성한 구성 파일을 인수로 kafka-server-start.sh 스크립트에 전달하는 새 Kafka 브로커를 시작합니다.

    su - kafka
    /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
  3. Kafka 브로커가 실행 중인지 확인합니다.

    jcmd | grep Kafka
  4. 각 새 브로커에 대해 위의 단계를 반복합니다.
  5. 이 작업을 수행하지 않은 경우 kafka-reassign-partitions.sh 도구를 사용하여 reassignment.json 이라는 재할당 JSON 파일을 생성합니다.

    JSON 파일을 다시 할당하는 명령의 예

    /opt/kafka/bin/kafka-reassign-partitions.sh \
      --bootstrap-server localhost:9092 \
      --topics-to-move-json-file topics.json \ 
    1
    
      --broker-list 0,1,2,3,4 \ 
    2
    
      --generate

    1
    주제를 지정하는 JSON 파일입니다.
    2
    작업에 포함할 kafka 클러스터의 브로커 ID입니다. 브로커 4 가 추가되었다고 가정합니다.

    현재 및 제안된 복제본 할당을 표시하는 재할당 JSON 파일의 예

    Current partition replica assignment
    {"version":1,"partitions":[{"topic":"my-topic","partition":0,"replicas":[0,1,2],"log_dirs":["any","any","any"]},{"topic":"my-topic","partition":1,"replicas":[1,2,3],"log_dirs":["any","any","any"]},{"topic":"my-topic","partition":2,"replicas":[2,3,0],"log_dirs":["any","any","any"]}]}
    
    Proposed partition reassignment configuration
    {"version":1,"partitions":[{"topic":"my-topic","partition":0,"replicas":[0,1,2,3],"log_dirs":["any","any","any","any"]},{"topic":"my-topic","partition":1,"replicas":[1,2,3,4],"log_dirs":["any","any","any","any"]},{"topic":"my-topic","partition":2,"replicas":[2,3,4,0],"log_dirs":["any","any","any","any"]}]}

    나중에 변경 사항을 복원해야 하는 경우 이 파일의 사본을 로컬에 저장합니다.

  6. --execute 옵션을 사용하여 파티션 재할당을 실행합니다.

    /opt/kafka/bin/kafka-reassign-partitions.sh \
      --bootstrap-server localhost:9092 \
      --reassignment-json-file reassignment.json \
      --execute

    복제를 제한하려면 브로어링된 속도가 초당 바이트 단위로 --throttle 옵션을 전달할 수도 있습니다. 예를 들면 다음과 같습니다.

    /opt/kafka/bin/kafka-reassign-partitions.sh \
      --bootstrap-server localhost:9092 \
      --reassignment-json-file reassignment.json \
      --throttle 5000000 \
      --execute
  7. --verify 옵션을 사용하여 재할당이 완료되었는지 확인합니다.

    /opt/kafka/bin/kafka-reassign-partitions.sh \
      --bootstrap-server localhost:9092 \
      --reassignment-json-file reassignment.json \
      --verify

    --verify 명령은 이동 중인 각 파티션이 성공적으로 완료되었음을 보고하면 재할당이 완료되었습니다. 이 마지막 --verify 는 또한 reassignment throttles를 제거하는 효과가 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동