14.5. 최적화 목표 개요
최적화 목표는 Kafka 클러스터의 워크로드 재배포 및 리소스 사용률에 대한 제약입니다. Kafka 클러스터를 재조정하기 위해 Cruise Control은 최적화 목표를 사용하여 최적화 제안을 생성합니다.
14.5.1. 우선 순위의 목표 순서
Red Hat Enterprise Linux의 AMQ Streams는 Cruise Control 프로젝트에서 개발한 모든 최적화 목표를 지원합니다. 지원되는 목표는 기본 우선순위 내림차순으로 다음과 같습니다.
- Rack-awareness
- 주제 집합의 브로커당 최소 리더 복제본 수
- 복제본 용량
- 용량: 디스크 용량, 네트워크 인바운드 용량, 네트워크 아웃 바운드 용량
- CPU 용량
- 복제본 배포
- 잠재적인 네트워크 출력
- 리소스 배포: 디스크 사용률 배포, 네트워크 인바운드 사용률 배포, 네트워크 아웃 바운드 사용 배포
- Leader bytes-in rate distribution
- 주제 복제본 배포
- CPU 사용량 배포
- 리더 복제본 배포
- 선호하는 리더 선택
- Kafka Assigner 디스크 사용량 배포
- Intra-broker 디스크 용량
- Intra-broker 디스크 사용량
각 최적화 목표에 대한 자세한 내용은 Cruise Control Wiki 의 목표를 참조하십시오.
14.5.2. Cruise Control 속성 파일의 설정 목표
cruisecontrol.properties
파일에서 cruise-control/config/
디렉터리에 최적화 목표를 구성합니다. 크루즈 컨트롤에는 주요, 기본값 및 사용자 제공 최적화 목표를 충족해야 하는 하드 최적화 목표에 대한 구성이 있습니다.
다음 구성에서 다음 최적화 목표를 지정할 수 있습니다.
-
주요 목적 Cryostat-
cruisecontrol.properties
파일 -
하드 목적 Cryostat-
cruisecontrol.properties
파일 -
기본 목적 Cryostat-
cruisecontrol.properties
파일 - 사용자 제공 목표 Cryostat - Cryostatruntime 매개변수
선택적으로 사용자 제공 최적화 목표는 런타임 시 /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
파일의 목적
속성에 내림차순으로 사전 설정됩니다.
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. 기본 최적화 목표
cruise Control은 기본 최적화 목표 목록을 사용하여 캐시된 최적화 제안을 생성합니다. 자세한 내용은 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. 사용자 제공 최적화 목표
사용자 제공 최적화 목표는 특정 최적화 제안에 대해 구성된 기본 목표를 좁힙니다. 필요에 따라 /rebalance
엔드포인트에 대한 HTTP 요청의 매개변수로 설정할 수 있습니다. 자세한 내용은 14.9절. “최적화 제안 생성”의 내용을 참조하십시오.
사용자 제공 최적화 목표는 다양한 시나리오에 대한 최적화 제안을 생성할 수 있습니다. 예를 들어 디스크 용량 또는 디스크 사용률을 고려하지 않고 Kafka 클러스터에서 리더 복제본 배포를 최적화할 수 있습니다. 따라서 리더 복제본 배포를 위한 단일 목표를 포함하는 /rebalance
엔드포인트에 요청을 보냅니다.
사용자 제공 최적화 목표는 다음과 같아야 합니다.
- 구성된 모든 하드 목표를 포함하거나 오류가 발생합니다.
- 주요 최적화 목표의하위 집합이 될 수 있습니다.
최적화 제안에서 구성된 하드 목표를 무시하려면 skip_hard_goals_check=true
매개변수를 요청에 추가합니다.