14.5. 최적화 목표 개요
최적화 목표는 Kafka 클러스터의 워크로드 재배포 및 리소스 사용률에 대한 제약입니다. Kafka 클러스터를 재조정하기 위해 Cruise Control은 최적화 목표를 사용하여 최적화 제안을 생성합니다.
14.5.1. 우선 순위의 목표 순서
Red Hat Enterprise Linux의 AMQ Streams는 Cruise Control 프로젝트에서 개발한 모든 최적화 목표를 지원합니다. 지원되는 목표는 기본 우선 순위 순으로 다음과 같습니다.
- ack-awareness
- 일련의 주제를 위한 브로커당 최소 리더 복제본 수
- 복제본 용량
- 용량: 디스크 용량, 네트워크 인바운드 용량, 네트워크 아웃바운드 용량
- CPU 용량
- 복제본 배포
- 잠재적인 네트워크 출력
- 리소스 배포: 디스크 사용률 배포, 네트워크 인바운드 사용률 배포, 네트워크 아웃바운드 사용률 배포
- Leader bytes-in rate distribution
- 주제 복제본 배포
- CPU 사용량 배포
- 리더 복제본 배포
- 기본 리더 선택
- Kafka Assigner 디스크 사용 배포
- Intra-broker 디스크 용량
- Intra-broker 디스크 사용
각 최적화 목표에 대한 자세한 내용은 Cruise Controlanchor의 목표를 참조하십시오.
14.5.2. Cruise Control 속성 파일의 목표 구성
cruise-control/config/
디렉토리의 cruisecontrol.properties
파일에서 최적화 목표를 구성합니다. Cruise Control에는 충족해야 하는 하드 최적화 목표 및 주요, 기본, 사용자 제공 최적화 목표를 위한 구성이 있습니다.
다음 구성에서 다음 최적화 목표 유형을 지정할 수 있습니다.
-
주요 목표 ECDHE-
cruisecontrol.properties
파일 -
하드 목표 ECDHE-
cruisecontrol.properties
파일 -
기본 목표 ECDHE-
cruisecontrol.properties
파일 - 사용자 제공 목표 ECDHE-ECDHEruntime 매개변수
선택적으로 사용자 제공 최적화 목표는 런타임 시 /rebalance
엔드포인트에 대한 요청의 매개변수로 설정됩니다.
최적화 목표는 브로커 리소스에 대한 모든 용량 제한 의 영향을 받습니다.
14.5.3. 하드 및 소프트 최적화 목표
어려운 목표는 최적화 제안에 충족해야 하는 목표입니다. 어려운 목표로 구성되지 않은 목표는 소프트 목표로 알려져 있습니다. 소프트 목표를 최선의 목표로 생각할 수 있습니다: 최적화 제안서에 충족할 필요는 없지만 최적화 계산에 포함됩니다.
크루즈 컨트롤은 모든 어려운 목표를 충족하고 가능한 한 많은 소프트 목표를 충족하는 최적화 제안을 계산합니다 (우선 순위에서). 모든 어려운 목표를 충족 하지 않는 최적화 제안은 Analyzer에 의해 거부되며 사용자에게 전송되지 않습니다.
예를 들어, 주제의 복제본을 클러스터 전체에 균등하게 배포하는 소프트 목표를 가질 수 있습니다(대상 복제본 배포 목표). 크루즈 컨트롤은 설정된 모든 하드 목표를 충족할 수 있도록 하는 경우 이 목표를 무시합니다.
Cruise Control에서 다음과 같은 주요 최적화 목표는 하드 목표로 사전 설정됩니다.
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal
하드 목표를 변경하려면 cruisecontrol.properties
파일의 hard.goals
속성을 편집하고 정규화된 도메인 이름을 사용하여 목표를 지정합니다.
어려운 목표 수를 늘리면 Cruise Control이 유효한 최적화 제안을 계산하고 생성할 가능성이 줄어듭니다.
14.5.4. 주요 최적화 목표
최적화 목표는 모든 사용자가 사용할 수 있습니다. 주요 최적화 목표에 나열되지 않은 목표는 Cruise Control 운영에서 사용할 수 없습니다.
다음과 같은 주요 최적화 목표는 우선 순위 순으로 cruisecontrol.properties
파일의 goal 속성에 사전 설정됩니다.
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal
복잡성을 줄이기 위해 하나 이상의 목표를 완전히 제외해야 하는 경우를 제외하고 사전 설정된 주요 최적화 목표를 변경하지 않는 것이 좋습니다. 기본 최적화 목표의 우선 순위 순서는 기본 최적화 목표를 위한 구성에서 수정할 수 있습니다.
사전 설정된 주요 최적화 목표를 수정하려면 목표 속성의 목표 목록을 우선 순위 순으로 지정합니다.
cruisecontrol.properties
파일에 표시된 대로 정규화된 도메인 이름을 사용합니다.
하나 이상의 기본 목표를 지정하거나 Cruise Control이 충돌할 것입니다.
사전 설정된 기본 최적화 목표를 변경하는 경우 구성된 hard.goals
가 구성한 주요 최적화 목표의 하위 집합인지 확인해야 합니다. 그렇지 않으면 최적화 제안을 생성할 때 오류가 발생합니다.
14.5.5. 기본 최적화 목표
크루즈 컨트롤은 기본 최적화 목표 목록을 사용하여 캐시된 최적화 제안을 생성합니다. 자세한 내용은 14.6절. “최적화 제안 개요”의 내용을 참조하십시오.
사용자 제공 최적화 목표를 설정하여 런타임에 기본 최적화 목표를 재정의할 수 있습니다.
다음 기본 최적화 목표는 우선 순위 순으로 cruisecontrol.properties
파일의 default.goals
속성에 사전 설정됩니다.
RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal
기본 목표를 하나 이상 지정해야 합니다. 그렇지 않으면 Cruise Control이 충돌합니다.
기본 최적화 목표를 수정하려면 default.goals
속성의 목표 목록을 우선 순위 순으로 지정합니다. 기본 목표는 주요 최적화 목표의 하위 집합이어야 하며 정규화된 도메인 이름을 사용해야 합니다.
14.5.6. 사용자 제공 최적화 목표
사용자 제공 최적화 목표는 특정 최적화 제안에 대해 구성된 기본 목표를 좁힙니다. 필요에 따라 HTTP 요청의 매개변수로 /rebalance
끝점에 대한 매개변수를 설정할 수 있습니다. 자세한 내용은 14.9절. “최적화 제안 생성”의 내용을 참조하십시오.
사용자 제공 최적화 목표는 다양한 시나리오에 대한 최적화 제안을 생성할 수 있습니다. 예를 들어 디스크 용량 또는 디스크 사용률을 고려하지 않고 Kafka 클러스터에서 리더 복제본 배포를 최적화할 수 있습니다. 따라서 리더 복제본 배포를 위한 단일 목표를 포함하는 /rebalance
엔드포인트에 요청을 보냅니다.
사용자 제공 최적화 목표는 다음과 같습니다.
- 구성된 모든 하드 목표를 포함하거나 오류가 발생합니다.
- 주요 최적화 목표의서브 세트 표시
최적화 제안서에서 구성된 하드 목표를 무시하려면 skip_hard_goals_check=true
매개변수를 요청에 추가합니다.