20장. 브로커 추가 또는 제거를 통해 클러스터 스케일링


브로커를 추가하여 Kafka 클러스터를 확장하면 성능과 안정성을 향상시킬 수 있습니다. 브로커 수를 늘리면 더 많은 리소스를 제공하여 클러스터가 더 많은 워크로드를 처리하고 더 많은 메시지를 처리할 수 있습니다. 또한 추가 복제본을 제공하여 내결함성을 향상시킵니다. 반대로 활용도가 낮은 브로커를 제거하면 리소스 소비를 줄이고 효율성을 높일 수 있습니다. 중단이나 데이터 손실을 방지하려면 스케일링을 신중하게 수행해야 합니다. 브로커 간에 파티션을 재배포하면 개별 브로커의 부하를 줄여 클러스터의 전체 처리량을 늘립니다.

복제 구성을 조정하면 클러스터의 브로커 수가 변경됩니다. 3의 복제 요소는 각 파티션이 세 브로커에 복제되어 브로커가 실패하는 경우 내결함성을 보장합니다.

복제본 수에 대한 노드 풀 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaNodePool
metadata:
  name: my-node-pool
  labels:
    strimzi.io/cluster: my-cluster
spec:
  replicas: 3
  # ...

주제의 실제 복제 요소는 사용 가능한 브로커 수 및 각 주제 파티션의 복제본을 저장하는 브로커 수 ( default.replication.factor)에 따라 다릅니다. 쓰기를 성공으로 간주해야 하는 최소 복제본 수는 min.insync.replicas 로 정의됩니다.

복제 주제 구성 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
  annotations:
    strimzi.io/node-pools: enabled
    strimzi.io/kraft: enabled
spec:
  kafka:
    config:
      default.replication.factor: 3
      min.insync.replicas: 2
    # ...

복제본 수를 변경하여 브로커를 추가할 때 노드 ID는 0에서 시작하고 Cluster Operator는 사용 가능한 다음 ID를 새 브로커에 할당합니다. 브로커를 제거하면 노드 ID가 가장 높은 Pod가 시작됩니다. 또한 노드 풀로 클러스터를 확장할 때 확장 작업을 위해 노드 ID를 할당 할 수 있습니다.

Cruise Control이 배포되고 Kafka 리소스에서 자동 재조정이 활성화되면 Apache Kafka의 스트림을 자동으로 재할당할 수 있습니다. 자동 재조정이 비활성화된 경우 Cruise Control을 사용하여 수동으로 클러스터 재조정 전에 최적화 제안을 생성할 수 있습니다.

cruise Control은 확장을 위한 add-brokersremove-brokers 모드를 제공합니다.

  • 확장 후 add-brokers 모드를 사용하여 파티션 복제본을 새 브로커로 이동합니다.
  • 제거 중인 브로커에서 파티션 복제본을 이동하려면 축소하기 전에 remove-brokers 모드를 사용합니다.

자동 재조정을 사용하면 이러한 모드가 재조정 템플릿에서 기본 Cruise Control 구성 또는 사용자 지정 설정을 사용하여 자동으로 실행됩니다.

참고

Kafka 주제의 처리량을 높이기 위해 해당 항목의 파티션 수를 늘리면 여러 브로커에 부하를 분산할 수 있습니다. 그러나 모든 브로커가 I/O와 같은 리소스로 제한되는 경우 더 많은 파티션을 추가하면 처리량이 향상되고 브로커를 더 많이 추가할 필요가 없습니다.

20.1. 클러스터를 스케일링할 때 자동 재조정 트리거

클러스터를 확장할 때 주제 파티션을 자동으로 재배포하도록 자동 재조정을 설정합니다. 배포에 사용되는 Kafka 또는 KafkaNodePool 사용자 정의 리소스의 spec.replicas 속성을 사용하여 브로커 수를 조정하여 Kafka 클러스터를 확장할 수 있습니다. 자동 재조정이 활성화되면 추가 개입 없이 클러스터가 재조정됩니다.

  • 브로커를 추가한 후 주제 파티션은 새 브로커에 재배포됩니다.
  • 브로커를 제거하기 전에 파티션은 제거 중인 브로커에서 이동합니다.

자동 재조정은 재구성 설정 방법에 따라 스케일링 작업 중에 Kafka 브로커 간에 균형 있는 부하 분산을 유지 관리하는 데 도움이 됩니다.

확장은 add-brokersremove-brokers 의 두 가지 모드로 작동합니다. 각 모드는 spec.cruiseControl.autoRebalance 속성의 Kafka 리소스에 지정된 자체 자동 재조정 구성을 가질 수 있습니다. template 속성을 사용하여 리밸런스 구성 템플릿 역할을 하는 사전 정의된 KafkaRebalance 리소스를 지정합니다. 템플릿이 autorebalance 구성에 지정되지 않은 경우 기본 Cruise Control 재조정 구성이 사용됩니다. 스케일링 모드 모두에 동일한 템플릿 구성을 적용하거나 각각에 대해 다른 구성을 사용하거나, 하나의 모드에 대해서만 자동 재조정을 활성화할 수 있습니다. 모드에 autorebalance 구성이 설정되지 않은 경우 해당 모드에서 자동 재조정이 수행되지 않습니다.

KafkaRebalance 리소스에 strimzi.io/rebalance-template: "true" 주석이 포함되어야 합니다. 템플릿은 실제 리밸런스 요청을 나타내지 않지만 리밸런싱 구성을 보유합니다. 확장 중에 Cluster Operator는 < cluster_name>-auto-rebalancing-<mode >라는 이 템플릿을 기반으로 KafkaRebalance 리소스를 생성합니다. 여기서 <mode>는 add-brokers 또는 remove-brokers 입니다. Cluster Operator는 종료자(strimzi.io/auto-rebalancing)를 적용하여 재조정 프로세스 중에 리소스의 삭제를 방지합니다.

진행 상황은 Kafka 리소스의 상태에 반영됩니다. status.autoRebalance 속성은 리밸런스 상태를 나타냅니다. modes 속성은 작업 중에 추가되거나 제거되는 브로커를 나열하여 조정 전반에 걸쳐 진행 상황을 추적하는 데 도움이 됩니다.

사전 요구 사항

프로세스

  1. 자동 재조정 작업(필요한 경우)에 대한 재조정 템플릿을 생성합니다.

    strimzi.io/rebalance-template: "true" 주석을 사용하여 KafkaRebalance 리소스를 구성합니다. 리밸런스 구성 템플릿에는 재조정을 위한 최적화 제안을 생성할 때와 달리 모드브로커 속성이 필요하지 않습니다.

    템플릿 구성 재조정의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-add-remove-brokers-rebalancing-template
      annotations:
        strimzi.io/rebalance-template: "true" 
    1
    
    spec:
      goals:
        - CpuCapacityGoal
        - NetworkInboundCapacityGoal
        - DiskCapacityGoal
        - RackAwareGoal
        - MinTopicLeadersPerBrokerGoal
        - NetworkOutboundCapacityGoal
        - ReplicaCapacityGoal
      skipHardGoalCheck: true
      # ... other rebalancing configuration

    1
    주석은 리소스를 리밸런스 구성 템플릿으로 지정합니다.
  2. 구성을 적용하여 템플릿을 생성합니다.
  3. Kafka 리소스에 자동 재조정 구성을 추가합니다.

    이 예에서는 브로커 추가 및 제거에 동일한 템플릿이 사용됩니다.

    자동 재조정에 템플릿 사양을 사용하는 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      annotations:
        strimzi.io/node-pools: enabled
        strimzi.io/kraft: enabled
    spec:
      kafka:
        # ...
      cruiseControl:
        autoRebalance:
          - mode: add-brokers
            template:
              name: my-add-remove-brokers-rebalancing-template
          - mode: remove-brokers
            template:
              name: my-add-remove-brokers-rebalancing-template

    기본 Cruise Control 구성을 재조정하려면 템플릿 구성을 생략합니다. 이 예에서는 브로커를 추가할 때 기본 구성이 사용됩니다.

    자동 재조정에 기본 사양 사용 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      annotations:
        strimzi.io/node-pools: enabled
        strimzi.io/kraft: enabled
    spec:
      kafka:
        # ...
      cruiseControl:
        autoRebalance:
          - mode: add-brokers
          - mode: remove-brokers
            template:
              name: my-add-remove-brokers-rebalancing-template

  4. Kafka 구성에 변경 사항을 적용합니다.
    Cluster Operator가 클러스터를 업데이트할 때까지 기다립니다.
  5. 클러스터의 브로커 수를 나타내는 spec.replicas 속성을 조정하여 클러스터를 확장합니다.

    다음 예제에서는 세 개의 브로커를 사용하는 클러스터의 노드 풀 구성을 보여줍니다(replicas: 3).

    노드 풀 구성의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaNodePool
    metadata:
      name: pool-b
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      replicas: 3
      roles:
        - broker
      storage:
        type: jbod
        volumes:
          - id: 0
            type: persistent-claim
            size: 100Gi
            deleteClaim: false
      # ...

    노드 풀을 통한 스케일링에 대한 자세한 내용은 다음을 참조하십시오.

  6. 리밸런스 상태를 확인합니다.
    상태는 Kafka 리소스에 표시됩니다.

    자동 재조정의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      annotations:
        strimzi.io/node-pools: enabled
        strimzi.io/kraft: enabled
    spec:
      kafka:
        # ...
      cruiseControl:
        autoRebalance:
          - mode: add-brokers
            template:
              name: my-add-remove-brokers-rebalancing-template
          - mode: remove-brokers
            template:
              name: my-add-remove-brokers-rebalancing-template
    status:
      autoRebalance:
        lastTransitionTime: <timestamp_for_last_rebalance_state>
        state: RebalanceOnScaleDown 
    1
    
        modes: 
    2
    
          - mode: add-brokers
            brokers: <broker_ids>
          - mode: remove-brokers
            brokers: <broker_ids>

    1
    브로커를 추가할 때 RebalanceOnScaleUp 을 표시하는 리밸런스 상태 및 브로커를 제거할 때 RebalanceOnScaleDown 을 표시합니다. 스케일 다운 작업이 우선합니다. 초기 및 최종 상태(실패 또는 성공)는 Idle 으로 표시됩니다.
    2
    추가 또는 제거할 노드 목록을 사용하여 모드로 그룹화된 작업을 리밸런스합니다.
참고

리밸런스 중에 리밸런스에 사용되는 KafkaRebalance 리소스의 상태를 확인하고 그에 따라 auto-rebalance 상태가 조정됩니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동