kafka レプリケーションパーティションを試す その1
中途半端
トピック作成
# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic replicated-topic Created topic replicated-topic.
トピック確認
list をみる
# bin/kafka-topics.sh --list --zookeeper localhost:2181 replicated-topic
describe を見る。 Partition:0 は リーダーが1。1,2でレプリケーションしている。1,2 とも ISR(In Sync Replica レプリカ済み) 。
# bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic replicated-topic Topic:replicated-topic PartitionCount:3 ReplicationFactor:2 Configs: Topic: replicated-topic Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: replicated-topic Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3 Topic: replicated-topic Partition: 2 Leader: 3 Replicas: 3,1 Isr: 3,1
ブローカー1コ指定で登録/受信
broker1 へメッセージ登録しブローカ1,2,3で受信してみる。順番が異なる場合があるが、全部受信した。
# bin/kafka-console-producer.sh --broker-list 192.168.0.21:9092 --topic replicated-topic >qwer >asdf >zxcv
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --from-beginning asdf zxcv qwer ^CProcessed a total of 3 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --from-beginning qwer asdf zxcv ^CProcessed a total of 3 messages
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --from-beginning qwer asdf zxcv ^CProcessed a total of 3 messages
brokerをつなげてコンシューム。
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092,192.168.0.22:9092,192.168.0.23:9092 --topic replicated-topic --from-beginning asdf zxcv qwer ^CProcessed a total of 3 messages
パーティションを指定してconsume
3メッセージが別パーティションに配置されていたことがわかる。
↓下だと思っていたが、誤りだった。
broker1に登録したメッセージは1,2でレプリケーションする。3からはコンシュームできない。
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 0 --from-beginning zxcv ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 1 --from-beginning qwer ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 2 --from-beginning asdf ^CProcessed a total of 1 messages
存在しないパーティションの場合
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.21:9092 --topic replicated-topic --partition 3 --from-beginning ^CProcessed a total of 0 messages
broker2 からコンシューム。broker1と同じ結果が得られた。
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 0 --from-beginning zxcv ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 1 --from-beginning qwer ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 2 --from-beginning asdf ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.22:9092 --topic replicated-topic --partition 3 --from-beginning ^CProcessed a total of 0 messages
broker3 からコンシューム。これも同じ
# bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 0 --from-beginning zxcv ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 1 --from-beginning qwer ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 2 --from-beginning asdf ^CProcessed a total of 1 messages # bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.23:9092 --topic replicated-topic --partition 3 --from-beginning ^CProcessed a total of 0 messages
どのブローカーを指定しても、メッセージのパーティションのリーダーを見つけ、リーダーに書き込み/読み出する挙動のなのか。書籍等をあたりたい。