ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。 ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
ZooKeeper本身可以以单节点状态安装运行(ZooKeeper单机版安装配置可参考https://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
将下载好的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包
1 2 3 4 5 6 |
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配置文件
1 |
vi zoo.cfg |
配置文件内容如下
1 2 3 4 5 6 7 8 9 |
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
1 2 |
mkdir -p /tmp/zookeeper/{data,logs} echo 1 > /tmp/zookeeper/data/myid |
二、192.168.1.142配置
1、安装jdk8和zookeeper包
1 2 3 4 5 6 |
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配置文件
1 |
vi zoo.cfg |
配置文件内容如下
1 2 3 4 5 6 7 8 9 |
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
1 2 |
mkdir -p /tmp/zookeeper/{data,logs} echo 2 > /tmp/zookeeper/data/myid |
三、192.168.1.155配置
1、安装jdk8和zookeeper包
1 2 3 4 5 6 |
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配置文件
1 |
vi zoo.cfg |
配置文件内容如下
1 2 3 4 5 6 7 8 9 |
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
1 2 |
mkdir -p /tmp/zookeeper/{data,logs} echo 3 > /tmp/zookeeper/data/myid |
四、启动查看
最后三台机器分别启动服务
1 |
/usr/local/zookeeper/bin/zkServer.sh start |
分别查看三台机器状态
1 |
/usr/local/zookeeper/bin/zkServer.sh status |
可以看到三台机器会有两个follower和一个leader
附:
zookeeper启动服务脚本可以参考单机版配置https://blog.whsir.com/post-3547.html
原文链接:ZooKeeper集群安装配置,转载请注明来源!