三台虚拟机
IP 地址和域名
三台虚拟机的 CPU 核数均为 2,IP 和域名(主机名)的关系如下:
| IP 地址 | 域名 |
|---|---|
| 192.168.11.101 | kafka1 |
| 192.168.11.102 | kafka2 |
| 192.168.11.103 | kafka3 |
三台机器之间需要能够使用域名相互通信。
zookeeper 和 kafka
注意:
- 在搭建集群之前,每一台虚拟机已经安装好了 zookeeper 和 kafka,并且将 zookeeper 设置为了一个系统服务还添加了开机自启动。
- 搭建 zookeeper 集群之前需要
关闭防火墙。
zookeeper 配置文件
现在对每一台机器上执行如下操作:
-
zoo.cfg 配置文件中数据和日志的相关配置:
shell# 存放数据文件dataDir=/usr/local/zookeeper/data# 存放日志文件dataLogDir=/usr/local/zookeeper/log# 端口号clientPort=2181# 作为Zookeeper服务器之间维持心跳的时间间隔,单位毫秒tickTime=2000# 这个参数指定了Leader和Follower初始连接时能容忍的最多心跳数,其中心跳时间间隔由tickTime参数定义。# 换句话说,它定义了在初始连接期间Follower可以接收到多少个心跳(每个心跳间隔为tickTime)才会与Leader建立连接。# 如果initLimit被设置为 10,这意味着在20秒内(10 * 2秒),Follower必须接收到Leader的心跳,否则连接将会失败。initLimit=10# Leader和Follower之间同步通信的超时时间,这里表示如果超过5*2s=10s,Leader认为Follwer宕机,并从服务器列表中删除Follwer。syncLimit=5 -
创建多个节点集群时,在 dataDir 指定目录下必须创建 myid 文件,myid 文件用于 zookeeper 验证 server 序号,myid 文件只有一行,并且为当前 server 的序号,例如:server.1 的 myid 就是 1,server.2 的 myid 就是 2。
bash[root@kafka1 data]# pwd/usr/local/zookeeper/data[root@kafka1 data]# cat myid1 -
添加集群信息。格式:server.A=B:C:D
A 是一个数字(myid 里面的内容),表示这个是第几号服务器;
B 是这个服务器的 ip 地址;
C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader;
所以 zoo.cfg 配置文件中需要添加如下配置:
shellserver.1=192.168.11.101:2888:3888server.2=192.168.11.102:2888:3888server.3=192.168.11.103:2888:3888 -
重启 zookeeper:
bash[root@kafka1 conf]# systemctl restart zookeeper[root@kafka1 conf]# jps8824 QuorumPeerMain8860 Jps
另外两台主机参考以上步骤做相应的变通即可。
kafka 配置文件
分别修改 192.168.11.101,192.168.11.102,192.168.11.103 三个节点的 kafka 配置文件 server.properties:
-
192.168.11.101 的配置:
shell# 集群中每个节点的唯一标识broker.id=1# 定义了 broker 监听的地址和端口listeners = PLAINTEXT://kafka1:9092# 定义了在集群内和外部客户端通信时要使用的地址advertised.listeners=PLAINTEXT://kafka1:9092# zookeeper的连接地址zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181/kafka -
192.168.11.102 的配置:
shell# 集群中每个节点的唯一标识broker.id=2# 定义了 broker 监听的地址和端口listeners = PLAINTEXT://kafka2:9092# 定义了在集群内和外部客户端通信时要使用的地址advertised.listeners=PLAINTEXT://kafka2:9092# zookeeper的连接地址zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181/kafka -
192.168.11.103 的配置:
shell# 集群中每个节点的唯一标识broker.id=3# 定义了 broker 监听的地址和端口listeners = PLAINTEXT://kafka3:9092# 定义了在集群内和外部客户端通信时要使用的地址advertised.listeners=PLAINTEXT://kafka3:9092# zookeeper的连接地址zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181/kafka
启动和停止
bash
# 启动kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties# 查看是否启动成功jps# 停止kafka-server-stop.sh