31.6. Kafka 클러스터 업그레이드
Kafka 클러스터를 지원되는 최신 Kafka 버전 및 KRaft 메타데이터 버전으로 업그레이드합니다.
Kafka 업그레이드 지원에 대한 최신 정보는 Apache Kafka 설명서를 참조하십시오.
사전 요구 사항
- Cluster Operator가 실행 중입니다.
-
Kafka 클러스터를 업그레이드하기 전에 Kafka 리소스의 속성에 새
Kafka버전에서 지원되지 않는 구성 옵션이 포함되어 있지 않은지 확인합니다.
프로세스
Kafka 클러스터 구성을 업데이트합니다.
oc edit kafka <kafka_configuration_file>구성된 경우 현재
spec.kafka.metadataVersion이 업그레이드 중인 Kafka 버전에서 지원하는 버전으로 설정되어 있는지 확인합니다.예를 들어 Kafka 버전 3.9.0에서 4.0.0으로 업그레이드하는 경우 현재 버전은 3.9-IV0입니다.
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.9-IV0 version: 3.9.0 # ...metadataVersion이 구성되지 않은 경우 다음 단계에서 Kafka 버전으로 업데이트한 후 Apache Kafka의 Streams를 현재 기본값으로 자동으로 업데이트합니다.참고metadataVersion의 값은 부동 소수점 숫자로 해석되지 않도록 문자열이어야 합니다.Kafka.spec.kafka.version을 변경하여 새 Kafka 버전을 지정하고metadataVersion을 현재 Kafka 버전의 기본값으로 둡니다.참고kafka.version을 변경하면 클러스터의 모든 브로커가 새 브로커 바이너리를 사용하도록 업그레이드됩니다. 롤링 업그레이드 중에 일부 브로커는 이전 바이너리를 실행하지만 다른 브로커는 이미 새 바이너리로 전환했습니다. 현재 값을 변경하지 않고metadataVersion을 유지하면 모든 브로커와 컨트롤러가 호환되는 상태를 유지하고 업그레이드 전체에서 계속 통신할 수 있습니다.참고Kafka의 마이크로 릴리스만 포함하는 업그레이드의 경우 (예: X.x.0에서 X.x.1로)
Kafka.spec.kafka.version을 수정하지 마십시오. 기존 버전 설정을 유지합니다. Cluster Operator는kafka.version필드에 이전 마이너 버전을 계속 표시하더라도 마이크로 릴리스에 업데이트된 Kafka 바이너리를 자동으로 적용합니다.예를 들어 Kafka 3.9.0에서 4.0.0으로 업그레이드하는 경우 다음을 수행합니다.
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.9-IV01 version: 4.0.02 # ...Kafka 클러스터의 이미지가 Kafka 사용자 정의 리소스의
Kafka.spec.kafka.에 정의된 경우 새imageKafka버전이 있는 컨테이너 이미지를 가리키도록 이미지를 업데이트합니다.Kafka 버전 및 이미지 매핑을 참조하십시오.
편집기를 저장하고 종료한 다음 롤링 업데이트가 Kafka 노드를 업그레이드할 때까지 기다립니다.
Pod 상태 전환을 확인하여 롤링 업데이트의 진행 상황을 확인합니다.
oc get pods my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'롤링 업데이트를 통해 각 pod가 새 Kafka 버전에 브로커 바이너리를 사용하고 있는지 확인합니다.
필요한 경우 Kafka Connect 및 MirrorMaker의
버전속성을 Kafka의 새 버전으로 설정합니다.-
Kafka Connect의 경우
KafkaConnect.spec.version을 업데이트합니다. MirrorMaker 2의 경우
KafkaMirrorMaker2.spec.version을 업데이트합니다.참고수동으로 빌드된 사용자 지정 이미지를 사용하는 경우 해당 이미지를 다시 빌드하여 Apache Kafka 기본 이미지의 최신 스트림으로 최신 이미지인지 확인해야 합니다. 예를 들어 기본 Kafka Connect 이미지에서 컨테이너 이미지를 생성한 경우 최신 기본 이미지 및 빌드 구성을 가리키도록 Dockerfile을 업데이트합니다.
-
Kafka Connect의 경우
구성된 경우 새
metadataVersion버전을 사용하도록 Kafka 리소스를 업데이트합니다. 그렇지 않으면 9단계로 이동합니다.예를 들어 Kafka 4.0.0으로 업그레이드하는 경우 다음을 수행합니다.
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 4.0-IV3 version: 4.0.0 # ...주의다운그레이딩이 가능하지 않을 수 있으므로
metadataVersion을 변경할 때는 주의하십시오. 새 Kafka 버전의metadataVersion이 다운그레이드하려는 Kafka 버전보다 크면 Kafka를 다운그레이드할 수 없습니다. 그러나 이전 버전을 유지 관리할 때 지원 및 호환성에 미치는 잠재적 영향을 이해하십시오.Cluster Operator가 클러스터를 업데이트할 때까지 기다립니다.
Kafka리소스 상태에서 업그레이드가 성공적으로 완료되었는지 확인합니다.
클라이언트 애플리케이션 업그레이드
모든 Kafka 클라이언트 애플리케이션이 업그레이드 프로세스의 일부로 새 버전의 클라이언트 바이너리를 사용하도록 업데이트되었는지 확인하고 Kafka 업그레이드와의 호환성을 확인합니다. 필요한 경우 클라이언트 애플리케이션을 관리하는 팀과 조정합니다.
클라이언트가 최신 메시지 형식을 사용하는지 확인하려면 kafka.server:type=BrokerTopicMetrics,name={Produce|Fetch}MessageConversionsPerSec 메트릭을 사용합니다. 메트릭은 최신 메시지 형식을 사용하는 경우 0 을 표시합니다.