問題タブ [aws-msk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - Kafka: Understanding Broker failure
I have a Kafka cluster with:
- 2 brokers
b-1
andb-2
. - 2 topics with both:
PartitionCount:1 ReplicationFactor:2 min.insync.replicas=1
Here is what happened:
Within the code, I got this error when my producer performed a poll
around that time:
Broker b-2
logs have this:
My understanding here is that (1) b-2
went down i.e. unable to connect to Zookeeper (2) Messages were produced to b-1
successfully during this time. (3) b-1
was also trying to forward messages to b-2
during this downtime due to the replication factor set to 2 (4) All these forwarded messages (ProduceRequests) got timed-out after 600s
My question:
- Is my understanding correct and how I can prevent this from happening again?
- If I had 3 brokers here, would
b-1
have tried to connect tob-3
right away rather than waiting forb-2
? Is that a good workaround? (Assuming topic replication factor = 2 everywhere)
java - KafkaConsumer Java SDK を使用して AWS MSK クラスターからイベント フォームを使用するにはどうすればよいですか?
AWS MSK でクラスターを作成し、トピックを作成しました。クラスターと同じ VPC 内の EC2 インスタンスからイベントを生成および消費できます。具体的な使用例は、Java を使用してイベントを消費することです。KafkaClient AWS SDK にはイベント消費のためのメソッドがないため、ここでは使用できません。IP は VPC の内部にあるため、 KafkaConsumerの作成中に、Properties() でブートストラップ サーバーを直接渡すことはできません。
MSK に接続する方法についてこの AWSガイドを確認しましたが、この正確なユース ケースにどの方法が適しているかはわかりません。私はいくつかの方法を試しました -
アドバタイズされた.listeners をインスタンスのパブリック IP に設定します。しかし、KafkaConsumer を作成した後、トピックをリストしているときにこのエラーが発生し続けました-
Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
セキュリティ グループのインバウンド ルールで関連するポート (私の場合は PLAINTEXT の場合は 9092) を開きます。
Connection refused
これを行った後、ポート 9092 に telnet しようとすると、まだエラーが発生していました。
私の質問は、上記のいずれかが機能するかどうかです。これを解決できる何かが他にありません。または、上記の方法は機能しませんか?
ここでの最終目標は、Java を使用して MSK クラスターからのイベントを消費することです。