欢迎关注微信公众号:互联网全栈架构
上篇文章我们介绍了ZooKeeper的基本知识,包括它的基本概念、应用场景、数据模型等,并在最后演示了ZooKeeper的安装过程,不过,这是单机的安装方法,而在分布式高可用的应用环境中,单机显然是不能满足要求的,今天,我们就来讲解ZooKeeper的集群安装,当然,这也只能算是伪集群,因为所有操作都是在一台机器上面进行的,不过,在真正多台机器中安装的时候,主要操作步骤基本一样,所以并不影响对于安装过程的演示。
我们先来看看ZooKeeper集群的基本概念,在ZK集群中,服务器一共有三种角色:
Leader:它是整个集群中的核心,一个集群中只能有一个Leader节点,它主要处理客户端的读写处理,以及集群内部各节点间的调度协调等工作。只有Leader节点才能处理客户端的写请求。
Follower:处理客户端请求,参与投票,写请求转发至Leader节点。
Observer:功能与Follower节点基本一致,它可以处理客户端请求,将请求转发至Leader节点,但它不参与投票。在中小规模的ZooKeeper集群中,一般不包括此种类型节点。
下面,我们来安装ZooKeeper集群,首先把ZK安装包下载到目录/usr/local下面并解压,并重名配置文件:zoo_sample.cfg具体步骤可以参见:“八面玲珑”的ZooKeeper入门介绍。然后切换到ZooKeeper下面,重命名配置文件并修改文件内容:
cp conf/zoo_sample.cfg conf/zoo1.cfg
vim conf/zoo1.cfg
并配置如下信息(如果配置文件中已经存在,则更新相应信息,否则新增配置项):
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper-1
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
这些配置项的含义如下:
tickTime:心跳间隔时间,单位为毫秒
initLimit:集群中Follower与Leader初始连接时,最多能容忍的心跳数(也就是tickTime)
syncLimit:集群中Follower与Leader之间,请求与应答能容忍最多的心跳数(也就是tickTime)
dataDir:数据目录
clientPort:客户端连接ZooKeeper的端口
server.1=127.0.0.1:2888:3888:数字1表示服务器编号,127.0.0.1表示服务器的IP地址,第一个端口2888表示服务器之间通信的端口,第二个端口3888表示Leader选举的端口
然后把zoo1.cfg这个配置文件再复制两份,变成zoo2.cfg和zoo3.cfg,修改里面的两个配置项dataDir和clientPort即可,分别如下:
dataDir=/tmp/zookeeper-2
clientPort=2182
dataDir=/tmp/zookeeper-3
clientPort=2183
接下来需要创建服务器ID,先在tmp中创建三个存放数据的目录,然后在这三个目录中创建文件myid文件,文件内容分别为当前服务器的编号,也就是1,2,3:
mkdir /tmp/zookeeper-1
mkdir /tmp/zookeeper-2
mkdir /tmp/zookeeper-3
在第一个服务为例,先切换到目录/tmp/zookeeper-1,然后创建文件myid,并写入内容1,另外两个服务也是同样的操作,只不过是在各自的目录下创建myid,并写入内容2和3:
cd /tmp/zookeeper-1
touch myid
vim myid
1
再切换到ZooKeeper根目录,启动三个服务:
bin/zkServer.sh start conf/zoo1.cfg
bin/zkServer.sh start conf/zoo2.cfg
bin/zkServer.sh start conf/zoo3.cfg
再检查一下服务器的状态,可以看到,目前第二个服务为Leader角色:
这样,ZooKeeper集群服务就基本搭建起来了,当然,这里是入门级的介绍,ZK本身自带的参数也还有很多,在实际应用还需要根据业务场景的需要作进一步的修改和优化。
都看到这里了,请帮忙一键三连啊,也就是点击文末的在看、点赞、分享,这样会让我的文章让更多人看到,也会大大地激励我进行更多的输出,谢谢!
鸣谢:
https://zookeeper.apache.org/doc/current/zookeeperOver.html
https://blog.51cto.com/muxiaonong/4198080
推荐阅读: