ZooKeeper集群安装配置

ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。 ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。

ZooKeeper本身可以以单节点状态安装运行(ZooKeeper单机版安装配置可参考http://blog.whsir.com/post-3547.html),更多的情况下我们是通过分布式ZooKeeper集群,保证ZooKeeper的稳定性和可用性,从而实现分布式应用的可靠性。

ZooKeeper集群中主要有leader和follower两个角色。leader负责投票的发起和决议,更新系统状态;leader用于接受客户端请求并向客户端返回结果,在选主过程中参与投票。

一个ZooKeeper集群最好部署奇数个节点,即3、5、7,因为ZooKeeper集群是以宕机个数过半才会让整个集群宕机,所以部署ZooKeeper集群的时候最好是奇数。

 

zookeeper集群的部署实例:

当前使用三台机器进行演示,三台机器我都默认关闭了防火墙和selinux(如有需要自行设置端口,这里为了方便演示)

当前三台主机系统均为centos7.6,我这里三台机器提供的ip为

192.168.1.135
192.168.1.142
192.168.1.155

通过官网下载jdk8

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

ZooKeeper集群安装配置

将下载好的jdk8分别上传到三台主机上

因为我这里是测试环境,dataDir默认路径是/tmp/zookeeper,生产环境的话根据情况进行修改对应目录

myid根据server.1、server.2、server.3里设置的服务器IP对应,即server.2=192.168.1.142:2101的myid就是2

一、192.168.1.135配置

1、安装jdk8和zookeeper包

yum install jdk-8u192-linux-x64.rpm
wget -P /usr/local/src/ http://apache.fayea.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar xf /usr/local/src/zookeeper-3.4.13.tar.gz -C /usr/local/
ln -sv /usr/local/zookeeper-3.4.13/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

2、编辑zoo.cfg配置文件
vi zoo.cfg

配置文件内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.1=192.168.1.135:2101:2102
server.2=192.168.1.142:2101:2102
server.3=192.168.1.155:2101:2102

3、创建所需目录及设置myid
mkdir -p /tmp/zookeeper/{data,logs}
echo 1 > /tmp/zookeeper/data/myid

二、192.168.1.142配置

1、安装jdk8和zookeeper包

yum install jdk-8u192-linux-x64.rpm
wget -P /usr/local/src/ http://apache.fayea.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar xf /usr/local/src/zookeeper-3.4.13.tar.gz -C /usr/local/
ln -sv /usr/local/zookeeper-3.4.13/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

2、编辑zoo.cfg配置文件
vi zoo.cfg

配置文件内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.1=192.168.1.135:2101:2102
server.2=192.168.1.142:2101:2102
server.3=192.168.1.155:2101:2102

3、创建所需目录及设置myid
mkdir -p /tmp/zookeeper/{data,logs}
echo 2 > /tmp/zookeeper/data/myid

三、192.168.1.155配置

1、安装jdk8和zookeeper包

yum install jdk-8u192-linux-x64.rpm
wget -P /usr/local/src/ http://apache.fayea.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
tar xf /usr/local/src/zookeeper-3.4.13.tar.gz -C /usr/local/
ln -sv /usr/local/zookeeper-3.4.13/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

2、编辑zoo.cfg配置文件
vi zoo.cfg

配置文件内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.1=192.168.1.135:2101:2102
server.2=192.168.1.142:2101:2102
server.3=192.168.1.155:2101:2102

3、创建所需目录及设置myid
mkdir -p /tmp/zookeeper/{data,logs}
echo 3 > /tmp/zookeeper/data/myid

四、启动查看

最后三台机器分别启动服务

/usr/local/zookeeper/bin/zkServer.sh start

分别查看三台机器状态
/usr/local/zookeeper/bin/zkServer.sh status

可以看到三台机器会有两个follower和一个leader

 

附:

zookeeper启动服务脚本可以参考单机版配置http://blog.whsir.com/post-3547.html