十分钟搭建一个Zookeeper高可用集群
一, 集群安装
1,环境信息
主机名 | 操作系统版本 | IP地址 | 安装软件 |
---|---|---|---|
zookeeper1 | CentOs7.6 | 192.168.30.1 | JDK、zookeeper-3.5.7 |
zookeeper2 | CentOs7.6 | 192.168.30.2 | JDK、zookeeper-3.5.7 |
zookeeper3 | CentOs7.6 | 192.168.30.3 | JDK、zookeeper-3.5.7 |
– | |||
二,配置zookeeper
1,下载链接: zookeeper
2, 拷贝 apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下。
3,解压到指定目录并修改名称。
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
mv apache-zookeeper-3.5.7 zookeeper-3.5.7
4,配置修改
(1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg并创建目录。
cp zoo_sample.cfg zoo.cfg
mkdir dataDir
mkdir dataLogDir
(2)修改zoo.cfg配置文件
cd conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
tickTime=2000
#数据存放目录
dataDir=/opt/module/zookeeper-3.5.7/dataDir
#日志存放目录
dataLogDir=/opt/module/zookeeper-3.5.7/dataLogDir
#保留多少个快照
autopurge.snapRetainCount=3
#日志多少小时清理一次
autopurge.purgeInterval=1
server.1=192.168.30.1:2888:3888
server.2=192.168.30.2:2888:3888
server.3=192.168.30.3:2888:3888
(3)创建myid
在文件中添加与server对应的编号1,并分别修改其余两台机器为2、3。
cd /opt/module/zookeeper-3.5.7/dataDir
echo 1 > myid
(4)在zookeeper1主机上,将安装包分发到其他机器第一台机器上面执行以下两个命令。
scp -r /opt/module/zookeeper-3.5.7/ zookeeper2:/opt/module/zookeeper-3.5.7/
scp -r /opt/module/zookeeper-3.5.7/ zookeeper3:/opt/module/zookeeper-3.5.7/
三, 分别启动三台机器的zookeeper。
1,启动。
cd /opt/module/zookeeper-3.5.7/
bin/zkServer.sh start
#查看进程是否启动
jps
4020 Jps
4001 QuorumPeerMain
# 查看版本号
yum -y install nc
vim conf/zoo.cfg
新增:
4lw.commands.whitelist=*
echo stat|nc localhost 2181
2,查看状态
bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower
bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: leader
bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower
四,配置文件详解
tickTime=2000
这个属性表示心跳时间间隔,Leader用来监听Follower的心跳,一旦挂掉一半以上Follower,会通过Zab(消息原子广播)协议使集群所有个体状态转变为Looking(等待选举新任Leader)。此属性除了用来监听之外,还对后面的同步时间和初始化时间有影响,系统默认为2000毫秒。
initLimit=10
集群中的follower服务器与Leader服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),系统默认为10
syncLimit=5
集群中Follower服务器跟Leader服务器之间的请求和答应最多能容忍的心跳数(tickTime的数量),系统默认为5
clientPort=2181
zk客户端连接zookeeper的口号,默认2181。
此处是关于zk集群的配置,index代表自定义的各服务器序号(对应写在各自机器的myid中),IP即各服务器IP,A表示集群服务器之间通讯组件的端口,B表示选举组件的端口。如果配成集群,则zk状态(mode)为leader或follower;如果只配一个单机,mode为standalone。
3.5版本以后会自动占用8080端口,如有冲突需要修改 admin.serverPort=xxx
知识点:学好zookeeper看过来