이 페이지에서는 Managed Service for Apache Kafka 클러스터를 만들거나 구성할 때 발생하는 문제를 해결하는 방법을 보여줍니다.
Kafka 클러스터 생성 오류
이 섹션에서는 Kafka 클러스터를 만들 때 발생할 수 있는 오류를 나열합니다.
서비스에 Cloud KMS 키에 액세스할 권한이 없음
Apache Kafka용 관리형 서비스 서비스 에이전트에 Cloud KMS 키에 액세스하는 데 필요한 권한이 없는 경우 다음 문제가 발생합니다.
Service agent service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com
has not been granted the required role cloudkms.cryptoKeyEncrypterDecrypter to
encrypt data using the KMS key.`
이 문제를 해결하려면 Cloud KMS 키에 대한 Cloud KMS CryptoKey 암호화/복호화 역할을 서비스 계정에 부여하세요. 자세한 내용은 CMEK 구성에 필요한 역할을 참고하세요.
서비스에 서브넷을 가져올 권한이 없습니다.
Kafka 클라이언트가 실행되는 VPC 네트워크에서 네트워킹을 구성하는 데 필요한 역할이 Managed Service for Apache Kafka 서비스 에이전트에 누락된 경우 다음 문제가 발생합니다.
Service does not have permission to retrieve subnet. Please grant
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com the
managedkafka.serviceAgent role in the IAM policy of the project
${SUBNET_PROJECT} and ensure the Compute Engine API is enabled in project
${SUBNET_PROJECT}`
이 문제를 해결하려면 서비스 계정에 관리형 Kafka 서비스 에이전트 역할을 부여합니다. 자세한 내용은 프로젝트 간 클러스터 연결을 참고하세요.
네트워킹 오류
이 섹션에는 Kafka 클러스터의 네트워킹을 구성할 때 발생할 수 있는 오류가 나열되어 있습니다.
서비스에서 네트워킹을 설정하지 못함
Managed Service for Apache Kafka에서 Kafka 클러스터를 가상 프라이빗 클라우드 서브넷에 연결할 수 없는 경우 다음과 같은 문제가 발생합니다.
Managed Service for Apache Kafka failed to set up networking in VPC subnet.
이 문제를 해결하려면 다음 단계를 수행하시기 바랍니다.
소비자 VPC 네트워크의 상위 프로젝트에서 Compute Engine 및 Cloud DNS API를 사용 설정합니다.
Managed Service for Apache Kafka 클러스터와 소비자 VPC 네트워크가 서로 다른 프로젝트에 있는 경우 필요한 권한을 구성합니다. 프로젝트 간 클러스터 연결을 참고하세요.
조직 정책 제약 조건으로 인해 서비스가 소비자 VPC 네트워크의 프로젝트에서 필요한 리소스를 만들지 못하는지 확인합니다.
자세한 내용은 Managed Service for Apache Kafka의 네트워킹 구성을 참고하세요.
클라이언트 애플리케이션을 연결할 수 없음
클라이언트 애플리케이션이 클러스터에 연결할 수 없는 경우 다음 문제를 확인하세요.
클라이언트가 올바른 부트스트랩 주소를 사용하고 있는지 확인합니다.
Kafka 클라이언트가 Managed Service for Apache Kafka 클러스터에 액세스하도록 구성된 VPC 네트워크에서 실행되는지 확인합니다.
컴퓨터나 노트북에서 Kafka 클라이언트를 실행하는 경우 Managed Service for Apache Kafka 클러스터에 액세스하는 프록시로 사용할 Compute Engine 인스턴스를 설정할 수 있습니다. 자세한 내용은 클라이언트 머신 설정을 참고하세요.
인증 오류
이 섹션에서는 클라이언트 애플리케이션이 Kafka 클러스터에 인증할 때 발생할 수 있는 오류를 나열합니다.
SASL 인증 실패
다음 문제는 클라이언트가 SASL 인증을 사용하여 클러스터에 연결할 수 없는 경우에 발생합니다.
Exception in thread "main" java.util.concurrent.ExecutionException:
org.apache.kafka.common.errors.SaslAuthenticationException:
Authentication failed: Invalid username or password
이 문제를 해결하려면 다음 원인을 확인하세요.
비밀번호가 형식이 잘못되어 base64로 디코딩될 때 유효한 서비스 계정 키 JSON blob 또는 유효한 액세스 토큰을 나타내지 않습니다.
인증 주체에게 클러스터에 대한
managedkafka.clusters.connect권한이 없습니다.제공된 사용자 이름이 사용자 인증 정보의 주 구성원과 일치하지 않습니다.
클라이언트가 30분마다 자주 연결이 끊어지는 경우 클라이언트가 주기적인 재인증을 지원하지 않기 때문일 수 있습니다.
Managed Service for Apache Kafka 브로커는 클라이언트가 30분마다 다시 인증해야 합니다. 이는 connections.max.reauth.ms 브로커 속성으로 적용됩니다.
Kafka 클라이언트 라이브러리 버전이 2.2.0 이상이고 재인증을 지원하는지 확인합니다.
자세한 내용은 SASL 인증 구성을 참고하세요.
작업 오류
이 섹션에는 Kafka 워크로드가 실행되는 동안 발생할 수 있는 오류가 나열되어 있습니다.
디스크 부족 오류
브로커의 디스크 공간이 부족하면 브로커가 활성 세그먼트를 롤링하거나 새 세그먼트를 쓸 수 없으므로 클라이언트가 메시지를 생성하거나 소비할 수 없습니다. 증상은 다음과 같습니다.
클라이언트 성능이 예기치 않게 저하됩니다. 예를 들어 프로듀서에서 타임아웃 오류가 발생하고 소비자에서 지연이 꾸준히 증가합니다.
브로커 디스크 사용률이 매우 높습니다 (>85%).
동기화된 복제본 (ISR) 수가 복제 요소 아래로 떨어집니다.
클러스터 로그에 다음과 같은 오류가 표시됩니다.
Error processing append operation on partition PARTITION_ID. org.apache.kafka.common.errors.NotEnoughReplicasException: The size of the current ISR Set(10) is insufficient to satisfy the min.isr requirement of 2 for partition PARTITION_ID
디스크 부족 오류를 방지하려면 클러스터 용량과 파티션 복제를 모니터링하세요. 자세한 내용은 Kafka 클러스터의 안정성 모니터링을 참고하세요.
브로커의 디스크 공간이 부족하면 브로커 디스크 크기를 늘립니다. 새 브로커를 추가하려면 클러스터 확장도 고려하세요.
로그 압축과 매우 큰 키 공간을 결합하면 디스크 부족 오류가 발생할 수 있습니다. 로그 압축이 사용 설정되면 Kafka는 각 키의 최신 메시지를 로컬 저장소에 저장하므로 브로커 디스크 사용률이 고유 키 수에 따라 증가합니다.
클라이언트 연결이 일시적으로 끊김
Managed Service for Apache Kafka는 브로커에서 순차적 재시작이 필요한 업데이트를 실행할 수 있습니다. 이 프로세스 중에 개별 브로커에 대한 요청이 실패할 수 있지만 이러한 실패는 일시적입니다. 자세한 내용은 업그레이드 및 패치를 참고하세요.
브로커가 다시 시작되는 동안에는 별도의 조치를 취하지 않아도 됩니다. 하지만 다음과 같은 현상이 나타날 수 있습니다.
파티션 리더와 소비자 그룹 코디네이터가 다른 브로커로 장애 조치되는 동안 처리가 일시중지됩니다.
소비자 그룹의 리밸런싱으로 인해 소비가 일시적으로 중지됩니다.
오프셋을 커밋할 때 일시적인 연결 오류 또는 시간 제한 일반적으로 사용되는 클라이언트 라이브러리는 이러한 오류를 자동으로 처리합니다.
브로커가 다시 시작될 때 복제되지 않은 파티션(
broker/under_replicated_partitions) 수가 일시적으로 급증합니다.Under-MinISR Partitions 측정항목(
broker/under_min_isr_partitions)의 급증. 이 급증은 복제되지 않는 내부 모니터링 주제에 해당하는 것으로 보이며, 각 브로커의 개수가 1인 한 예상되는 동작입니다. 값이 1보다 크면 데이터 또는 메타데이터 주제에 문제가 있을 수 있습니다.
vCPU 수 및 메모리와 같은 특정 클러스터 속성을 수동으로 업데이트하면 서비스에서 순차적 재시작을 실행할 수도 있습니다. Managed Service for Apache Kafka 클러스터 업데이트를 참고하세요.