17장. 브로커 추가 또는 제거를 통해 클러스터 스케일링
브로커를 추가하여 Kafka 클러스터를 확장하면 클러스터의 성능과 안정성을 높일 수 있습니다. 브로커를 더 많이 추가하면 사용 가능한 리소스가 증가하여 클러스터가 더 큰 워크로드를 처리하고 더 많은 메시지를 처리할 수 있습니다. 또한 더 많은 복제본 및 백업을 제공하여 내결함성을 향상시킬 수 있습니다. 반대로 활용도가 낮은 브로커를 제거하면 리소스 소비를 줄이고 효율성을 향상시킬 수 있습니다. 중단이나 데이터 손실을 방지하려면 스케일링을 신중하게 수행해야 합니다. 클러스터의 모든 브로커에 파티션을 재배포하면 각 브로커의 리소스 사용량이 줄어들어 클러스터의 전체 처리량이 증가할 수 있습니다.
Kafka 주제의 처리량을 높이기 위해 해당 항목의 파티션 수를 늘릴 수 있습니다. 이를 통해 클러스터의 여러 브로커 간에 주제의 부하를 공유할 수 있습니다. 그러나 모든 브로커가 특정 리소스(예: I/O)에 의해 제한되는 경우 파티션을 더 추가하면 처리량이 증가되지 않습니다. 이 경우 클러스터에 브로커를 더 추가해야 합니다.
Kafka.spec.kafka.replicas 구성을 조정하면 복제본 역할을 하는 클러스터의 브로커 수에 영향을 미칩니다. 주제의 실제 복제 요소는 default.replication.factor 및 min.insync.replicas 의 설정과 사용 가능한 브로커 수에 따라 결정됩니다. 예를 들어 3의 복제 요소는 주제의 각 파티션이 세 브로커에 복제되어 브로커가 실패할 경우 내결함성을 보장합니다.
복제본 구성 예
Kafka 구성을 통해 브로커를 추가할 때 노드 ID는 0(영)에서 시작되고 Cluster Operator는 가장 낮은 ID를 새 노드에 할당합니다. 브로커 제거 프로세스는 클러스터에서 가장 높은 ID가 있는 브로커 Pod에서 시작됩니다.
노드 풀 기능의 프리뷰를 사용하여 클러스터에서 노드를 관리하는 경우 KafkaNodePool.spec.replicas 구성을 조정하여 노드 풀의 노드 수를 변경합니다. 또한 노드 풀을 사용하여 기존 클러스터를 확장할 때 확장 작업에 노드 ID를 할당 할 수 있습니다.
브로커를 추가하거나 제거하면 Kafka가 자동으로 파티션을 다시 할당하지 않습니다. 가장 좋은 방법은 Cruise Control을 사용하는 것입니다. 클러스터를 확장하거나 축소할 때 Cruise Control의 add-brokers 및 remove-brokers 모드를 사용할 수 있습니다.
-
Kafka 클러스터를 확장한 후 기존 브로커에서 새로 추가된 브로커로 파티션 복제본을 이동한 후
add-brokers모드를 사용합니다. -
Kafka 클러스터를 축소하기 전에 제거하려는 브로커에서 파티션 복제본을 이동하기 전에
remove-brokers모드를 사용합니다.
17.1. 스케일 다운 작업에서 검사 건너뛰기 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 AMQ Streams는 Kafka 클러스터에서 스케일 다운 작업을 시작하기 전에 브로커에 파티션 복제본이 없는지 확인하기 위해 검사를 수행합니다. 복제본이 발견되면 잠재적인 데이터 손실을 방지하기 위해 클러스터 작업이 차단됩니다. 클러스터 작업을 다시 시작하려면 브로커에 복제본을 남겨 두지 않아야 다시 축소할 수 있습니다.
그러나 이 차단 메커니즘을 우회하려는 시나리오가 있을 수 있습니다. 예를 들어 새 주제가 브로커의 복제본을 계속 생성하기 때문에 사용 중인 클러스터에 검사를 비활성화해야 할 수 있습니다. 이 상황은 브로커가 거의 비어 있어도 클러스터 작업을 무기한 차단할 수 있습니다. 이러한 방식으로 차단 메커니즘을 재정의하면 영향을 받습니다. 브로커에 축소되는 항목이 있으면 Kafka 클러스터에 대한 조정 실패가 발생할 수 있습니다.
Kafka 클러스터의 Kafka 리소스에 주석을 달아 차단 메커니즘을 바이패스할 수 있습니다. strimzi.io/skip-broker-scaledown-check 주석을 true 로 설정하여 리소스에 주석을 답니다.
스케일 다운 작업에서 검사를 건너뛸 주석 추가
oc annotate Kafka my-kafka-cluster strimzi.io/skip-broker-scaledown-check="true"
oc annotate Kafka my-kafka-cluster strimzi.io/skip-broker-scaledown-check="true"
이 주석은 AMQ Streams가 스케일 다운 검사를 건너뛰도록 지시합니다. my-kafka-cluster 를 특정 Kafka 리소스의 이름으로 교체합니다.
축소 작업 검사를 복원하려면 주석을 제거합니다.
스케일 다운 작업에서 검사를 건너뛸 주석 제거
oc annotate Kafka my-kafka-cluster strimzi.io/skip-broker-scaledown-check-
oc annotate Kafka my-kafka-cluster strimzi.io/skip-broker-scaledown-check-