기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
MSK As Source 문제 해결
이 섹션에서는 MSK As Source를 사용할 때의 일반적인 문제 해결 단계를 설명합니다.
참고
처리, 변환 또는 S3 전송 문제를 해결하려면 이전 섹션을 참조하세요.
호스 생성 실패
MSK As A Source와의 호스가 생성되지 않는 경우 다음 사항을 확인하세요.
-
소스 MSK 클러스터가 활성 상태인지 확인하세요.
-
프라이빗 연결을 사용하는 경우 클러스터의 프라이빗 링크가 켜져 있는지 확인하세요.
프라이빗 연결을 사용하는 경우 클러스터의 프라이빗 액세스가 켜져 있는지 확인하세요.
-
프라이빗 연결을 사용하는 경우 Firehose가 프라이빗 링크를 만들 수 있도록 허용하는 리소스 기반 정책을 추가해야 합니다. 또한 MSK 교차 계정 권한을 참조하세요.
-
소스 구성의 역할에 클러스터 주제의 데이터를 수집할 수 있는 권한이 있는지 확인하세요.
-
VPC 보안 그룹이 클러스터의 부트스트랩 서버가 사용하는 포트로 들어오는 트래픽을 허용하는지 확인하세요.
호스 일시 중단
호스가 일시 중지 상태인 경우 다음 사항을 확인하세요.
-
소스 MSK 클러스터가 활성 상태인지 확인하세요.
-
소스 주제가 존재하는지 확인하세요. 주제가 삭제되었다가 다시 생성된 경우 Firehose 스트림까지 삭제하고 다시 생성해야 합니다.
백프레셔 호스
파티션당 초당 바이트 수 제한을 초과하거나 정상적인 전송 흐름이 느리거나 중단된 경우 DataReadFromSource.Backpressured 값은 1이 됩니다.
-
BytesPerSecondLimit(초당 바이트 수 한도)에 도달한 경우 DataReadFromSource.Bytes 지표를 확인하고 한도 증가를 요청하세요.
-
CloudWatch 로그, 대상 지표, 데이터 변환 지표 및 형식 변환 지표를 확인하여 병목 현상을 파악하세요.
잘못된 데이터 업데이트
데이터 새로 고침이 잘못된 것 같습니다.
-
Firehose는 사용된 레코드의 타임스탬프를 기반으로 데이터 최신성을 계산합니다. 생산자 레코드가 Kafka의 브로커 로그에 유지될 때 이 타임스탬프가 올바르게 기록되도록 하려면, Kafka 주제 타임스탬프 유형 구성을
message.timestamp.type=LogAppendTime로 설정하세요.
MSK 클러스터 연결 문제
다음 절차에서는 MSK 클러스터에 대한 연결 상태를 검증하는 방법을 설명합니다. Amazon MSK 클라이언트에 대한 자세한 내용은 Amazon Managed Streaming for Apache Kafka 개발자 안내서의 Amazon MSK 사용 시작하기를 참조하세요.
MSK 클러스터에 대한 연결 검증 방법
Unix 기반(AL2 권장) Amazon EC2 인스턴스를 생성합니다. 클러스터에서 VPC 연결만 사용하도록 설정된 경우 EC2 인스턴스가 동일한 VPC에서 실행되는지 확인합니다. 인스턴스가 사용 가능하면 SSH로 접속합니다. 자세한 정보는 Amazon EC2 사용 설명서의 이 자습서를 참조하세요.
다음 명령을 실행하여 Yum 패키지로 Java를 설치합니다. 자세한 정보는 Amazon Corretto 8 사용 설명서의 설치 지침을 참조하세요.
sudo yum install java-1.8.0다음 명령을 실행하여 AWS 클라이언트
를 설치합니다. curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install다음 명령을 실행하여 Apache Kafka 클라이언트 2.6* 버전을 다운로드합니다.
wget https://archive.apache.org/dist/kafka/2.6.2/kafka_2.12-2.6.2.tgz tar -xzf kafka_2.12-2.6.2.tgz-
kafka_2.12-2.6.2/libs디렉터리로 이동하고 다음 명령을 실행하여 Amazon MSK IAM JAR 파일을 다운로드합니다.wget https://github.com/aws/aws-msk-iam-auth/releases/download/v1.1.3/aws-msk-iam-auth-1.1.3-all.jar -
Kafka bin 폴더에
client.properties파일을 생성합니다. -
awsRoleArn을 FirehoseSourceConfiguration에서 사용한 역할 ARN으로 바꾸고 인증서 위치를 확인합니다. AWS 클라이언트 사용자가 역할을 수임하도록 허용합니다awsRoleArn. AWS 클라이언트 사용자는 여기에서 지정한 역할을 수임하려고 시도합니다.[ec2-user@ip-xx-xx-xx-xx bin]$ cat client.properties security.protocol=SASL_SSL sasl.mechanism=AWS_MSK_IAM sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required awsRoleArn="<role arn>" awsStsRegion="<region name>"; sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler awsDebugCreds=true ssl.truststore.location=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.amzn2.0.1.x86_64/jre/lib/security/cacerts ssl.truststore.password=changeit 다음 Kafka 명령을 실행해 주제를 나열합니다. 연결이 퍼블릭인 경우, 퍼블릭 엔드포인트 Bootstrap 서버를 사용합니다. 연결이 프라이빗인 경우, 프라이빗 엔드포인트 Bootstrap 서버를 사용합니다.
bin/kafka-topics.sh --list --bootstrap-server<bootstrap servers>--command-config bin/client.properties요청이 성공하면 다음 예제와 비슷하게 출력됩니다.
[ec2-user@ip-xx-xx-xx-xx kafka_2.12-2.6.2]$ bin/kafka-topics.sh --list --bootstrap-server<bootstrap servers>--command-config bin/client.properties [xxxx-xx-xx 05:49:50,877] WARN The configuration 'awsDebugCreds' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'ssl.truststore.location' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'sasl.jaas.config' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'sasl.client.callback.handler.class' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'ssl.truststore.password' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:50:21,629] WARN [AdminClient clientId=adminclient-1] Connection to node... __amazon_msk_canary __consumer_offsets이전 스크립트를 실행하는 데 문제가 있는 경우 제공한 부트스트랩 서버가 지정된 포트에서 연결할 수 있는지 확인합니다. 이 작업을 수행하려면 다음 명령과 같이 telnet 또는 이와 유사한 유틸리티를 다운로드하여 사용할 수 있습니다.
sudo yum install telnet telnet<bootstrap servers><port>요청이 성공하면 다음 출력이 생성됩니다. 즉, 로컬 VPC 내에서 MSK 클러스터에 연결할 수 있고 부트스트랩 서버가 지정된 포트에서 정상적으로 작동한다는 뜻입니다.
Connected to ..요청이 실패하면 VPC 보안 그룹의 인바운드 규칙을 확인합니다. 예를 들어 인바운드 규칙에 다음과 같은 속성을 사용할 수 있습니다.
Type: All traffic Port: Port used by the bootstrap server (e.g. 14001) Source: 0.0.0.0/0이전 단계에 표시된 대로 telnet 연결을 다시 시도합니다. 그래도 여전히 연결할 수 없거나 Firehose 연결이 계속 실패하는 경우 AWS Support
에 문의하세요.