kafka集群搭建与使用

2020-07-05  本文已影响0人  knock

kafka集群搭建与使用

在 master 节点上

1.下载 kafka_2.11-0.10.0.1.tar.gz

  1. 安装 kafka(一个broker) 解压安装包
    tar -xzvf kafka_2.11-0.10.0.1.tar.gz
  2. 修改 server.properties
    cd kafka_2.11-0.10.0.1/config/
    vi server.properties

修改内容如下:

====================================
broker.id=0
连接zookeeper
zookeeper.connect=master:2181,worker1:2181,worker2:2181
可删除topic
delete.topic.enable=true
添加副本(partition的副本被称为replica,每个分区可以有多个副本,并且在副本集中会存在一个leader副本,所有的读写请求都会通过leader完成,follower复制只负责备份数据。副本会均匀分配到多台broker上,当leader节点挂掉之后,会从副本集中重新选出一个副本作为leader继续提供服务 需替换group.id才能消费)
default.replication.factor=3
分区数
num.partitions=3
(代表3个副本可用)
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
(端口决定kafka 客户端连接的端口)
listeners=PLAINTEXT://net1:9092
(如果为内网则需要填写内网ip 如果为外网需填写外网ip)
advertised.listeners=PLAINTEXT://192.168.1.1:9092

====================================

  1. 将 kafka_2.11-0.10.0.1 文件夹复制到另外两个节点下

在master节点上
scp -r kafka_2.11-0.10.0.1/ worker1:~/
scp -r kafka_2.11-0.10.0.1/ worker2:~/

并修改每个节点对应的 server.properties 文件的 broker.id: master为0,worker1为1,worker2为2

启动 Kafaka 集群

在master节点上
在worker1节点上
在worker2节点上
(bin目录下守护进程方式启动)
./kafka-server-start.sh -daemon ../config/server.properties &

创建 topic 和 显示 topic 信息

在master节点上 创建topic(replication-factor 副本数不能多于kafka节点数)
bin/kafka-topics.sh --create --zookeeper net1:2181 --replication-factor 3 --partitions 3 --topic infoy
在master节点上 显示topic信息
bin/kafka-topics.sh --describe --zookeeper net1:2181 --topic infox

在master节点上 列出topic
bin/kafka-topics.sh --list --zookeeper net1:2181

创建 producer

在master节点上 测试生产消息
bin/kafka-console-producer.sh --broker-list net1:9092 -topic group

创建 consumer

在master,node节点上 测试消费
bin/kafka-console-consumer.sh --bootstrap-server net1:9092,net2:9092 --topic xxx --from-beginning

删除 topic 和关闭服务

在master节点上 删除topic
bin/kafka-topics.sh --delete --zookeeper net1:2181 --topic test

关闭

在master节点上 关闭kafka
./kafka_2.11-0.10.0.1/bin/kafka-server-stop.sh
在worker1节点上 关闭kafka
./kafka_2.11-0.10.0.1/bin/kafka-server-stop.sh
在worker2节点上 关闭kafka
./kafka_2.11-0.10.0.1/bin/kafka-server-stop.sh

在master节点上 关闭zookeeper
./zookeeper-3.4.8/bin/zkServer.sh stop
在worker1节点上 关闭zookeeper
./zookeeper-3.4.8/bin/zkServer.sh stop
在worker2节点上 关闭zookeeper
./zookeeper-3.4.8/bin/zkServer.sh stop

listeners与advertised_listeners作用

比如说:
listeners: INSIDE://172.17.0.10:9092,OUTSIDE://172.17.0.10:9094
advertised_listeners: INSIDE://172.17.0.10:9092,OUTSIDE://<公网 ip>:端口
kafka_listener_security_protocol_map: "INSIDE:SASL_PLAINTEXT,OUTSIDE:SASL_PLAINTEXT"
kafka_inter_broker_listener_name: "INSIDE"
advertised_listeners 监听器会注册在 zookeeper 中;

当我们对 172.17.0.10:9092 请求建立连接,kafka 服务器会通过 zookeeper 中注册的监听器,找到 INSIDE 监听器,然后通过 listeners 中找到对应的 通讯 ip 和 端口;

同理,当我们对 <公网 ip>:端口 请求建立连接,kafka 服务器会通过 zookeeper 中注册的监听器,找到 OUTSIDE 监听器,然后通过 listeners 中找到对应的 通讯 ip 和 端口 172.17.0.10:9094;

总结:advertised_listeners 是对外暴露的服务端口,真正建立连接用的是 listeners。

上一篇下一篇

猜你喜欢

热点阅读