前言
硬件环境
172.18.0.5 kafkazk1 Kafka+zookeeper Kafka Broker集群
172.18.0.6 kafkazk2 Kafka+zookeeper Kafka Broker集群
172.18.0.7 kafkazk3 Kafka+zookeeper Kafka Broker集群软件环境
zookeeper 3.5.9 资源调度、写作
Kafka 2.8.0 消息通信中间件
安装JDK1.8
安装搭建zookeeper集群
对于集群模式下的zookeeper部署,官方建议至少需要三台服务器,关于服务器数量推荐是奇数个数(3、5、7等等),以实现zookeeper集群的高可用,这里使用三台服务器进行部署
注意:zoo和kafka有版本不一致的问题,需要去官网看确切的版本然后在进行下载。 kafka3.8.0兼容zoo3.8.4
下载安装zookeeper
#zookeeper使用java编写的,需要安装Java运行环境,可以在zookeeper官网 https://zookeeper.apache.org/获取zookeeper安装包,这里安装的版本是zookeeper-3.9.2.tar.gz 将下载下来的安装包直接解压都一个路径下即可完成zookeeper的安装
#切换目录
cd /usr/local
#下载
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
#解压
tar -zxvf zookeeper-3.9.2.tar.gz -C /usr/local
#更换文件名
mv /usr/local/zookeeper-3.9.2 /usr/local/zookeeper
配置zoo.cfg
zookeeper安装到了/usr/local/目录下,因此,zookeeper的配置模版文件为/usr/local/zookeeper/conf/zoo_sample.cfg,拷贝zoo_sample.cfg并重命名为zoo.cfg,重点配置内容如下
########zoo.cfg#################
tickTime=2000 # 控制心跳和超市的时间秒 时间度量单位 毫秒
initLimit=10 #10个tickTime 配置链接到lead节点时,最长忍受多长心跳和超时节点
syncLimit=5 #5个tickTime 标识lead和 发送消息是请求和应答时间长度 不能超过多少个tickTime
dataDir=/usr/local/zookeeper/data #存储快照文件的目录 必配 数据目录 目录必须存在 如果没有配置dataLogDir那么事务日志也会存在此目录
clientPort=2181 #zookeeper 的端口
#下面是集群配置 对应集群服务器的信息
#第几台服务器=第几台服务器的ip地址 : 集群lead通信的端口 : 执行选举的时候的一个端口
server.1=172.18.0.5:2888:3888
server.2=172.18.0.6:2888:3888
server.3=172.18.0.7:2888:3888
#############zoo.cfg################
zoo.cfg配置解析
#tickTime:zookeeper使用的基本时间度量单位,以毫秒为单温,它用来控制心跳和超时,2000标识2ticktime。更低的tickTime值可以更快地发现超时时间问题。
#initLimit:这个配置项是用来配置zookeeper急群众Follower服务器初始化连接到Leader时,最长能忍受多少个心跳时间间隔数(也就是tickTime)口
#syncLimit:这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度最长不能超过多少个tickTimes的时间长度。
#dataDir:必须配置项,用于配置存储快照文件的目录,需要事先创建好这个木,如果没有配置dataLogDir,那么事务日志也会存储在此目录。
#clientPort:zookeeper服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
#server.A=B:C:D 其中A是一个数字,表示第几个服务器;B是这个服务器的IP地址;C表示的是这个服务器与急群众的Leader服务器通信的端口;D表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的Leader而这个端口就是用来执行选举时服务器相互通信的端口。
配置myid
除了修改zoo.cfg配置文件外,集群模式下还要配置一个文件myid,这个文件需要放在dataDir配置项指定的目录下,这个文件里面只有一个数字,如果要写入1,表示第一个服务器,与zoo.cfg文本中的server.1中的1对应,以此类推,在集群的第二个服务器zoo.cfg配置文件中dataDir配置项指定的目录下创建myid文件,写入2,这个2与zoo