2

複製ファクタ2を持つ3つのノード(nodes0、node1、node2)Kafkaクラスタ(broker0、broker1、broker2)と、Zookeeper(Kooka tarでパッケージ化された別のノード(ノード4)。__consumer_offsetsのキリングノードは、消費者にメッセージ消費をもたらしません

私はzookeperを開始して残りのノードの後に​​ブローカ0を起動しました。それは__consumer_offsetsを読んでいるブローカー0ログで見られ、それらは、ブローカー以下は0に保存されているようでは、サンプルログです:

カフカバージョン:またkafka_2.10-0.10.2.0

2017-06-30 10:50:47,381] INFO [GroupCoordinator 0]: Loading group metadata for console-consumer-85124 with generation 2 (kafka.coordinator.GroupCoordinator) 
    [2017-06-30 10:50:47,382] INFO [Group Metadata Manager on Broker 0]: Finished loading offsets from __consumer_offsets-41 in 23 milliseconds. (kafka.coordinator.GroupMetadataManager) 
    [2017-06-30 10:50:47,382] INFO [Group Metadata Manager on Broker 0]: Loading offsets and group metadata from __consumer_offsets-44 (kafka.coordinator.GroupMetadataManager) 
    [2017-06-30 10:50:47,387] INFO [Group Metadata Manager on Broker 0]: Finished loading offsets from __consumer_offsets-44 in 5 milliseconds. (kafka.coordinator.GroupMetadataManager) 
    [2017-06-30 10:50:47,387] INFO [Group Metadata Manager on Broker 0]: Loading offsets and group metadata from __consumer_offsets-47 (kafka.coordinator.GroupMetadataManager) 
    [2017-06-30 10:50:47,398] INFO [Group Metadata Manager on Broker 0]: Finished loading offsets from __consumer_offsets-47 in 11 milliseconds. (kafka.coordinator.GroupMetadataManager) 
    [2017-06-30 10:50:47,398] INFO [Group Metadata Manager on Broker 0]: Loading offsets and group metadata from __consumer_offsets-1 (kafka.coordinator.GroupMetadataManager) 

同じブローカー0のログにGroupCoordinatorメッセージが表示されます。

[2017-06-30 14:35:22,874] INFO [GroupCoordinator 0]: Preparing to restabilize group console-consumer-34472 with old generation 1 (kafka.coordinator.GroupCoordinator) 
    [2017-06-30 14:35:22,877] INFO [GroupCoordinator 0]: Group console-consumer-34472 with generation 2 is now empty (kafka.coordinator.GroupCoordinator) 
    [2017-06-30 14:35:25,946] INFO [GroupCoordinator 0]: Preparing to restabilize group console-consumer-6612 with old generation 1 (kafka.coordinator.GroupCoordinator) 
    [2017-06-30 14:35:25,946] INFO [GroupCoordinator 0]: Group console-consumer-6612 with generation 2 is now empty (kafka.coordinator.GroupCoordinator) 
    [2017-06-30 14:35:38,326] INFO [GroupCoordinator 0]: Preparing to restabilize group console-consumer-30165 with old generation 1 (kafka.coordinator.GroupCoordinator) 
    [2017-06-30 14:35:38,326] INFO [GroupCoordinator 0]: Group console-consumer-30165 with generation 2 is now empty (kafka.coordinator.GroupCoordinator) 
    [2017-06-30 14:43:15,656] INFO [Group Metadata Manager on Broker 0]: Removed 0 expired offsets in 3 milliseconds. (kafka.coordinator.GroupMetadataManager) 
    [2017-06-30 14:53:15,653] INFO [Group Metadata Manager on Broker 0]: Removed 0 expired offsets in 0 milliseconds. (kafka.coordinator.GroupMetadataManager) 

kafka-console-consumer.shとkafka-console-producer.shをを使用して、クラスタのためのフォールトトレランスをテストしている間、私は見ブローカー1またはブローカー2を殺す上で、消費者ができることまだプロデューサーからの新しいメッセージを受け取ります。リバランスは正しく起こっています。

ただし、ブローカー0を削除すると、任意の数のコンシューマで新規または古いメッセージが消費されなくなります。 以下は、ブローカ0が殺される前後のトピックの状態です。

Topic:test-topic PartitionCount:3 ReplicationFactor:2 Configs: 
    Topic: test-topic Partition: 0 Leader: 2 Replicas: 2,0 Isr: 0,2 
    Topic: test-topic Partition: 1 Leader: 0 Replicas: 0,1 Isr: 0,1 
    Topic: test-topic Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1,2 

Topic:test-topic PartitionCount:3 ReplicationFactor:2 Configs: 
    Topic: test-topic Partition: 0 Leader: 2 Replicas: 2,0 Isr: 2 
    Topic: test-topic Partition: 1 Leader: 1 Replicas: 0,1 Isr: 1 
    Topic: test-topic Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1,2 

後に次の前にブローカー0が殺された後、消費者のログで見られるWARNのメッセージがある

[2017-06-30 14:19:17,155] WARN Auto-commit of offsets {test-topic-2=OffsetAndMetadata{offset=4, metadata=''}, test-topic-0=OffsetAndMetadata{offset=5, metadata=''}, test-topic-1=OffsetAndMetadata{offset=4, metadata=''}} failed for group console-consumer-34472: Offset commit failed with a retriable exception. You should retry committing offsets. (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator) 
[2017-06-30 14:19:10,542] WARN Auto-commit of offsets {test-topic-2=OffsetAndMetadata{offset=4, metadata=''}, test-topic-0=OffsetAndMetadata{offset=5, metadata=''}, test-topic-1=OffsetAndMetadata{offset=4, metadata=''}} failed for group console-consumer-30165: Offset commit failed with a retriable exception. You should retry committing offsets. (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator) 

ブローカーのプロパティ。残りのデフォルトプロパティは変更されません。

broker.id=0 
delete.topic.enable=true 

auto.create.topics.enable=false 
listeners=PLAINTEXT://XXX:9092 
advertised.listeners=PLAINTEXT://XXX:9092 
log.dirs=/tmp/kafka-logs-test1 
num.partitions=3 
zookeeper.connect=XXX:2181 

プロデューサーのプロパティ。残りのデフォルトプロパティは変更されません。

bootstrap.servers=XXX,XXX,XXX 
compression.type=snappy 

消費者の特性を。残りのデフォルトプロパティは変更されません。

zookeeper.connect=XXX:2181 
zookeeper.connection.timeout.ms=6000 
group.id=test-consumer-group 

は、私の知る限りは、ノードの保持/演技GroupCoordinatorと__consumer_offsetsが死亡した場合、その後、できない消費者は、パーティションのために選出された新しい指導者にもかかわらず、通常の操作を再開するために、理解しています。

私はpostに投稿された類似のものを参照してください。このポストは、デッドブローカーノードを再起動するよう提案しています。ただし、本番環境でブローカ0が再起動されるまでは、ノードが増えてもメッセージの消費は遅くなります。

Q1:上記の状況をどのように緩和できますか?

Q2:GroupCoordinator、__consumer_offsetsを別のノードに変更する方法はありますか?

ご意見、ご協力をお待ちしております。

答えて

2

__consumer_offsetsトピックのレプリケーションファクタを確認してください。それが3でないなら、あなたの問題です。

次のコマンドkafka-topics --zookeeper localhost:2181 --describe --topic __consumer_offsetsを実行し、出力の最初の行に「ReplicationFactor:1」または「ReplicationFactor:3」と表示されているかどうかを確認します。

1つのノードを最初にセットアップする試行を行うときによくある問題です。このトピックは、複製係数1で作成されます。後で3ノードに展開すると、この既存のトピックのトピックレベルの設定をあなたが作り出して消費しているトピックはフォールトトレラントですが、オフセットトピックは依然としてブローカー0だけで止まっています。

+0

Hansに感謝します。私は作成されたデフォルトのトピックの複製要因を変更しませんでした。私は提案を試します – FindingTheOne

+0

私はあなたがレプリケーションファクタを変更していないことを理解していますが、3つのノードにクラスタを展開する前に、最初に1つのノードクラスタでpub/subを実行した場合、次のコマンドを実行します。kafka-topics --zookeeper localhost:2181 --describe --topic __consumer_offsets'出力の最初の行に "ReplicationFactor:1"または "ReplicationFactor:3"と表示されているかどうかを確認します。 –

+0

はい、レプリケーションファクタは1です。私はそれを変更する必要があります – FindingTheOne

関連する問題