Zookeeper 集群
admin
2023-03-03 17:02:18
0次

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

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

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...