kafka 군집 확장 (Topic 이전)

4211 단어 kafkakafka 확장
새 주소
글 을 시작 하기 전에 kafka - manager 도 구 를 사용 하 는 것 을 추천 합 니 다. kafka 동기 화 상 태 를 실시 간 으로 볼 수 있 습 니 다. broker 는 실시 간 으로 읽 기와 쓰기 데이터, topic 파 티 션 상황 등 정 보 를 읽 고 최 적 화 된 leader 를 다시 선택 하 는 등 작업 을 할 수 있 습 니 다.
kafka 의 군집 확장 은 사실상 topic 의 partition 을 새로 추 가 된 군집 으로 이동 시 키 는 것 이다.
topic 이동 json 파일 을 만 드 는 데 는 두 가지 방법 이 있 습 니 다.
  • --topics-to-move-json-file--broker-list 를 통 해 새로운 topic 파 티 션 정 보 를 대량으로 생 성 한 다음 에 이 정보 에 따라 이전 작업 을 수행 합 니 다.
  • 이동 할 topic 정 보 를 수 동 으로 쓰 면 더욱 유연 하지만 대량의 topic 과 partition 의 경우 매우 번 거 롭 고 오류 가 발생 하기 쉽다.

  • 1. 새 노드 시작
    원래 노드 의 kafka 디 렉 터 리 를 scp 명령 을 통 해 새 노드 로 복사 하려 면 설정 파일 의 broker 만 수정 해 야 합 니 다.id 와 ip 주소, 그리고 차례대로 kafka 서 비 스 를 시작 합 니 다.
    2. 주제 이동
    topic A, topic B 이동
    sudo vim topics-to-move.json
    
    {"topics": [{"topic": "topicA"},
                {"topic": "topicB"}],
    "version":1
    }
    

    상기 topicbroker 3, 4, 5 로 이동 하여 generate 명령 으로 partition 분배 json 문자열 을 생 성 합 니 다.
    bin/kafka-reassign-partitions.sh --zookeeper zk1:2181 
    --topics-to-move-json-file topics-to-move.json --broker-list "3,4,5" --generate 
    

    다음 과 같이 보 입 니 다:
    Current partition replica assignment
    {"version":1,"partitions":[{"topic":"topicA","partition":2,"replicas":[0,2]},
    {"topic":"topicA","partition":1,"replicas":[1,0]},
    {"topic":"topicB","partition":1,"replicas":[0,1]},
    {"topic":"topicA","partition":0,"replicas":[2,1]},
    {"topic":"topicB","partition":0,"replicas":[2,0]},
    {"topic":"topicB","partition":2,"replicas":[1,2]}]}
    
    Proposed partition reassignment configuration
    
    {"version":1,"partitions":[{"topic":"topicA","partition":2,"replicas":[3,4]},
    {"topic":"topicA","partition":1,"replicas":[5,3]},
    {"topic":"topicB","partition":1,"replicas":[3,4]},
    {"topic":"topicA","partition":0,"replicas":[4,5]},
    {"topic":"topicB","partition":0,"replicas":[5,3]},
    {"topic":"topicB","partition":2,"replicas":[4,5]}]}
    
    Proposed partition reassignment configuration 아래 데 이 터 를 기록 합 니 다 expand-cluster-reassignment.json위 에서 말 한 두 번 째 방식 은 명령 없 이 이 파일 을 수 동 으로 쓰 는 것 이다.
    vim expand-cluster-reassignment.json
    
    {"version":1,"partitions":[{"topic":"topicA","partition":2,"replicas":[3,4]},
    {"topic":"topicA","partition":1,"replicas":[5,3]},
    {"topic":"topicB","partition":1,"replicas":[3,4]},
    {"topic":"topicA","partition":0,"replicas":[4,5]},
    {"topic":"topicB","partition":0,"replicas":[5,3]},
    {"topic":"topicB","partition":2,"replicas":[4,5]}]}
    
    execute 명령 으로 본 격 적 으로 실 행 됩 니 다. 상기 2 개의 topic 를 expand-cluster-reassignment 의 설정 에 따라 분배 합 니 다. 이 과정 은 다른 topic 의 읽 기 (지연) 에 영향 을 줄 수 있 습 니 다.
    bin/kafka-reassign-partitions.sh --zookeeper zk1:2181 
    --reassignment-json-file expand-cluster-reassignment.json --execute
    

    실행 상태 조회
    실행 상태 조회
    bin/kafka-reassign-partitions.sh --zookeeper zk1:2181 
    --reassignment-json-file expand-cluster-reassignment.json --verify
    

    주로 몇 가지 상태 가 있 습 니 다.
    Reassignment of partition [topicA,4] is still in progress #    
    Reassignment of partition [topicB,2] completed successfully #     
    

    만약 당신 이 많은 ERROR 정 보 를 본다 면:
    ERROR: Assigned replicas (0,5,1,2,3,4) don't match the list of replicas for reassignment (5,3,4) for partition [topicA,3]
    Reassignment of partition [topicA,3] failed
    

    네모 나 지 말고 노드 를 닫 지 말고 이따가 다시 보면 정상 입 니 다.

    좋은 웹페이지 즐겨찾기