AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Amazon MSK 클러스터의 연결 오류를 어떻게 해결합니까?
Amazon Managed Streaming for Apache Kafka(Amazon MSK) 클러스터에 연결하려고 할 때 오류가 발생합니다.
해결 방법
수신된 오류에 대해 다음 문제 해결 단계를 따르십시오.
‘java.lang.OutOfMemoryError: Java heap space’
클라이언트 속성 파일 없이 클러스터 작업에 대한 명령을 실행하면 위의 오류가 발생할 수 있습니다. 이 문제를 해결하려면 클라이언트 속성 파일에 인증 유형에 따른 속성을 포함하십시오.
AWS Identity and Access Management(IAM) 인증 포트만 사용하는 명령 예시:
./kafka-topics.sh --create --bootstrap-server $BOOTSTRAP:9098 --replication-factor 3 --partitions 1 --topic TestTopic
IAM 인증 포트와 클라이언트 속성 파일을 사용하는 명령 예시:
./kafka-topics.sh --create --bootstrap-server $BOOTSTRAP:9098 --command-config client.properties --replication-factor 3 --partitions 1 --topic TestTopic
‘org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: createTopics’
클라이언트 애플리케이션과 Amazon MSK 클러스터 간 네트워크 구성 오류가 있는 경우 위의 오류가 발행할 수 있습니다.
이 문제를 해결하려면 다음 telnet 명령을 실행하여 클라이언트 시스템에서의 연결을 테스트하십시오.
telnet bootstrap-broker port-number
참고: bootstrap-broker를 Amazon MSK 클러스터의 브로커 주소 중 하나로 바꾸십시오. port-number를 클러스터에서 활성화된 인증에 따른 포트 값으로 바꾸십시오.
클라이언트 시스템이 브로커에 액세스할 수 있으면 연결 문제가 없는 것입니다. 클라이언트 시스템이 브로커에 액세스할 수 없으면 네트워크 연결 구성 설정을 검토하십시오. 보안 그룹의 인바운드 및 아웃바운드 규칙을 확인하십시오.
‘org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [test_topic]’
IAM 인증을 사용하고 액세스 정책이 WriteData 및 ReadData와 같은 주제 작업을 차단하는 경우 위의 오류가 발생할 수 있습니다.
참고: 권한 경계 및 서비스 제어 정책(SCP)도 사용자가 필수 권한 부여 없이 클러스터에 연결하려 시도하면 이를 차단합니다.
IAM이 아닌 인증을 사용하는 경우 작업을 차단하는 주제 수준 액세스 제어 목록(ACL)을 추가했는지 확인하십시오.
주제에 적용된 ACL을 목록으로 나열하려면 다음 명령을 실행합니다.
bin/kafka-acls.sh --bootstrap-server $BOOTSTRAP:PORT --command-config adminclient-configs.conf --list --topic testtopic
‘ZooKeeperClientTimeoutException’
클라이언트가 Apache ZooKeeper 문자열을 통해 클러스터에 연결하려 시도하고 연결이 설정되지 않은 경우 위의 오류가 발생할 수 있습니다. Apache ZooKeeper 문자열이 잘못된 경우에도 이 오류가 발생할 수 있습니다.
잘못된 Apache Zookeeper 문자열의 예:
./kafka-topics.sh --zookeeper z-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:2181,z-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:2181,z-3.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:2181 --list[2020-04-10 23:58:47,963] WARN Client session timed out, have not heard from server in 10756ms for sessionid 0x0 (org.apache.zookeeper.ClientCnxn)
출력 예시:
[2020-04-10 23:58:58,581] WARN Client session timed out, have not heard from server in 10508ms for sessionid 0x0 (org.apache.zookeeper.ClientCnxn)[2020-04-10 23:59:08,689] WARN Client session timed out, have not heard from server in 10004ms for sessionid 0x0 (org.apache.zookeeper.ClientCnxn) Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:259) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:253) at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:255) at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:113) at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1858) at kafka.admin.TopicCommand$ZookeeperTopicService$.apply(TopicCommand.scala:321) at kafka.admin.TopicCommand$.main(TopicCommand.scala:54) at kafka.admin.TopicCommand.main(TopicCommand.scala)
이 문제를 해결하려면 다음 작업을 수행하십시오.
- 올바른 Apache ZooKeeper 문자열을 사용하는지 확인합니다.
- Amazon MSK 클러스터의 보안 그룹이 Apache ZooKeeper 포트의 클라이언트 보안 그룹에서 들어오는 인바운드 트래픽을 허용하는지 확인합니다.
- Apache ZooKeeper 노드가 MSK 브로커 또는 클라이언트와 다른 보안 그룹과 연결된 경우, 구성 요구 사항을 확인합니다. 클라이언트의 보안 그룹은 필수 ZooKeeper 포트의 ZooKeeper 노드와 연결된 보안 그룹에 대한 연결을 허용해야 합니다. ZooKeeper 네트워크 인터페이스 보안 그룹 인바운드 규칙이 클라이언트로부터의 연결을 허용해야 합니다.
‘Broker may not be unavailable’
<topicName><node-id><broker-host><broker-ip><port>‘Topic not present in metadata after 60000 ms. or Connection to node - (/:) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)’
다음 중 하나에 해당하는 경우 위 오류가 발생할 수 있습니다.
- 생산자나 소비자가 브로커 호스트 및 포트에 연결할 수 없습니다.
- 브로커 문자열이 잘못되었습니다.
처음에 클라이언트 또는 브로커 연결이 작동했는데도 이 오류가 발생하면 브로커를 사용하지 못할 수 있습니다.
브로커 문자열을 사용해 가상 프라이빗 클라우드(VPC) 밖에서 클러스터에 액세스하려고 해도 이 오류가 발생할 수 있습니다.
생산자 브로커 문자열의 예:
./kafka-console-producer.sh --broker-list b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092 --topic test
출력 예시:
[2020-04-10 23:51:57,668] ERROR Error when sending message to topic test with key: null, value: 1 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)org.apache.kafka.common.errors.TimeoutException: Topic test not present in metadata after 60000 ms.
소비자 브로커 문자열의 예:
./kafka-console-consumer.sh --bootstrap-server b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092 --topic test
출력 예시:
[2020-04-11 00:03:21,157] WARN [Consumer clientId=consumer-console-consumer-88994-1, groupId=console-consumer-88994] Connection to node -1 (b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com/172.31.6.19:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)[2020-04-11 00:04:36,818] WARN [Consumer clientId=consumer-console-consumer-88994-1, groupId=console-consumer-88994] Connection to node -2 (b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com/172.31.44.252:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient) [2020-04-11 00:05:53,228] WARN [Consumer clientId=consumer-console-consumer-88994-1, groupId=console-consumer-88994] Connection to node -1 (b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com/172.31.6.19:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
이 문제를 해결하려면 다음 작업을 수행하십시오.
- 올바른 브로커 문자열과 포트를 사용하는지 확인합니다.
- ZooKeeper 관리형 클러스터에서 브로커를 사용할 수 없는 경우, ActiveControllerCount Amazon CloudWatch 지표를 확인하십시오. 그런 다음, 컨트롤러가 해당 기간에 활성인지 확인합니다. 지표 값이 1이 아닌 경우 클러스터의 브로커 중 하나가 사용 불가 상태일 수 있습니다. 1분 간의 합계 통계를 사용하여 지표를 보십시오.
- ZooKeeperSessionState 지표를 확인하여 브로커가 Apache ZooKeeper 노드와 지속적으로 통신하고 있는지 확인합니다.
- 브로커가 실패한 이유를 알아보려면 KafkaDataLogsDiskUsed 지표를 확인하여 브로커의 스토리지 공간이 부족한지 확인합니다. 자세한 내용은 CloudWatch를 사용한 표준 브로커 모니터링에 대한 Amazon MSK 지표를 참조하십시오.
- 네트워크 구성으로 인해 문제가 발생했는지 확인합니다. Amazon MSK 리소스는 VPC 내에서 프로비저닝됩니다. 동일한 VPC의 프라이빗 네트워크를 통해 Amazon MSK 클러스터 또는 생산자에 연결해야 합니다. 자세한 내용은 AWS 내에서 클러스터에 액세스할 수 없음: 네트워킹 문제를 참조하십시오. Amazon MSK FAQ의 **AWS 네트워크 내부에 있지만 클러스터의 Amazon VPC 외부에 있는 Amazon MSK 클러스터에 연결하려면 어떻게 해야 합니까?**도 참조하십시오.
‘Topic not present in metadata’
‘org.apache.kafka.common.errors.TimeoutException: Topic test not present in metadata after 60000 ms’
쓰기 작업을 시도한 주제가 Amazon MSK에 존재하지 않는 경우 위의 오류가 발생할 수 있습니다. Amazon MSK 클러스터에 해당 주제가 있는지 확인하십시오. 클라이언트 구성에서 올바른 브로커 문자열과 포트를 사용했는지 확인하십시오. 주제가 존재하지 않는 경우 Amazon MSK에서 주제를 만들거나 클러스터 구성에서 auto.create.enable을 true로 설정하십시오.
참고: auto.create.enable이 true로 설정되어 있으면 주제가 자동으로 만들어집니다.
주제는 존재하지만 파티션이 존재하지 않아도 이 오류가 발생할 수 있습니다. 예를 들어 파티션이 [0] 하나인데 생산자가 파티션 [1]로 보내려 하는 경우입니다.
Amazon MSK 클러스터의 보안 그룹이 필수 포트의 클라이언트 애플리케이션 보안 그룹으로부터의 인바운드 트래픽을 허용해야 합니다.
시스템이 이전에는 작동했는데 갑자기 오류가 발생하는 경우, 다음 작업을 수행하여 Amazon MSK 브로커의 상태를 확인하십시오.
- ZooKeeper 관리형 클러스터의 경우, ActiveControllerCount 지표를 확인합니다. 값이 1이어야 합니다. 지표의 값이 1이 아니면 클러스터의 브로커 중 하나를 사용할 수 없습니다. 1분 간의 합계 통계를 사용하여 지표를 보십시오.
- ZooKeeperSessionState 지표를 확인하여 브로커가 ZooKeeper 노드와 지속적으로 통신하고 있는지 확인합니다.
- KafkaDataLogsDiskUsed 지표를 모니터링하여 브로커의 스토리지 공간이 부족하지 않았는지 확인합니다.
올바른 구성 없이 VPC 외부에서 클러스터 액세스를 시도했는지 확인합니다. 기본적으로 Amazon MSK 리소스는 VPC 내에서 프로비저닝됩니다. 동일한 VPC의 프라이빗 네트워크를 통해 연결해야 합니다.
VPC 외부에서 클러스터에 액세스하려 시도하는 경우, AWS 서비스에 필요한 네트워킹 구성을 설정해야 합니다. 예를 들어 AWS Client VPN 또는 AWS Direct Connect를 설정하십시오.
관련 정보
SASL/SCRAM 인증을 활성화한 상태로 Amazon MSK 클러스터를 사용할 때 인증 및 권한 문제를 해결하려면 어떻게 해야 합니까?
- 언어
- 한국어

This article was reviewed and updated on 2026-03-06.
관련 콘텐츠
질문됨 3년 전