当前位置: > > > CentOS下ZooKeeper的安装教程(集群模式)

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 文件:
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 下面:
cd /usr/local/zookeeper-data/tmp
vi myid

(2)里面数字根据前面集群服务器地址配置中 server 后面的数字来填写,比如:192.168.60.8 服务器上的 myid 文件中内容为 0192.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
评论0