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
其他两台服务器的编号分别为2和3。
到这里,配置已经完成,接下来我们启动 zookeeper 服务。
分别在 3 台服务器上运行
[root@rocketmq-nameserver1 ~]# zkServer.sh start
查看 zookeeper 服务启动状态
[root@rocketmq-nameserver1 ~]# zkServer.sh status
到这里,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命令进行相关操作。可以使用 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
具体命令的使用,可参阅官方文档,这里不做过多介绍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。