Kafka从入门到学废(二)——Kafka集群

上一章介绍了Kafka单机的部署和常用命令,这一章我们将在此基础上介绍Kafka的集群应用

集群部署

本文使用单台服务器的不同端口模拟集群,如果多台服务器真实环境可以修改配置IP为对应服务器IP即可

配置准备

# 复制多两个配置文件
cp config/server.properties config/server-cluster-1.properties
cp config/server.properties config/server-cluster-2.properties

编辑三个属性文件中的属性

# config/server.properties
broker.id=0
listeners=PLAINTEXT://127.0.0.1:9092
log.dirs=/data/kafka/logs
zookeeper.connect=127.0.0.1:2181

# config/serverr-cluster-1.properties
broker.id=1
listeners=PLAINTEXT://127.0.0.1:9093
log.dirs=/data/kafka/logs-1
zookeeper.connect=127.0.0.1:2181

# config/serverr-cluster-2.properties
broker.id=2
listeners=PLAINTEXT://127.0.0.1:9094
log.dirs=/data/kafka/logs-2
zookeeper.connect=127.0.0.1:2181

listeners一定要配置成为IP地址
当使用java客户端访问远程的kafka时,一定要把集群中所有的端口打开防火墙

启动集群节点

启动集群中新建的两个节点

nohup ./kafka-server-start.sh ../config/server-cluster-1.properties 1>/dev/null 2>&1 &
nohup ./kafka-server-start.sh ../config/server-cluster-2.properties 1>/dev/null 2>&1 &

操作步骤

创建集群Topic

创建一个新的Topic,把备份设置为3,名字叫centerm-cluster-topic

./kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 3 --partitions 1 --topic centerm-cluster-topic

查看Topic信息

 ./kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic centerm-cluster-topic
 
# 得到结果如下
Topic: centerm-cluster-topic    PartitionCount: 1       ReplicationFactor: 3    Configs: 
Topic: centerm-cluster-topic    Partition: 0    Leader: 1       Replicas: 1,0,2 Isr: 1,0,2

Leader:该节点负责该分区的所有的读和写,每个节点的leader都是随机选择的
Replicas:备份的节点列表,无论该节点是否是leader或者当前是否alive,都会显示
Isr:“同步备份”的节点列表,也就是alive的节点并且正在同步leader
Leader,Replicas,Isr中的0,1,2就是配置文件中的broker.id

顺便查看上一章我们创建的Topic信息

./kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic centerm

#得到结果如下
Topic: centerm  PartitionCount: 1       ReplicationFactor: 1    Configs: max.message.bytes=12800000,flush.messages=1
Topic: centerm  Partition: 0    Leader: 0       Replicas: 0     Isr: 0

测试验证

通过发布消息、消费消息、容错测试来验证我们搭建的集群能力

发布消息

./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic centerm-cluster-topic
>I`m Kafka cluster leader

消费消息

./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9094 --from-beginning --topic centerm-cluster-topic
I`m Kafka cluster leader

容错测试

上面通过--describe我们看到Leaderbroker.id是1,是config/server-cluster-1.properties对应的Kafka服务

[root@localhost bin]# jps -m
28881 QuorumPeerMain ../config/zookeeper.properties
3097 Jps -m
30122 Kafka ../config/server-cluster-2.properties
12923 jar -workDir /data/jenkins -jar-cache /data/jenkins/remoting/jarCache
29324 Kafka ../config/server.properties
29759 Kafka ../config/server-cluster-1.properties

可以看到Leader的PID(29759 Kafka …/config/server-cluster-1.properties)为29759,干掉Leader。再次查看Topic信息,可以看到再次查看Topic信息,Leader变为了0,Isr也只剩下了0,2

kill -9 29759

# 再查看Topic信息
[root@localhost bin]# ./kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic centerm-cluster-topic
Topic: centerm-cluster-topic    PartitionCount: 1       ReplicationFactor: 3    Configs: 
Topic: centerm-cluster-topic    Partition: 0    Leader: 0       Replicas: 1,0,2 Isr: 0,2

再次尝试消费消息,发现消息并没有丢失,容错测试完成

./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9094 --from-beginning --topic centerm-cluster-topic
I`m Kafka cluster leader

容错测试结果
下一章介绍Spring框架下实现Kafka生产消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱清清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值