架构图
Kafka集群架构图:
每个Broker即一个Kafka服务实例,多个Broker构成一个Kafka集群。生产者发布的消息将保存在Broker中消费者将从Broker中拉取消息进行消费。
为了达到高可用,Zookeeper自身也必须是集群。
Zookeeper集群
搭建三个节点的zookeeper伪集群。
cp -r apache-zookeeper-3.5.9-bin zookeeper-01
cp -r apache-zookeeper-3.5.9-bin zookeeper-02
cp -r apache-zookeeper-3.5.9-bin zookeeper-03
在三个zoo.cfg中分别配置不同的数据目录dataDir,以及不同端口号clientPort 2181,2182,2183
myid配置:
在每个zookeeper的data目录下创建一个myid文件,内容分别是0,1,1,这个文件就是记录每个服务器的ID
mkdir -p /tmp/zookeeper-01/data
vi /tmp/zookeeper-01/data/myid
在每个zookeeper的zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表
server.服务器ID=服务器IP地址:服务器之间通信端口:服务器之间投票选举端口
server.0=127.0.0.1:2888:3888
server.1=127.0.0.1:2889:3889
server.2=127.0.0.1:2890:3890
配置完成后,分别启动三台zookeeper
zookeeper-01/bin/zkServer.sh start
zookeeper-02/bin/zkServer.sh start
zookeeper-03/bin/zkServer.sh start
查看三台节点的状态:
zookeeper-01/bin/zkServer.sh status
zookeeper-02/bin/zkServer.sh status
zookeeper-03/bin/zkServer.sh status
一主两从。至此,zookeeper的集群搭建完毕。
Kafka集群
cp -r kafka_2.13-2.7.0 kafka-01
cp -r kafka_2.13-2.7.0 kafka-02
cp -r kafka_2.13-2.7.0 kafka-03
rm -rf kafka-01/logs/*
rm -rf kafka-02/logs/*
rm -rf kafka-03/logs/*
分别修改三个kafka的配置文件server.properties(这里以其中一台kafka为例)
vi kafka-01/config/server.properties
##broker.id必须全局唯一,分别配置为0,1,2
broker.id=0
#listeners这一行注释
#listeners=PLAINTEXT://localhost:9092
host.name=localhost
#端口配置成不一样的
port=9092
#配置日志地址
log.dirs=/opt/kafka-01/logs
#zk集群连接地址
zookeeper.connect=192.168.1.51:2181,192.168.1.51:2182,192.168.1.51:2183
启动三台kafka
kafka-01/bin/kafka-server-start.sh -daemon kafka-01/config/server.properties
kafka-02/bin/kafka-server-start.sh -daemon kafka-02/config/server.properties
kafka-03/bin/kafka-server-start.sh -daemon kafka-03/config/server.properties
jps
kafka集群至此搭建完毕