为什么要做ZooKeeper集群?
-
ZooKeeper在Dubbo框架中起着发现服务,服务注销/注册(动态伸缩)的功能,假如仅有的一台Zookeeper宕机了,将会造成整个应用的服务调用失败,服务停摆期间所造成的损失不可想象
-
同时Zookeeper也是很多中间件,比如消息中间件ActiveMQ集群所需要依赖的
关键是ActiveMQ集群的主从选举是基于Zookeeper实现的,如果关键时刻唯一的Zookeeper宕机了,那么ActiveMQ的主从切换也将无法实现
准备工作
假如你还没有安装ZooKeeper,可以参考下面的文章,只需要看前面20行左右即可
ZooKeeper: 在CentOS7中配置Zookeeper并搭建测试环境:https://blog.csdn.net/fenghuoliuxing990124/article/details/84979590
为了排除干扰,进入安装好的zookeeper的bin目录下执行:
./zkServer.sh stop
具体操作
-
进入/usr/local 建立zookeeper-cluster文件夹
cd /usr/local
mkdir zookeeper-cluster -
复制安装好的zookeeper到zookeeper-cluster下
cp -r zookeeper ./zookeeper-cluster/
mv ./zookeeper-cluster/zookeeper ./zookeeper-cluster/zk1
-
进入zk1的conf,修改zoo.cfg文件
-
为zoo.cfg添加以下配置
一般来说应该是这样的:
server.1=192.168.230.121:2888:3888
server.2=192.168.230.122:2888:3888
server.3=192.168.230.123:2888:3888
这里server后接的数字代表ID号
IP地址后面的2888端口表示的是:集群中leader与follower通信的接口
3888端口表示的是:投票选举时用的接口
但是我们都是配置在同一台主机上的,所以,上面的地址变为:
server.1=192.168.230.140:2888:3888
server.2=192.168.230.140:2887:3887
server.3=192.168.230.140:2886:3886
最终配置为:
也许你已经看见了红线表示的部分,因为我已经启动过集群一次了
实际上zookeeper会将你之前填写的内容动态链接到一个文件中:
该文件的内容如下:
接下来你注意到了下面的部分,是的,由于我们目前所有的zookeeper都在同一台服务器上,所以下面的客户端接口,admin.server接口都得改动
5.创建data与log文件
在上面你看到了data与log文件的文件路径配置,注意这个是一定要配置的,并且一定要是各自独立的,这个配置以后才能保证,集群中的Master宕机后,新Master的数据不受影响
cd /usr/local/zookeeper-cluster/zk1
mkdir data
mkdir log
6.进入data目录,新建myid文件
echo 1 >> myid
这个"1"对应的是zoo.cfg中server.1,后面的zk2,zk3节点同理
接下来就是制作zk2,zk3节点
cd /usr/local/zookeeper-cluster
cp -r zk1 zk2
将下面的clientPort = 2181 --> 2182
admin.serverPort=9999 --> 9998
修改data,log对应的文件夹,最后在data中添加对应的zk2节点
zk3节点同理,不再赘述
防火墙配置
由于要开放端口较多,直接关闭即可
如需开放端口,可参考:
CentOS7:配置防火墙:https://blog.csdn.net/fenghuoliuxing990124/article/details/84931331
如果以上都没有问题,下一步即是集群测试了