zookeeper集群

一、集群说明

1.1 集群要求

真实的集群需要部署在不同的服务器上,如果是部署在单机上的集群则需要考虑端口和目录的划分;

官网 :https://zookeeper.apache.org/

1.2 集群节点
节点ip 主机名 端口
10.0.0.10 zk1 2881(客户端),3881(集群通信)
10.0.0.17 zk2 2881(客户端),3881(集群通信)
10.0.0.20 zk3 2881(客户端),3881(集群通信)
1.3 部署流程
1) 安装jdk
2) 安装zookeeper
3) 服务器上创建目录
4) 配置集群
5) 启动集群
6) 集群异常测试

二、集群部署

2.1 安装jdk
#所有节点安装
tar xf jdk-8u241-linux-x64.tar.gz -C /data/software/
echo "export JAVA_HOME=/data/software/jdk1.8.0_241" >> /etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
source /etc/profile
java -version
2.2 安装zookeeper
#所有节点安装
wget -c https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar xf apache-zookeeper-3.7.0-bin.tar.gz
mv apache-zookeeper-3.7.0-bin /data/software/apache-zookeeper-3.7.0
2.3 创建数据目录
#所有节点执行
mkdir /data/software/apache-zookeeper-3.7.0/data
2.4 配置集群
#所有节点执行
mv /data/software/apache-zookeeper-3.7.0/conf/zoo_sample.cfg /data/software/apache-zookeeper-3.7.0/conf/zoo.cfg
vim /data/software/apache-zookeeper-3.7.0/conf/zoo.cfg
# --------------------------------------------------------
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/software/apache-zookeeper-3.7.0/data
clientPort=2181
admin.enableServer=false
#admin.serverPort=8080
# --------------------------------------------------------
#在每个zookeeper的 data 目录下创建一个 myid 文件
echo 1 > /data/software/apache-zookeeper-3.7.0/data/myid #zk1
echo 2 > /data/software/apache-zookeeper-3.7.0/data/myid #zk2
echo 3 > /data/software/apache-zookeeper-3.7.0/data/myid #zk3
chmod 600 /data/software/apache-zookeeper-3.7.0/data/myid
#在每一个zookeeper 的 zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表
#server.服务器ID=服务器IP地址:服务器之间通信端口:服务器之间投票选举端口
vim /data/software/apache-zookeeper-3.7.0/conf/zoo.cfg
#
server.1=10.0.0.10:2881:3881
server.2=10.0.0.17:2881:3881
server.3=10.0.0.20:2881:3881
2.5 启动集群
#查看status时显示为follower表示从,leader表示主
/data/software/apache-zookeeper-3.7.0/bin/zkServer.sh start
/data/software/apache-zookeeper-3.7.0/bin/zkServer.sh status
2.6 集群测试总结
  • 3个节点的集群,从服务器挂掉,集群正常
  • 3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。
  • 当集群中的主服务器挂了,集群中的其他服务器会自动进行选举状态,然后产生新得leader
  • 当领导者产生后,再次有新服务器加入集群,不会影响到现任领导者