Zookeeper是Apache的一个开源项目,在集群管理中十分常用。它的集群搭建也十分简单,只需要简单的配置,集群的各个节点会完成自行通讯,自动选取Leader等。
更多关于zookeeper的信息和原理,可以参考这篇博文:ZooKeeper原理及使
Zookeeper的单机模式更加简单:
在Ubuntu系统下,只需要执行sudo apt-get install zookeeper安装,然后到安装目录下找到zkServer.sh脚本,执行./zkServer.sh start就启动了zookeeper的单机模式,通过这种方式安装的zookeeper的目录通常是/usr/share/zookeeper/。通过执行zkServer.sh status可以看到zookeeper的运行状态,这里使用的是单机模式,则会显示:
如果是在其他的Linux系统(CentOS)上,执行:
这个目录下有一个zoo_sample.cfg文件,是官方提供的示例配置,执行:
复制一份示例配置,改名为zoo.cfg,启动zookeeper:
下面我们来尝试一下搭建zookeeper集群,由于机器有限,我采用在一台机器上搭建伪集群的方式来搭建集群。
zookeeper官方推荐集群的节点数要是奇数,因此我们这里准备搭建3个节点的集群。
然后将下载好的zookeeper文件解压到每个目录下:
同时更改目录名称:
然后进入到每个节点的zookeeper目录下,分别创建data目录以及logs目录:
然后在data目录下创建myid文件,内容为当前节点的序号,如0,1,2:
填入序号,保存;
接下来进入conf目录创建zoo.cfg文件:
内容按下面方式填写:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/server0/zookeeper/data
dataLogDir=/opt/server0/zookeeper/logs
clientPort=2180
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
initLimit=5
syncLimit=2
dataDir=/opt/server0/zookeeper/data
dataLogDir=/opt/server0/zookeeper/logs
clientPort=2180
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
其中标红的部分要根据当前节点序号进行修改,例如当前在server0目录下,则按照上面的配置填写,然后保存。
填写完配置后就可以启动zookeeper了:
然后在另外两个节点的目录下重复上述操作,伪集群就搭建好啦。
通过./bin/zkServer.sh status可以看到当前节点在集群中的角色,显示如下:
通过./bin/zkCli.sh -server host:port的方式能够指定任一一个节点访问到集群: