Skip to main content
您好,欢迎光临IDC汇,需要什么服务器直接咨询客服,方便快捷。客服QQ 点击这里给我发消息
首页 > 服务器技术 »正文

Zookeeper 集群

服务器技术 webadmin 2020-06-28 08:46:41 查看评论 加入收藏

Zookeeper介绍

ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和组服务。所有这些类型的服务都以分布式应用程序的形式使用。它具有可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态 。

服务器规划

Zookeeper 集群

zookeeper集群中至少需要3台服务器,由于资源有限,我们就以3台服务器为例。

Zookeeper部署模式

Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。
   单机模式:Zookeeper只运行在一台服务器上,适合测试环境;
   伪集群模式:就是在一台物理机上运行多个 Zookeeper 实例;
   集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)。

Zookeeper配置文件

官方给出的配置文件模板为 zoo_sample.cfg ,我们在实际环境中使用时,需要将其改为 zoo.cfg 。在192.168.2.177上操作

[root@rocketmq-nameserver1 conf]# vim zoo.cfg
tickTime=2000initLimit=10syncLimit=5
dataDir=/wdata/zookeeper
dataLogDir=/wdata/zookeeper/logs
clientPort=2181
#maxClientCnxns=60
#autopurge.snapRetainCount=3
#autopurge.purgeInterval=1
server.1=192.168.2.177:2888:3888
server.2=192.168.2.178:2888:3888
server.3=192.168.2.180:2888:3888

配置文件说明:

server.X=A:B:C

其中 X 为服务器编号,A 为节点服务器的 IP 地址,B 为 Leader 通信端口,C 为 Zookeeper Leader选举端口

dataLogDir:zookeeper事务日志目录

dataDir:zookeeper数据存放目录

clientPort:客户端监听端口

syncLimit:集群中 flower 服务器(F)跟 leader(L)服务器之间的请求和答应最多能容忍的心跳数。

initLimit:集群中的 flower 服务器 (F) 与 leader 服务器 (L) 之间初始连接时能容忍的最多心跳数(tickTime的数量)。

tickTime:CS通信心跳时间,客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。

Zookeeper集群

搭建Zookeeper集群前,我们需要修改系统的环境变量

分别在 192.168.2.177、192.168.2.178、192.168.2.180 上修改

[root@rocketmq-nameserver1 ~]# vim .bash_profile
export JAVA_HOME=/usr/local/jdk1.8.0_201
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

复制配置文件

我们将已配置好的配置文件分发到另外两台(178和180)服务器

for i in 178 180; do scp zoo.cfg root@192.168.2.$i ; done

我们再到三台服务器上添加服务器编号文件,文件中的内容为服务器编号,服务器的编号必须跟配置文件中的编号对应,否则集群无法启动。

[root@rocketmq-nameserver1 zookeeper]# vim myid

Zookeeper 集群

其他两台服务器的编号分别为2和3。

到这里,配置已经完成,接下来我们启动 zookeeper 服务。

分别在 3 台服务器上运行

[root@rocketmq-nameserver1 ~]# zkServer.sh start

Zookeeper 集群

查看 zookeeper 服务启动状态

[root@rocketmq-nameserver1 ~]# zkServer.sh status

Zookeeper 集群

Zookeeper 集群

到这里,zookeeper 集群搭建完成。

下面介绍zookeeper的常见命令

conf:   输出相关服务配置的详细信息。
cons:  列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。
dump:列出未经处理的会话和临时节点。
envi:   输出关于服务环境的详细信息(区别于 conf 命令)。
reqs:  列出未经处理的请求
ruok: 测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。
stat:  输出关于性能和连接的客户端的列表。
wchs:列出服务器 watch 的详细信息。
wchc:通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。
wchp:通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。

zookeeper 命令行工具

通过 zkCli.sh 连接到 zookeeper 服务,如下

[root@rocketmq-nameserver2 ~]# zkCli.sh -server 192.168.2.178:2181

连接成功后会如下图所示:

Zookeeper 集群

在这里我们可以输入zookeeper命令进行相关操作。可以使用 help 进行帮助查询。下面是 zookeeper 命令行下的全部命令

stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port

具体命令的使用,可参阅官方文档,这里不做过多介绍。

广告06

微信