0

AWS MSK でクラスターを作成し、トピックを作成しました。クラスターと同じ VPC 内の EC2 インスタンスからイベントを生成および消費できます。具体的な使用例は、Java を使用してイベントを消費することです。KafkaClient AWS SDK にはイベント消費のためのメソッドがないため、ここでは使用できません。IP は VPC の内部にあるため、 KafkaConsumerの作成中に、Properties() でブートストラップ サーバーを直接渡すことはできません。

MSK に接続する方法についてこの AWSガイドを確認しましたが、この正確なユース ケースにどの方法が適しているかはわかりません。私はいくつかの方法を試しました -

  1. アドバタイズされた.listeners をインスタンスのパブリック IP に設定します。しかし、KafkaConsumer を作成した後、トピックをリストしているときにこのエラーが発生し続けました- Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

  2. セキュリティ グループのインバウンド ルールで関連するポート (私の場合は PLAINTEXT の場合は 9092) を開きます。Connection refusedこれを行った後、ポート 9092 に telnet しようとすると、まだエラーが発生していました。

私の質問は、上記のいずれかが機能するかどうかです。これを解決できる何かが他にありません。または、上記の方法は機能しませんか?

ここでの最終目標は、Java を使用して MSK クラスターからのイベントを消費することです。

4

1 に答える 1

1

MSK エンドポイント IP をパブリックにする必要があるため、認証プロセスを改善し、インターネット ゲートウェイと適切に構成されたルート テーブルを持つ VPC のパブリック サブネットに MSK クラスターを配置する必要があります: https://docs.aws.amazon .com/vpc/latest/userguide/VPC_Route_Tables.html

これをパブリックであっても自分の VPC に接続すると、CLI を使用して MSK クラスターからブートストラップ サーバーを取得し、EC2 ブートストラップのユーザー データを使用してこれを環境変数として挿入できます: https://docs.aws.amazon .com/AWSEC2/latest/UserGuide/user-data.html

CLI を使用して MSK クラスターからブートストラップ サーバーを取得するコマンド:

aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn ClusterArn

MSK クラスターの構成に関するその他のドキュメント: https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html

于 2021-10-12T21:45:27.000 に答える