本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排解 MSK As A Source
本節會描述使用 MSK As Source 時的常見疑難排解步驟
注意
如需疑難排解處理、轉換或 S3 交付問題,請參閱前面的章節
Hose 建立失敗
如果您的 MSK 做為來源的軟管建立失敗,請檢查下列項目:
-
檢查來源 MSK 叢集是否處於「作用中」狀態。
-
如果您使用的是私有連線,請確定叢集上的私有連結已開啟。
如果您使用的是公有連線,請確定叢集上的公有存取已開啟。
-
如果您正在使用私有連線,則請確認您新增可讓 Firehose 建立私有連結的資源型政策。另請參閱:MSK 跨帳戶許可。
-
確定來源組態中的角色具有從叢集主題擷取資料的許可。
-
確保您的 VPC 安全群組允許叢集引導伺服器所使用的連接埠上的傳入流量。
Hose 暫停
如果您的 hose 處於懸掛狀態,請檢查以下內容
-
檢查來源 MSK 叢集是否處於「作用中」狀態。
-
檢查來源主題是否存在。如果刪除並重新建立主題,您也必須刪除並重新建立 Firehose 串流。
Hose 預壓
當超出每個分割區的 BytesPerSecondLimit 或正常傳輸流緩慢或停止時,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將 取代為您在 Firehose 中使用的角色 ARN,SourceConfiguration並驗證憑證位置。允許 AWS 用戶端使用者擔任角色awsRoleArn. AWS client 使用者將嘗試擔任您在此處指定的角色。[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 支援
。