Zookeeper集群搭建详解

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 chaodev 即可关注。

1、集群部署信息

集群部署信息如下

节点ip部署信息
节点1192.168.1.70Zookeeper
节点2192.168.1.71Zookeeper
节点3192.168.1.76Zookeeper

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节点。



更多技术干货,请持续关注程序员大佬超。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大佬超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值