14.6. 최적화 제안 개요
최적화 제안은 파티션 워크로드가 브로커 사이에 더욱 균등하게 분산되는 Kafka 클러스터를 생성할 수 있는 제안된 변경 사항에 대한 요약입니다.
각 최적화 제안은 브로커 리소스에 대한 구성된 용량 제한에 따라 이를 생성하는 데 사용된 최적화 목표 집합을 기반으로 합니다.
모든 최적화 제안은 제안된 리밸런스(Rebalance)의 영향에 대한 추정치 입니다. 제안을 승인하거나 거부할 수 있습니다. 최적화 제안을 먼저 생성하지 않고 클러스터 리밸런스를 승인할 수 없습니다.
다음 끝점 중 하나를 사용하여 최적화 제안을 실행할 수 있습니다.
-
/rebalance
-
/add_broker
-
/remove_broker
14.6.1. 끝점 재조정
최적화 제안을 생성하기 위해 POST 요청을 보낼 때 재조정 끝점을 지정합니다.
/rebalance
-
/rebalance
엔드포인트는 클러스터의 모든 브로커 간에 복제본을 이동하여 전체 재조정을 실행합니다. /add_broker
-
add_broker
엔드포인트는 하나 이상의 브로커를 추가하여 Kafka 클러스터를 확장한 후 사용됩니다. 일반적으로 Kafka 클러스터를 확장한 후 새 브로커는 새로 생성된 주제의 파티션만 호스팅하는 데 사용됩니다. 새 항목이 생성되지 않은 경우 새로 추가된 브로커는 사용되지 않으며 기존 브로커는 동일한 부하에 남아 있습니다. 클러스터에 브로커를 추가한 직후add_broker
엔드포인트를 사용하면 재조정 작업이 기존 브로커에서 새로 추가된 브로커로 복제본을 이동합니다. 새 브로커를 POST요청에서 브로커
목록으로 지정합니다. /remove_broker
-
/remove_broker
끝점은 하나 이상의 브로커를 제거하여 Kafka 클러스터를 축소하기 전에 사용됩니다. Kafka 클러스터를 축소하면 복제본을 호스팅하더라도 브로커가 종료됩니다. 이로 인해 복제되지 않은 파티션이 발생할 수 있으며 일부 파티션의 최소 ISR (in-sync replicas)이 발생할 수 있습니다. 이러한 잠재적인 문제를 방지하기 위해/remove_broker
엔드포인트는 제거할 브로커에서 복제본을 이동합니다. 이러한 브로커가 더 이상 복제본을 호스팅하지 않으면 축소 작업을 안전하게 실행할 수 있습니다. POST 요청에서 제거할브로커를 브로커
목록으로 지정합니다.
일반적으로 /rebalance
끝점을 사용하여 브로커에 부하를 분산하여 Kafka 클러스터를 재조정합니다. 클러스터를 확장 또는 축소하고 그에 따라 복제본을 재조정하려면 /add-broker
엔드포인트 및 /remove_broker
엔드포인트를 사용합니다.
리밸런스를 실행하는 절차는 실제로 세 가지 끝점에서 동일합니다. 유일한 차이점은 요청에 추가되거나 제거될 나열 브로커와 있다는 것입니다.
14.6.2. 최적화 제안 승인 또는 거부
최적화 제안 요약은 제안된 변경 범위를 보여줍니다. 요약은 Cruise Control API를 통해 HTTP 요청에 대한 응답으로 반환됩니다.
/rebalance
엔드포인트에 POST 요청을 수행하면 최적화 제안 요약이 응답으로 반환됩니다.
최적화 제안 요약 반환
curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance'
요약을 사용하여 최적화 제안을 승인하거나 거부할지 여부를 결정합니다.
- 최적화 제안 승인
-
/rebalance
엔드포인트에 POST 요청을 하고dryrun
매개변수를false
(기본값:true
)로 설정하여 최적화 제안을 승인합니다. Cruise Control은 Kafka 클러스터에 제안을 적용하고 클러스터 재조정 작업을 시작합니다. - 최적화 제안 거부
-
최적화 제안을 승인하지 않도록 선택하는 경우 최적화 목표를 변경하거나 성능 튜닝 옵션을 업데이트한 다음 다른 제안을 생성할 수 있습니다.
dryrun
매개변수 없이 요청을 재전송하여 새로운 최적화 제안을 생성할 수 있습니다.
최적화 제안을 사용하여 리밸런스에 필요한 변동을 평가합니다. 예를 들어 요약은 브로커 간 및 intra-broker 동작에 대해 설명합니다. inter-broker를 재조정하면 별도의 브로커 간에 데이터가 이동합니다. Intra-broker 재조정은 JBOD 스토리지 구성을 사용할 때 동일한 브로커의 디스크 간에 데이터를 이동합니다. 이러한 정보는 향후 조치를 취하지 않고 제안을 승인하지 않더라도 유용할 수 있습니다.
재조정할 때 Kafka 클러스터에 대한 추가 부하로 인해 최적화 제안을 거부하거나 승인을 지연할 수 있습니다.
다음 예에서 제안은 별도의 브로커 간의 데이터 재조정을 제안합니다. 리밸런스에는 브로커 전반에서 총 12MB의 데이터, 즉 55개의 파티션 복제본의 이동이 포함됩니다. 파티션 복제본 간 이동은 성능에 큰 영향을 미치지만 총 데이터 양은 크지 않습니다. 총 데이터가 훨씬 크면 제안을 거부하거나 리밸런스를 승인하여 Kafka 클러스터 성능에 미치는 영향을 제한할 수 있습니다.
성능 튜닝 옵션을 재조정하면 데이터 이동의 영향을 줄일 수 있습니다. 리밸런스 기간을 확장할 수 있는 경우 리밸런스를 더 작은 일괄 처리로 나눌 수 있습니다. 한 번에 데이터 이동이 줄어드는 경우 클러스터의 부하가 줄어듭니다.
최적화 제안 요약 예
Optimization has 55 inter-broker replica (12 MB) moves, 0 intra-broker replica (0 MB) moves and 24 leadership moves with a cluster model of 5 recent windows and 100.000% of the partitions covered. Excluded Topics: []. Excluded Brokers For Leadership: []. Excluded Brokers For Replica Move: []. Counts: 3 brokers 343 replicas 7 topics. On-demand Balancedness Score Before (78.012) After (82.912). Provision Status: RIGHT_SIZED.
이 제안은 24 개의 파티션 리더를 다른 브로커로 이동할 것입니다. 이렇게 하려면 성능에 낮은 영향을 미치는 ZooKeeper 구성을 변경해야 합니다.
균형 점수는 최적화 제안이 승인되기 전과 후에 Kafka 클러스터의 전반적인 균형을 측정한 것입니다. 균형 점수는 최적화 목표를 기반으로 합니다. 모든 목표를 충족하는 경우 점수는 100입니다. 충족되지 않는 각 목표에 대해 점수가 줄어듭니다. balancedness 점수를 비교하여 Kafka 클러스터가 리밸런스를 따르는 것보다 균형이 낮은지 확인합니다.
provision 상태는 현재 클러스터 구성이 최적화 목표를 지원하는지 여부를 나타냅니다. 프로비저닝 상태를 확인하여 브로커를 추가하거나 제거해야 하는지 확인합니다.
상태 | 설명 |
---|---|
RIGHT_SIZED | 클러스터에는 최적화 목표를 충족하기 위해 적절한 수의 브로커가 있습니다. |
UNDER_PROVISIONED | 클러스터는 프로비저닝되지 않으며 최적화 목표를 충족하기 위해 더 많은 브로커가 필요합니다. |
OVER_PROVISIONED | 클러스터는 과도하게 프로비저닝되어 있으며 최적화 목표를 충족하기 위해 더 적은 브로커가 필요합니다. |
UNDECIDED | 상태는 관련이 없거나 아직 결정되지 않았습니다. |
14.6.3. 최적화 제안 요약 속성
다음 표에서는 최적화 제안에 포함된 속성을 설명합니다.
속성 | 설명 |
---|---|
|
리밸런스 작업 중 성능에 미치는 영향 (Relatively high).
Y 리밸런스 작업 중 성능에 미치는 영향: 변수. MB 수가 많을수록 클러스터 재조정에 걸리는 시간이 길어집니다. |
|
N: 클러스터 브로커 디스크 간에 전송할 총 파티션 복제본 수입니다.
리밸런스 작업 중 성능에 미치는 영향 (Relatively high, but less than
Y
리밸런스 작업 중 성능에 미치는 영향: 변수. 수가 클수록 클러스터 재조정에 걸리는 시간이 길어집니다. 동일한 브로커에서 디스크 간에 많은 양의 데이터를 이동하는 것은 별도의 브로커보다 영향이 적습니다(브로버 |
| 최적화 제안서에서 파티션 복제/리더의 변동 계산에서 제외된 주제 수입니다. 다음 방법 중 하나로 주제를 제외할 수 있습니다.
정규식과 일치하는 항목은 응답에 나열되며 클러스터 리밸런스에서 제외됩니다. |
|
N: 리더가 다른 복제본으로 전환될 파티션 수입니다. 리밸런스 작업 중 성능에 미치는 영향 (Relatively low). |
|
N: 최적화 제안이 기반이 되는 지표 창 수입니다. |
|
N |
| Kafka 클러스터의 전반적인 균형을 측정합니다.
크루즈 컨트롤은 우선 순위 (
|
14.6.4. 캐시된 최적화 제안
크루즈 컨트롤은 구성된 기본 최적화 목표에 따라 캐시된 최적화 제안을 유지합니다. 워크로드 모델에서 생성되는 캐시된 최적화 제안은 Kafka 클러스터의 현재 상태를 반영하도록 15분마다 업데이트됩니다.
가장 최근 캐시된 최적화 제안은 다음과 같은 목표 설정이 사용될 때 반환됩니다.
- 기본 최적화 목표
- 현재 캐시된 제안에 의해 충족될 수 있는 사용자 제공 최적화 목표
캐시된 최적화 제안 새로 고침 간격을 변경하려면 cruisecontrol.properties
파일에서 proposal.expiration.ms
설정을 편집합니다. Cruise Control 서버의 로드가 증가해도 빠르게 변경되는 클러스터의 경우 더 짧은 간격을 고려해 보십시오.
추가 리소스