Linux Centos搭建Zookeeper集群

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22067469/article/details/84674205

前言

由于本次搭建只有一台服务器,真实的集群是需要部署在不同的服务器上的,所以这次搭建伪集群,把所有的服务都搭建到一台服务器上,用端口进行区分。
本次搭建一个三个节点的Zookeeper集群。

准备工作

1、安装JDK【此步骤省略】。
2、下载Zookeeper压缩包文件,上传到服务器,也可以使用命令下载

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

3、将Zookeeper解压,进到Zookeeper目录创建data目录,将conf下的zoo_sample.cfg文件改名为zoo.cfg

tar -xvzf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10
mkdir data
cd conf
mv zoo_sample.cfg zoo.cfg

4、建立/usr/local/zookeeper-cluster目录,将修改后的zookeeper复制到以下三个目录

mkdir /usr/local/zookeeper-cluster
cp -r zookeeper-3.4.10 /usr/local/zookeeper-cluster/zookeeper-1
cp -r zookeeper-3.4.10 /usr/local/zookeeper-cluster/zookeeper-2
cp -r zookeeper-3.4.10 /usr/local/zookeeper-cluster/zookeeper-3

在这里插入图片描述
5、配置每一个Zookeeper的conf目录下的zoo.cfg文件的dataDirclientPort

  • 修改/usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
clientPort=2181
dataDir=/usr/local/zookeeper-cluster/zookeeper-1/data
  • 修改/usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
clientPort=2182
dataDir=/usr/local/zookeeper-cluster/zookeeper-2/data
  • 修改/usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
clientPort=2183
dataDir=/usr/local/zookeeper-cluster/zookeeper-3/data

配置集群

1、在每个Zookeeper的data目录下创建一个 myid文件,内容分别为1、2、3。这个文件就是记录每个服务器的ID

当前目录为 zookeeper-cluster
echo 1 > zookeeper-1/data/myid
echo 2 > zookeeper-2/data/myid
echo 3 > zookeeper-3/data/myid

在这里插入图片描述
2、在每一个zookeeper的zoo.cfg配置客户端访问端口clientPort和集群服务器IP列表。

解释 server.服务器ID=服务器ID地址:服务器之间通信端口:服务器之间投票选举端口
server.1=172.16.32.17:2881:3881
server.2=172.16.32.17:2882:3882
server.3=172.16.32.17:2883:3883

启动集群

1、 启动集群就是分别启动每个实例

zookeeper-1/bin/zkServer.sh start
zookeeper-2/bin/zkServer.sh start
zookeeper-3/bin/zkServer.sh start

在这里插入图片描述
2、启动后查看每一个实例的运行状态
在这里插入图片描述

  • 第一个服务 Mode为fllower表示是跟随者(从)
  • 第二个服务 Mode为leader表示领导者(主)
  • 第三个服务 Mode为fllower跟随者(从)

模拟集群异常

1、首先我们测试如果从服务器挂掉。

  • 把3号服务器停掉,观察1号和2号,发现状态并没有变化
    在这里插入图片描述
    因此得出结论,3个节点的集群,从服务器挂掉,集群正常
    2、再把1号服务(从服务器)也停掉,查看2号(主服务器)的状态,发现已经停止运行了。
    在这里插入图片描述
    因此得出结论,3个节点的集群,2个从服务器挂掉,主服务器也无法运行。国为可运行的机器没有超过集群总数的半数。
    3、再次把1号服务器启动起来,发现2号服务器又开始正常工作了。而且依然是领导者。
    在这里插入图片描述
    4、把3号服务器也启动起来,把2号服务器停掉(领导挂了)停掉后观察1号和3号的状态。
    在这里插入图片描述
    这时候发现了新的领导者(leader)
    由此得出结论,当集群中的主服务器挂了,集群中的其他服务器会自动进行选举状态,然后产生新得leader。
    5、再次测试,把2号服务器重新启动,启动后,会发现2号服务器并没有成为领导,看结果。
    在这里插入图片描述
    得出结论,2号服务器启动后依然是跟随者(从服务器),3号服务器依然是领导者(主服务器),没有撼动3号服务器的领导地位。当领导者产生后,再次有新服务器加入集群,不会影响到现任领导者

Dubbox连接Zookeeper集群

修改服务提供者和服务调用的spring配置文件

<!-- 指定注册中心地址 -->
<dubbo:registry
protocol="zookeeper" address="119.29.181.129:2181,119.29.181.129:2182,119.29.181.129:2183">
</dubbo:registry>

总结

1、如果是云服务器,zoo.cfg里面的ip要是内网地址,不能是别名或者公网地址。
2、端口的防火墙必须开。

猜你喜欢

转载自blog.csdn.net/qq_22067469/article/details/84674205