在2. Zookeeper精要-单机多节点这篇文章中,我们已经阐述了单例模式下的Zookeeper的优缺点,也通过实例的方法介绍了在开发过程中,我们如何在一台机器上部署伪集群,今天我们来谈谈如何部署Zookeeper集群。
当然,在我们的学习过程中,集群的部署并不需要去购买几台机器,我们在自己的电脑上安装几个虚拟机,模拟集群即可,本实例我们在自己的电脑上安装3台虚拟机,模拟Zookeeper集群的部署。
1. 虚拟机的安装
本实例的虚拟机安装工具主要采用的是VirtualBox,读者自行下载安装即可,同时我们的虚拟机采用的是CentOS-7-x86_64-DVD-1611,读者可到CentOS官网下载镜像,由于可能很多读者以前没有接触过或者说没有使用VirtualBox安装过虚拟机,所以安装虚拟机请参考在VirtualBox中安装CentOS 7。
虚拟机安装时需要注意一点,就是在设置网络时,需要将链接方式设置成桥接,这样的话主机和虚拟机之间就可以相互ping通,各虚拟机之间也才能够相互ping通。
按照虚拟机安装步骤安装好虚拟机之后,我们就要开始部署我们的Zookeeper集群。
2. Zookeeper集群部署
启动虚拟机,按照我们在Zookeeper精要-standalone模式一文中所说的方式下载Zookeeper并解压。
通过如下命令先查看一下每台虚拟机的IP地址:
ifconfig
本实例中我们三台机器的IP地址分别为:
192.168.199.139、192.168.199.166、192.168.199.187
得到IP地址之后,我们开始配置Zookeeper。
进入Zookeeper的conf目录,新建zoo.cfg文件,写入如下内容(每台机器的配置信息都是一致的)。
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.0=192.168.199.139:2888:3888
server.1=192.168.199.166:2888:3888
server.2=192.168.199.187:2888:3888
这里需要说明一点,在我们的配置文件中,有三个格式为server.id=host:port:port的配置信息,这里给大家简单介绍一下。
id : 在quorum中标识主机的一个数字,在Zookeeper集群中该数字必须唯一,在dataDir指定的目录中,我们需要建立一个myid的文件,写入该数字。
在IP地址为192.168.199.166的虚拟机的/var/lib/zookeeper目录下新建myid文件,写入1;
在IP地址为192.168.199.187的虚拟机的/var/lib/zookeeper目录下新建myid文件,写入2;
host:表示集群中的主机地址。
第一个port : 主要用于quorum中机器之间点对点的交互,比如Follower连接Leader,Follower使用该端口向Leader打开一个TCP链接。
第二个port : 主要用于Leader的选举,该端口需要响应quorum中在Leader选举。
以上基本上我们的集群中需要的基本配置就完成了,但是虚拟机中我们需要注意一点,以上配置的端口可能尚未对外开放,读者可以通过如下命令启用端口。
开启端口:
firewall-cmd --zone=public --add-port=需要开启的端口号/tcp --permanent
重启防火墙:
firewall-cmd --reload
一切准备就绪,分别进入各台虚拟机的Zookeeper的bin目录,通如下命令启动各台虚拟机上的Zookeeper
./zkServer.sh start
启动成功之后,通过如下命令查看Zookeeper状态。
./zkServer.sh status
192.168.199.187状态:
192.168.199.166状态:
192.168.199.139状态:
根据以上结果我们可以看出,187这台机器被选为Leader,其他机器成为Follower。
以上就是我们说阐述的Zookeeper集群的简单的部署。