Amazon MSK 클러스터에 연결할 때 문제를 해결하려면 어떻게 해야 하나요?

11분 분량
0

Amazon Managed Streaming for Apache Kafka(Amazon MSK) 클러스터에 연결하려고 할 때 문제가 발생합니다.

해결 방법


Amazon MSK 클러스터에 연결하려고 할 때 다음과 같은 유형의 오류가 발생할 수 있습니다.

  • 클러스터의 인증 유형과 관련이 없는 오류
  • TLS 클라이언트 인증과 관련된 오류
  • AWS ID 및 액세스 관리(IAM) 클라이언트 인증과 관련된 오류
  • 단순 인증 및 보안 계층/솔티드 챌린지 응답 메커니즘(SASL/SCARM) 클라이언트 인증과 관련된 오류

특정 인증 유형과 관련이 없는 오류

Amazon MSK 클러스터에 연결하려고 하면 클러스터에 활성화된 인증 유형에 관계없이 다음 오류 중 하나가 발생할 수 있습니다.

java.lang.OutOfMemoryError: 자바 힙 스페이스

모든 유형의 인증을 사용하여 클러스터 작업에 대한 명령을 실행할 때 클라이언트 속성 파일을 언급하지 않으면 이 오류가 발생합니다.

예를 들어, IAM 인증 포트를 사용하여 다음 명령을 실행하면 OutofMemoryError가 발생합니다.

./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

이 오류를 해결하려면 client.properties 파일에 인증 유형에 따라 적절한 속성을 포함해야 합니다.

org.apache.kafka.common.errors.TimeoutException: 노드 할당 대기 시간이 초과되었습니다. 호출: createTopics

이 오류는 일반적으로 클라이언트 애플리케이션과 Amazon MSK 클러스터 간에 네트워크 구성 오류가 있을 때 발생합니다.

이 문제를 해결하려면 다음 연결 테스트를 수행하여 네트워크 연결을 확인합니다.

클라이언트 시스템에서 명령을 실행합니다.

telnet bootstrap-broker port-number

반드시 다음 작업을 수행하세요.

  • bootstrap-broker를 Amazon MSK 클러스터의 브로커 주소 중 하나로 교체합니다.
  • 클러스터에 설정된 인증에 따라 port-number를 적절한 포트 값으로 바꿉니다.

클라이언트 시스템이 브로커에 액세스할 수 있으면 연결 문제가 없는 것입니다. 그렇지 않은 경우 네트워크 연결, 특히 보안 그룹의 인바운드 및 아웃바운드 규칙을 검토하세요.

org.apache.kafka.common.errors.TopicAuthorizationException: 항목에 액세스할 권한이 없음: [test_topic]

이 오류는 IAM 인증을 사용하고 액세스 정책에서 WriteData 및 ReadData와 같은 항목 작업을 차단할 때 발생합니다.

권한 범위 및 서비스 제어 정책은 또한 사용자가 필요한 권한 없이 클러스터에 연결하려는 시도를 차단한다는 점에 유의하세요.

비IAM 인증을 사용하는 경우 작업을 차단하는 항목 수준 액세스 제어 목록(ACL)을 추가했는지 확인하세요.

다음 명령을 실행하여 항목에 적용되는 ACL을 나열합니다.

bin/kafka-acls.sh --bootstrap-server $BOOTSTRAP:PORT --command-config adminclient-configs.conf –-list –-topic testtopic

노드 -1(b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9098)에 대한 연결이 다음과 같은 이유로 인증에 실패함: 서버에서 클라이언트 SASL 메커니즘 'SCRAM-SHA-512'가 활성화되지 않았으며, 활성화된 메커니즘은 [AWS_MSK_IAM]입니다.

-또는-

노드 -1(b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9096)에 대한 연결이 다음과 같은 이유로 인증에 실패함: 서버에서 클라이언트 SASL 메커니즘 'AWS_MSK_IAM'이 활성화되지 않았으며, 활성화된 메커니즘은 [SCRAM-SHA-512]입니다.

클라이언트 속성 파일의 SASL 메커니즘 또는 프로토콜과 일치하지 않는 포트 번호를 사용할 때 이러한 오류가 발생합니다. 클러스터 작업을 실행하기 위해 명령에서 사용한 속성 파일입니다.

  • SASL/SCRAM을 사용하도록 설정된 클러스터의 브로커와 통신하려면 다음 포트를 사용하세요. AWS 내에서 액세스하는 경우 9096, 퍼블릭 액세스의 경우 9196입니다.
  • IAM 액세스 제어를 사용하도록 설정된 클러스터의 브로커와 통신하려면 다음 포트를 사용하세요. AWS 내에서 액세스하는 경우 9098, 퍼블릭 액세스의 경우 9198입니다.

다음 상태일 때 연결 대기 시간이 초과됨: CONNECTING

클라이언트가 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 포트의 클라이언트 보안 그룹에서 들어오는 인바운드 트래픽을 허용하는지 확인하세요.

60000ms 후 메타데이터에 항목 'TopicName'이 존재하지 않거나 노드 -<node-id> (<broker-host>/<broker-ip>:<port>) 연결을 설정할 수 없습니다. 브로커를 이용할 수 없을 수도 있습니다(org.apache.kafka.clients.NetworkClient).

다음 조건 중 하나에서 이 오류가 발생할 수 있습니다.

  • 생산자 또는 소비자가 브로커 호스트 및 포트에 연결할 수 없습니다.
  • 브로커 문자열이 유효하지 않습니다.

클라이언트 또는 브로커의 연결이 처음에 정상적으로 작동했는데도 이 오류가 발생하면 브로커가 다운되었을 수 있습니다.

데이터 생성을 위한 브로커 문자열을 사용하여 Virtual Private Cloud(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.

브로커 문자열을 사용하여 데이터를 소비하기 위해 VPC 외부에서 클러스터에 액세스하려고 하면 다음 오류가 발생합니다.

./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)

이러한 오류를 해결하려면 다음과 같이 하세요.

  • 올바른 브로커 문자열과 포트를 사용해야 합니다.
  • 브로커가 다운되어 오류가 발생한 경우 Amazon CloudWatch 지표 ActiveControllerCount를 확인하여 해당 기간 동안 컨트롤러가 활성 상태였는지 확인하세요. 이 지표의 값은 반드시 1이어야 합니다. 다른 값은 클러스터의 브로커 중 하나를 사용할 수 없음을 나타낼 수 있습니다. 또한 ZookeeperSessionState 지표를 확인하여 브로커가 Apache ZooKeeper 노드와 지속적으로 통신하고 있는지 확인하세요. 브로커가 실패한 이유를 알아보려면 KafkaDataLogsDiskUsed 지표를 보고 브로커의 스토리지 공간이 부족했는지확인하세요. Amazon MSK 지표 및 예상 값에 대한 자세한 내용은 CloudWatch를 사용한 모니터링에 대한 Amazon MSK 지표를 참조하세요.
  • 오류가 네트워크 구성으로 인한 것이 아닌지 확인하세요. Amazon MSK 리소스는 VPC 내에서 프로비저닝됩니다. 따라서 기본적으로 클라이언트는 Amazon MSK 클러스터에 연결하거나 동일한 VPC의 사설 네트워크를 통해 클러스터에서 생산 및 소비해야 합니다. VPC 외부에서 클러스터에 액세스하는 경우 이러한 오류가 발생할 수 있습니다. 클라이언트가 클러스터와 동일한 VPC에 있을 때 발생하는 오류 해결에 대한 자세한 내용은 AWS 내에서 클러스터에 액세스할 수 없음: 네트워킹 문제를 참조하세요. VPC 외부에서 클러스터에 액세스하는 방법에 대한 자세한 내용은 VPC 외부에서 Amazon MSK 클러스터에 연결하려면 어떻게 해야 하나요?를 참조하세요.

TLS 클라이언트 인증과 관련된 오류

TLS 클라이언트 인증이 활성화된 클러스터에 연결하려고 할 때 다음 오류가 발생할 수 있습니다. 이러한 오류는 SSL 관련 구성 문제로 인해 발생할 수 있습니다.

부트스트랩 브로커 <broker-host>:9094(id: -<broker-id> rack: null) 연결 끊김

생산자 또는 소비자가 SSL 구성을 통과하지 않고 TLS 포트 9094를 통해 TLS 암호화된 클러스터에 연결하려고 할 때 이 오류가 발생할 수 있습니다.

생산자가 클러스터에 연결하려고 할 때 다음 오류가 발생할 수 있습니다.

./kafka-console-producer.sh --broker-list b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 --topic test
[2020-04-10 18:57:58,019] WARN [Producer clientId=console-producer] Bootstrap broker b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -2 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 18:57:58,342] WARN [Producer clientId=console-producer] Bootstrap broker b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -2 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 18:57:58,666] WARN [Producer clientId=console-producer] Bootstrap broker b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

소비자가 클러스터에 연결하려고 할 때 다음 오류가 발생할 수 있습니다.

./kafka-console-consumer.sh --bootstrap-server b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 --topic test
[2020-04-10 19:09:03,277] WARN [Consumer clientId=consumer-console-consumer-79102-1, groupId=console-consumer-79102] Bootstrap broker b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 19:09:03,596] WARN [Consumer clientId=consumer-console-consumer-79102-1, groupId=console-consumer-79102] Bootstrap broker b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 19:09:03,918] WARN [Consumer clientId=consumer-console-consumer-79102-1, groupId=console-consumer-79102] Bootstrap broker b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -2 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

이 오류를 해결하려면 SSL 구성을 설정하세요. 자세한 내용은 암호화를 시작하려면 어떻게 해야 하나요?를 참조하세요.

클러스터에 대해 클라이언트 인증이 활성화된 경우 ACM 사설 CA 인증서와 관련된 추가 파라미터를 추가해야 합니다. 자세한 내용은 상호 TLS 인증을 참조하세요.

ERROR 키 스토어의 수정 시간을 가져올 수 없습니다. <configure-path-to-truststore>

-또는-

키스토어를 로드하지 못했습니다.

truststore 구성에 문제가 있는 경우 생산자와 소비자를 위해 truststore 파일을 로드할 때 이 오류가 발생할 수 있습니다. 로그에서 다음과 비슷한 정보를 볼 수 있습니다.

./kafka-console-consumer --bootstrap-server b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 --topic test --consumer.config /home/ec2-user/ssl.config
[2020-04-11 10:39:12,194] ERROR Modification time of key store could not be obtained: /home/ec2-ser/certs/kafka.client.truststore.jks (org.apache.kafka.common.security.ssl.SslEngineBuilder)
java.nio.file.NoSuchFileException: /home/ec2-ser/certs/kafka.client.truststore.jks
[2020-04-11 10:39:12,253] ERROR Unknown error when running consumer: (kafka.tools.ConsoleConsumer$)
Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /home/ec2-ser/certs/kafka.client.truststore.jks of type JKS

이 경우 로그는 truststore 파일을 로드하는 데 문제가 있음을 나타냅니다. SSL 구성에서 truststore 파일의 경로가 잘못 구성되었습니다. SSL 구성에서 truststore 파일의 올바른 경로를 제공하여 이 오류를 해결할 수 있습니다.

이 오류는 다음과 같은 상황에서도 발생할 수 있습니다.

  • truststore 또는 키 스토어 파일이 손상되었습니다.
  • truststore 파일의 암호가 올바르지 않습니다.

키: null, value:를 사용하여 항목 테스트에 메시지를 보내는 중 오류가 발생했습니다. 오류가 있는 0바이트: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)

org.apache.kafka.common.errors.SslAuthenticationException: SSL 핸드셰이크 실패

-또는-

노드 -<broker-id> (<broker-hostname>/<broker-hostname>:9094) 연결이 다음과 같은 이유로 인증에 실패함: SSL 핸드셰이크 실패(org.apache.kafka.clients.NetworkClient)

생산자의 키 스토어 구성에 문제가 있어 인증이 실패할 경우 다음 오류가 발생할 수 있습니다.

./kafka-console-producer --broker-list b-2.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-1.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-4.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094 --topic example --producer.config/home/ec2-user/ssl.config
[2020-04-11 11:13:19,286] ERROR [Producer clientId=console-producer] Connection to node -3 (b-4.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com/172.31.6.195:9094) failed authentication due to: SSL handshake failed (org.apache.kafka.clients.NetworkClient)

소비자의 키 스토어 구성에 문제가 있어 인증 실패를 초래하는 경우 다음 오류가 발생할 수 있습니다.

./kafka-console-consumer --bootstrap-server b-2.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-1.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-4.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094 --topic example --consumer.config/home/ec2-user/ssl.config
[2020-04-11 11:14:46,958] ERROR [Consumer clientId=consumer-1, groupId=console-consumer-46876] Connection to node -1 (b-2.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com/172.31.15.140:9094) failed authentication due to: SSL handshake failed (org.apache.kafka.clients.NetworkClient)
[2020-04-11 11:14:46,961] ERROR Error processing message, terminating consumer process: (kafka.tools.ConsoleConsumer$)
org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake failed

이 오류를 해결하려면 키 스토어 관련 구성을 올바르게 구성해야 합니다.

java.io.io 예외: 키스토어 암호가 잘못되었습니다.

키 스토어 또는 truststore의 암호가 잘못된 경우 이 오류가 발생할 수 있습니다.

이 오류를 해결하려면 다음과 같이 하세요.

다음 명령을 실행하여 키 스토어 또는 truststore 암호가 올바른지 확인합니다.

keytool -list -keystore kafka.client.keystore.jks
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
schema-reg, Jan 15, 2020, PrivateKeyEntry,
Certificate fingerprint (SHA1): 4A:F3:2C:6A:5D:50:87:3A:37:6C:94:5E:05:22:5A:1A:D5:8B:95:ED

키 스토어 또는 truststore의 암호가 잘못된 경우 다음 오류가 표시될 수 있습니다.

keytool -list -keystore kafka.client.keystore.jks
Enter keystore password:
keytool error: java.io.IOException: keystore password was incorrect

-v 플래그를 추가하여 위 명령의 자세한 출력을 볼 수 있습니다.

keytool -list -v -keystore kafka.client.keystore.jks

이러한 명령을 사용하여 키 스토어가 손상되었는지 확인할 수도 있습니다.

생산자 및 소비자의 SSL 구성에서 별칭과 연결된 비밀 키가 잘못 구성된 경우에도 이 오류가 발생할 수 있습니다. 이 근본 원인을 확인하려면 다음 명령을 실행합니다.

keytool -keypasswd -alias schema-reg -keystore kafka.client.keystore.jks
Enter keystore password:
Enter key password for <schema-reg>
New key password for <schema-reg>:
Re-enter new key password for <schema-reg>:

별칭 암호에 대한 암호(예: schema-reg)가 올바른 경우 명령은 해당 암호 키 이외의 암호를 새로 입력하라는 메시지를 표시합니다. 그렇지 않으면 명령이 실패하고 다음 메시지가 표시됩니다.

keytool -keypasswd -alias schema-reg -keystore kafka.client.keystore.jks
Enter keystore password:
Enter key password for <schema-reg>
keytool error: java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.

다음 명령을 실행하여 특정 별칭이 키 스토어의 일부인지 확인할 수도 있습니다.

keytool -list -keystore kafka.client.keystore.jks -alias schema-reg
Enter keystore password:
schema-reg, Jan 15, 2020, PrivateKeyEntry,
Certificate fingerprint (SHA1): 4A:F3:2C:6A:5D:50:87:3A:37:6C:94:5E:05:22:5A:1A:D5:8B:95:ED

IAM 클라이언트 인증과 관련된 오류

노드 -1(b-1.testcluster.abc123.c2.kafka.us-east-1.amazonaws.com/10.11.111.123:9098)에 대한 연결이 다음과 같은 이유로 인증에 실패함: 액세스 거부됨

-또는-

org.apache.kafka.common.errors.SaslAuthenticationException: 액세스 거부됨

Amazon MSK 클러스터에 액세스하는 IAM 역할이 IAM 액세스 제어에 설명된 대로 클러스터 작업을 허용하는지 확인하세요.

액세스 정책 외에도 권한 범위 및 서비스 제어 정책은 클러스터에 연결을 시도하지만 필요한 권한을 전달하지 못하는 사용자를 차단합니다.

org.apache.kafka.common.errors.SaslAuthenticationException: 연결 수가 너무 많음

-또는-

org.apache.kafka.common.errors.SaslAuthenticationException: 내부 오류

클러스터가 IAM 액세스 제어를 사용하는 kafka.t3.small 브로커 유형에서 실행되고 연결 제한을 초과하면 이러한 오류가 발생합니다. kafka.t3.small 인스턴스 유형은 브로커당 초당 하나의 TCP 연결만 허용합니다. 이 연결 제한을 초과하면 생성 테스트가 실패하고 잘못된 보안 인증 정보를 나타내는 이 오류가 발생합니다. 자세한 내용은 Amazon MSK가 IAM과 함께 작동하는 방식을 참조하세요.

이 오류를 해결하려면 다음 방법을 시도해 보세요.

SASL/SCRAM 클라이언트 인증과 관련된 오류

노드 -1(b-3.testcluster.abc123.c2.kafka.us-east-1.amazonaws.com/10.11.111.123:9096)에 대한 연결이 다음과 같은 이유로 인증에 실패함: SASL 메커니즘 SCRAM-SHA-512의 잘못된 보안 인증 정보로 인해 인증하는 동안 인증에 실패했습니다.

  • AWS Secrets Manager에 사용자 보안 인증 정보를 저장하고 이 보안 인증 정보를 Amazon MSK 클러스터와 연결했는지 확인하세요.
  • 9096 포트를 통해 클러스터에 액세스할 때는 AWS Secrets Manager에서 사용하는 사용자 및 암호가 클라이언트 속성에 사용되는 사용자 및 암호와 동일한지 확인하세요.
  • get-secret-value API를 사용하여 보안 정보를 검색하려는 경우 AWS Secrets Manager에서 사용되는 암호에 (/])와 같은 특수 문자가 포함되어 있지 않은지 확인하세요.

org.apache.kafka.common.errors.ClusterAuthorizationException: Request(processor=11, connectionId=INTERNAL_IP-INTERNAL_IP-0, session=Session(User:ANONYMOUS,/INTERNAL_IP), listenerName=ListenerName(REPLICATION_SECURE), securityProtocol=SSL, buffer=null) 요청 권한이 없습니다.

다음 두 조건에 모두 해당하는 경우 이 오류가 발생합니다.

  • Amazon MSK 클러스터에 SASL/SCRAM 인증을 활성화했습니다.
  • 클러스터의 ACL에서 resourceType=CLUSTER 및 operation=CLUSTER_ACTION을 설정했습니다.

이 설정은 내부 Apache Kafka 복제를 방해하기 때문에 Amazon MSK 클러스터는 이 설정을 지원하지 않습니다. 이 설정을 사용하면 브로커 간 통신에서 브로커의 ID가 ANONYMOUS로 표시됩니다. SASL/SCRAM 인증을 사용하는 동안 클러스터에서 이러한 ACL을 지원해야 하는 경우 ANONYMOUS 사용자에게 모든 작업에 대한 권한을 부여해야 합니다. 이렇게 하면 브로커 간의 복제 제한이 방지됩니다.

다음 명령을 실행하여 ANONYMOUS 사용자에게 이 권한을 부여합니다.

./kafka-acls.sh --authorizer-properties
zookeeper.connect=example-ZookeeperConnectString --add --allow-principal
User:ANONYMOUS --operation ALL --cluster

관련 정보

아마존 MSK 클러스터에 연결

Amazon MSK 클러스터를 SASL/SCRAM 인증과 함께 사용할 때 발생하는 일반적인 문제를 해결하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠