Zookeeper 集群

Zookeeper介绍vim

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

服务器规划服务器

image

zookeeper集群中至少须要3台服务器,因为资源有限,咱们就以3台服务器为例。session

Zookeeper部署模式分布式

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

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:Cui

其中 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.17七、192.168.2.17八、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

image

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

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

分别在 3 台服务器上运行

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

image

查看 zookeeper 服务启动状态

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

image

image

到这里,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

链接成功后会以下图所示:

image

在这里咱们能够输入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

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

相关文章
相关标签/搜索