yujin2010good
作者yujin2010good·2018-11-16 11:37
系统工程师·大型零售巨头

Zookeeper3.4.1集群安装维护

字数 5104阅读 1679评论 0赞 2

环境:centos7.5
软件版本:zookeeper-3.4.11
jdk:1.8
主机信息:
2181
192.168.1.18
192.168.1.19
192.168.1.20

1、软件下载

wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

2、检查是否存在java版本

[root@ip-192-168-1-20 ~]# rpm -qa |grep java
如果有的话先删除
[root@localhost /]# rpm -qa|grep java
[root@localhost /]# rpm -e java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 --nodeps
[root@localhost /]# rpm -e java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64 --nodeps

mkdir /usr/local/java
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local/java/

3、jdk安装

wget ftp://10.249.100.249/pub/jdk/jdk8/*

4、安装软件

tar -zxvf zookeeper-3.4.11.tar.gz -C /usr/local/

vi /etc/profile
export ZK_HOME=/usr/local/zookeeper-3.4.11
export PATH=$ZK_HOME/bin:$PATH

source /etc/profile

5、配置Zookeeper的配置文件

cd /usr/local/zookeeper-3.4.11/conf
cp zoo_sample.cfg zoo.cfg

vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1= 192.168.1.18:2888:3888
server.2= 192.168.1.19:2888:3888
server.3= 192.168.1.20:2888:3888

建立目录
mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/logs

首先 修改 dataDir,顾名思义就是【数据目录】了,修改成我们自定义的即可。
然后看下面的三个server:
(1)为什么是三个,因为Zookeeper喜欢奇数不喜欢偶数。
(2)三行server解释

server.X=A:B:C
X-代表服务器编号
A-代表ip
B和C-代表端口,这个端口用来系统之间通信

根据dataDir进行X的配置【这里三台服务器不一样!!!】
找到Zookeeper目录,新建data文件夹,并且在data文件夹下面创建一个文件,叫myid,并且在文件里写入server.X对应的X

cd data
vim myid
之后会产生一个新文件,直接在里面写 X 即可
比如我配置的三个server,myid里面写的X就是server.X=ip:2888:3888 中ip所对应的X

分别写入 0 1 2

6、启动

source /etc/profile
启动
zkServer.sh start
[root@ip-192-168-1-18 data]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

检查状态
zkServer.sh status
三台状态如下
[root@ip-192-168-1-18 logs]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower

[root@ip-192-168-1-19 logs]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: leader

[root@ip-192-168-1-20 logs]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower

7、常用命令

启动ZK服务: bin/zkServer.sh start
查看ZK服务状态: bin/zkServer.sh status
停止ZK服务: bin/zkServer.sh stop
重启ZK服务: bin/zkServer.sh restart
连接服务器: zkCli.sh -server 127.0.0.1:2181

zkCli.sh -server 127.0.0.1:2181
help命令来查看帮助:
[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args

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

ls -- 查看某个目录包含的所有文件
[zk: 127.0.0.1:2181(CONNECTED) 2] ls /
[zookeeper]

ls2 -- 查看某个目录包含的所有文件,与ls不同的是它查看到time、version等信息[zk: 127.0.0.1:2181(CONNECTED) 3] ls2 /
[zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

create -- 创建znode,并设置初始内容
[zk: 127.0.0.1:2181(CONNECTED) 4] create /test "test"
Created /test
创建一个新的 znode节点“ test ”以及与它关联的字符串

get -- 获取znode的数据
[zk: 127.0.0.1:2181(CONNECTED) 5] get /test
test
cZxid = 0x100000005
ctime = Fri Aug 17 17:31:58 CST 2018
mZxid = 0x100000005
mtime = Fri Aug 17 17:31:58 CST 2018
pZxid = 0x100000005
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

set -- 修改znode内容
[zk: 127.0.0.1:2181(CONNECTED) 6] set /test "ricky"
cZxid = 0x100000005
ctime = Fri Aug 17 17:31:58 CST 2018
mZxid = 0x100000007
mtime = Fri Aug 17 17:32:27 CST 2018
pZxid = 0x100000005
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

delete -- 删除znode
[zk: 127.0.0.1:2181(CONNECTED) 7] delete /test

quit -- 退出客户端

help -- 帮助命令

======================================
ZooKeeper支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取ZooKeeper服务的当前状态及相关信息。
用户在客户端可以通过 telnet 或nc向ZooKeeper提交相应的命令

yum install nc

  1. 可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader
  2. 使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
  3. echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
  4. echo kill | nc 127.0.0.1 2181 ,关掉server
  5. echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
  6. echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
  7. echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于conf命令)。
  8. echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
  9. echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
  10. echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
  11. echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径

===========================
znode节点的状态信息:

使用get命令获取指定节点的数据时, 同时也将返回该节点的状态信息, 称为Stat. 其包含如下字段:

czxid. 节点创建时的zxid.
mzxid. 节点最新一次更新发生时的zxid.
ctime. 节点创建时的时间戳.
mtime. 节点最新一次更新发生时的时间戳.
dataVersion. 节点数据的更新次数.
cversion. 其子节点的更新次数.
aclVersion. 节点ACL(授权信息)的更新次数.
ephemeralOwner. 如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是ephemeral节点, ephemeralOwner值为0. 至于什么是ephemeral节点, 请看后面的讲述.
dataLength. 节点数据的字节数.
numChildren. 子节点个数.

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广