CentOS下ZooKeeper的安装教程(集群模式)
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。之前我写过文章介绍如何在 Linux 系统下实现 ZooKeeper 单机模式的部署(点击查看),本文接着介绍如何部署集群模式。
注意:从容错率以及防止脑裂两方面考虑,zookeeper 节点必须是奇数,并且搭建集群的最少服务器数目是 3 台。
1,安装配置
(1)首先我们访问 ZooKeeper 的官网(点击查看)下载合适的版本:
(2)这里我们下载 3.8.0 版本的 ZooKeeper:
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
(3)我们执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /usr/local
(4)接着创建 ZooKeeper 数据文件存放目录、以及日志存放目录(路径随意,后面会用到):
mkdir -p /usr/local/zookeeper-data/tmp mkdir -p /usr/local/zookeeper-data/log
(5)接着进入 conf 文件夹,执行如下命令复制 zoo 文件:
(6)然后编辑 zoo 文件:
(7)在里面添加如下数据文件目录、日志目录、以及集群服务地址端口配置,然后保存退出。(ZooKeeper 默认端口为 2181,如果有端口冲突或者需要改用其他端口可以修改 clientPort 配置):
cd /usr/local/apache-zookeeper-3.8.0-bin/conf cp zoo_sample.cfg zoo.cfg
(6)然后编辑 zoo 文件:
vi zoo.cfg
(7)在里面添加如下数据文件目录、日志目录、以及集群服务地址端口配置,然后保存退出。(ZooKeeper 默认端口为 2181,如果有端口冲突或者需要改用其他端口可以修改 clientPort 配置):
服务器地址后面的两个端口分别表示:Zookeeper 服务器之间的通信端口(2888)、Leader 选举的端口(3888)
dataDir=/usr/local/zookeeper-data/tmp dataLogDir=/usr/local/zookeeper-data/log server.0=192.168.60.8:2888:3888 server.1=192.168.60.2:2888:3888 server.2=192.168.60.1:2888:3888
(8)所有的服务器都需要做上面的配置,我们可以依次分别操作,也可以直接使用 scp 命令分发安装包到其他机器上:
scp -r /usr/local/apache-zookeeper-3.8.0-bin 192.168.60.2:/usr/local/ scp -r /usr/local/zookeeper-data 192.168.60.2:/usr/local/ scp -r /usr/local/apache-zookeeper-3.8.0-bin 192.168.60.1:/usr/local/ scp -r /usr/local/zookeeper-data 192.168.60.1:/usr/local/
2,创建 myid 文件
(1)根据各个服务器上的 zookeeper 配置,在 dataDir 指定的目录下,创建 myid 文件。比如我这里就是 /usr/local/zookeeper-data/tmp 下面:
(2)里面数字根据前面集群服务器地址配置中 server 后面的数字来填写,比如:192.168.60.8 服务器上的 myid 文件中内容为 0。192.168.60.2 服务器上的 myid 文件中内容为 1。
(2)或者直接关闭防火墙:
(2)启动后执行如下命令则可查看 ZooKeeper 状态:
cd /usr/local/zookeeper-data/tmp vi myid
(2)里面数字根据前面集群服务器地址配置中 server 后面的数字来填写,比如:192.168.60.8 服务器上的 myid 文件中内容为 0。192.168.60.2 服务器上的 myid 文件中内容为 1。
server.0=192.168.60.8:2888:3888 server.1=192.168.60.2:2888:3888 server.2=192.168.60.1:2888:3888
3,防火墙设置
(1)为了确保各服务器之间的通行,我们需要在各台服务器上执行如下命令打开需要的端口:firewall-cmd --permanent --add-port=2181/tcp firewall-cmd --permanent --add-port=2888/tcp firewall-cmd --permanent --add-port=3888/tcp firewall-cmd --reload
(2)或者直接关闭防火墙:
systemctl stop firewalld systemctl disable firewalld
4,启动运行
(1)依次进入各服务器的 ZooKeeper 的 bin 目录后执行如下命令启动 ZooKeeper 服务:
./zkServer.sh start
(2)启动后执行如下命令则可查看 ZooKeeper 状态:
./zkServer.sh status
- 如果显示如下内容,则表示当前节点是 Leader:
- 如果显示如下内容,则表示当前节点是 Follower(当 Leader 挂掉以后,会从 Follower 中选举一个成为 Leader)