本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 chaodev 即可关注。
文章目录
1、集群部署信息
集群部署信息如下
节点 | ip | 部署信息 |
---|---|---|
节点1 | 192.168.1.70 | Zookeeper |
节点2 | 192.168.1.71 | Zookeeper |
节点3 | 192.168.1.76 | Zookeeper |
2、ZooKeeper单机安装部署
由于ZooKeeper运行需要java环境,所以提前安装好jdk,过程简单,这里就不再赘述。
2.1 zookeeper下载
ZooKeeper需要使用3.4.5版本及以上,下载地址:
https://archive.apache.org/dist/zookeeper/
注:安装包下载带有bin的版本,否则可能会报错。
2.2 解压
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
2.3 配置
进入解压后的目录,将conf目录下的 zoo_sample.cfg重命名为zoo.cfg
默认配置如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
#maxClientCnxns=60
#autopurge.snapRetainCount=3
#autopurge.purgeInterval=1
配置项说明如下:
- tickTime:ZooKeeper 中使用的基本时间单元, 以毫秒为单位, 默认值是 2000。它用来调节心跳和超时。
- initLimit:默认值是 10, 即 tickTime 属性值的 10 倍。它用于配置允许 followers 连接并同步到 leader 的最大时间。如果 ZooKeeper 管理的数据量很大的话可以增加这个值。
- syncLimit::默认值是 5, 即 tickTime 属性值的 5 倍。它用于配置leader 和 followers 间进行心跳检测的最大延迟时间。如果在设置的时间内 followers 无法与 leader 进行通信, 那么 followers 将会被丢弃。
- dataDir: ZooKeeper 用来存储内存数据库快照的目录, 并且除非指定其它目录, 否则数据库更新的事务日志也将会存储在该目录下。
- dataLogDir:指定 ZooKeeper 事务日志的存储目录。
- clientPort:服务器监听客户端连接的端口, 也即客户端尝试连接的端口, 默认值是 2181。
- maxClientCnxns:在 socket 级别限制单个客户端与单台服务器之前的并发连接数量, 可以通过 IP 地址来区分不同的客户端。它用来防止某种类型的 DoS 攻击, 包括文件描述符耗尽。默认值是 60。将其设置为 0 将完全移除并发连接数的限制。
- autopurge.snapRetainCount:配置 ZooKeeper 在自动清理的时候需要保留的数据文件快照的数量和对应的事务日志文件, 默认值是 3。
- autopurge.purgeInterval:和参数 autopurge.snapRetainCount 配套使用, 用于配置 ZooKeeper 自动清理文件的频率, 默认值是 1, 即默认开启自动清理功能, 设置为 0 则表示禁用自动清理功能。
修改 zoo.cfg 配置,更换数据和日志存储目录(别放在tmp目录,否则某一天可能数据就没了),如下:
clientPort=2181
dataDir= /data/opt/apache-zookeeper-3.5.7-bin/data
dataLogDir= /data/opt/apache-zookeeper-3.5.7-bin/logs
2.4 启动ZooKeeper服务
进入bin目录
#启动
./zkServer.sh start
# 停止
./zkServer.sh stop
# 重启
./zkServer.sh restart
2.5 开放zookeeper的对应端口
永久性添加2181端口
firewall-cmd --add-port=2181/tcp --permanent --zone=public
重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
2.6 验证zookeeper服务
服务启动完成后, 可以使用 telnet 和 stat 命令验证服务启动是否正常
telnet 127.0.0.1 2181
进入到命令行管理界面,如下
./zkCli.sh
至此,单机模式就安装完成了。
3、Zookeeper集群安装
由于 zookeeper 是用于分布式协调服务,因此我们需要部署一个 zookeeper 集群,这里选择3个节点(奇数)分别安装上 zookeeper。
3.1 配置文件
节点1(192.168.1.70):
#端口
clientPort=2181
#数据和日志存储目录
dataDir= /data/opt/apache-zookeeper-3.5.7-bin/data
dataLogDir= /data/opt/apache-zookeeper-3.5.7-bin/logs
#server.序号=主机名, 通讯端口、选举通讯端口
server.1=192.168.1.70:2888:3888
server.2=192.168.1.71:2888:3888
server.3=192.168.1.76:2888:3888
节点2(192.168.1.71):
clientPort=2181
dataDir= /data/opt/apache-zookeeper-3.5.7-bin/data
dataLogDir= /data/opt/apache-zookeeper-3.5.7-bin/logs
server.1=192.168.1.70:2888:3888
server.2=192.168.1.71:2888:3888
server.3=192.168.1.76:2888:3888
节点3(192.168.1.76):
clientPort=2181
dataDir= /data/opt/apache-zookeeper-3.5.7-bin/data
dataLogDir= /data/opt/apache-zookeeper-3.5.7-bin/logs
server.1=192.168.1.70:2888:3888
server.2=192.168.1.71:2888:3888
server.3=192.168.1.76:2888:3888
3.2 myid文件
每一个节点的数据文件夹中创建一个myid文件,内容为其对应的id号
echo "1" > /data/opt/apache-zookeeper-3.5.7-bin/data/myid
echo "2" > /data/opt/apache-zookeeper-3.5.7-bin/data/myid
echo "3" > /data/opt/apache-zookeeper-3.5.7-bin/data/myid
3.3 开放端口
各节点开放端口 2888、3888
永久性添加2888端口
firewall-cmd --add-port=2888/tcp --permanent --zone=public
重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
永久性添加3888端口
firewall-cmd --add-port=3888/tcp --permanent --zone=public
重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
3.4 启动zookeeper集群
启动各节点后,如下,一个leader,两个follower
这时候,如果你将leader这个节点关掉,剩下两台又会有一台变成了 leader节点。
更多技术干货,请持续关注程序员大佬超。