文章目录
  1. 1. 背景介绍
  2. 2. 约定
  3. 3. 机器列表
  4. 4. 安装前准备
    1. 4.1. 分别登录3台机器进行主机名设置、hosts设置、ssh免密登录设置
    2. 4.2. 设置myid
  5. 5. 下载Zookeeper并配置
  6. 6. 设置环境变量、启动ZooKeeper集群
  7. 7. 安装验证
  8. 8. 基本命令
  9. 9. zookeeper四字命令的使用
  10. 10. 结束语

背景介绍

  本文介绍ZooKeeper-3.4.8版本的分布式安装,力求提供细致、精确的安装指导。本文的安装环境是64位的CentOS 7。

约定

  将ZooKeeper安装在/opt/zookeeper目录,其中/opt/zookeeper是指向/opt/zookeeper-3.4.8的软链接。ZooKeeper的数据目录设置为/opt/zookeeper/data。

机器列表

机器IP 主机名
10.160.233.44 zoo1
10.160.233.45 zoo2
10.160.233.46 zoo3

安装前准备

分别登录3台机器进行主机名设置、hosts设置、ssh免密登录设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
### ssh root@10.160.233.44 登录到目标机器 ###
[root@zoo1 ~]# hostnamectl set-hostname zoo1
### ssh root@10.160.233.45 登录到目标机器 ###
[root@zoo2 ~]# hostnamectl set-hostname zoo2
### ssh root@10.160.233.46 登录到目标机器 ###
[root@zoo3 ~]# hostnamectl set-hostname zoo3
### 下面以zoo1为例,实际需要分别在3台机器上进行以下操作 ###
[root@zoo1 ~]# cat /etc/sysconfig/network
[root@zoo1 ~]# cat >> /etc/hosts << EOF

10.160.233.44 zoo1
10.160.233.45 zoo2
10.160.233.46 zoo3
EOF
[root@zoo1 ~]# ssh-keygen -t rsa -P ''
[root@zoo1 ~]# ls -l /root/.ssh/
[root@zoo1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@zoo2
[root@zoo1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@zoo3
[root@zoo1 ~]# ssh root@zoo2
[root@zoo1 ~]# ssh root@zoo3

设置myid

  在Zookeeper配置文件中dataDir指定的数据目录(/opt/zookeeper/data)下,创建文件myid,文件内容为一个正整数值,用来唯一标识当前机器,因此不同机器的数值不能相同,建议从1开始递增标识,以方便记忆和管理。本文约定如下:

机器IP myid
10.160.233.44 1
10.160.233.45 2
10.160.233.46 3

可以使用echo命令直接写进去

1
2
3
4
5
[root@zoo1 ~]# mkdir -p /opt/zookeeper/{data,logs}
[root@zoo1 ~]# ls -ltr /opt/zookeeper/
[root@zoo1 ~]# echo 1 > /opt/zookeeper/data/myid
[root@zoo2 ~]# echo 2 > /opt/zookeeper/data/myid
[root@zoo3 ~]# echo 3 > /opt/zookeeper/data/myid

下载Zookeeper并配置

  Zookeeper是java应用,因此需要java运行环境,对于java环境的配置可以参考我以前的文章在CentOS7上用systemctl配置tomcat 8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@zoo1 ~]# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz -P /opt
[root@zoo1 ~]# cd /opt/
[root@zoo1 opt]# scp -r zookeeper-3.4.8.tar.gz root@zoo2:/opt
[root@zoo1 opt]# scp -r zookeeper-3.4.8.tar.gz root@zoo3:/opt
[root@zoo1 opt]# tar -zxvf zookeeper-3.4.8.tar.gz
[root@zoo1 ~]# ln -s /opt/zookeeper-3.4.8 zookeeper
[root@zoo1 opt]# cat > /opt/zookeeper/conf/zoo.cfg << EOF
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
clientPort=2181
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
maxClientCnxms=500
minSessionTimeout=30000
maxSessionTimeout=60000
EOF
[root@zoo1 opt]# scp -r /opt/zookeeper/conf/zoo.cfg root@zoo2:/opt/zookeeper/conf
[root@zoo1 opt]# scp -r /opt/zookeeper/conf/zoo.cfg root@zoo3:/opt/zookeeper/conf

说明:
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

设置环境变量、启动ZooKeeper集群

1
2
3
### 下面以zoo1为例,实际需要分别在3台机器上进行以下操作 ###
[root@zoo1 opt]# echo -e '\n\nexport PATH=/opt/zookeeper/bin:$PATH\n' >> /etc/profile && source /etc/profile
[root@zoo1 opt]# zkServer.sh start

安装验证

  脚本zkServer.sh不但可以用来启动ZooKeeper,还可以用来查看状态、停止。使用方式为带一个status参数、stop参数。

1
2
3
4
[root@zoo1 opt]# zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: leader

基本命令

1
[root@zoo1 opt]# zkCli.sh -server localhost:2181
  1. 查看当前节点列表
    1
    2
    [zk: localhost:2181(CONNECTED) 1] ls /
    [zookeeper]
  • 创建节点

    1
    2
    3
    4
    [zk: localhost:2181(CONNECTED) 2] create /test "test"
    Created /test
    [zk: localhost:2181(CONNECTED) 3] ls /
    [zookeeper, test]
  • 查看节点数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [zk: localhost:2181(CONNECTED) 4] get /test
    "test"
    cZxid = 0x300000007
    ctime = Thu Sep 24 05:54:51 PDT 2015
    mZxid = 0x300000007
    mtime = Thu Sep 24 05:54:51 PDT 2015
    pZxid = 0x300000007
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 6
    numChildren = 0
  • 设置节点数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [zk: localhost:2181(CONNECTED) 7] set /test "111111" 
    cZxid = 0x300000007
    ctime = Thu Sep 24 05:54:51 PDT 2015
    mZxid = 0x300000008
    mtime = Thu Sep 24 05:57:40 PDT 2015
    pZxid = 0x300000007
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 8
    numChildren = 0
    [zk: localhost:2181(CONNECTED) 8] get /test
    "111111"
    cZxid = 0x300000007
    ctime = Thu Sep 24 05:54:51 PDT 2015
    mZxid = 0x300000008
    mtime = Thu Sep 24 05:57:40 PDT 2015
    pZxid = 0x300000007
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 8
    numChildren = 0
  • 删除节点

    1
    2
    3
    [zk: localhost:2181(CONNECTED) 9] delete /test
    [zk: localhost:2181(CONNECTED) 10] ls /
    [zookeeper]

zookeeper四字命令的使用

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

查看连接到结点上所有的client信息,被选作leader还是 follower

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@zoo2 ~]# yum -y install nc
[root@zoo2 ~]# echo stat|nc 127.0.0.1 2181
Zookeeper version: 3.4.8-1, built on 02/06/2016 03:18 GMT
Clients:
/10.41.51.7:59655[1](queued=0,recved=34413,sent=34417)
/127.0.0.1:55594[0](queued=0,recved=1,sent=0)
/10.41.51.7:59603[1](queued=0,recved=34426,sent=34431)
/10.41.51.7:59436[1](queued=0,recved=34502,sent=34518)
Latency min/avg/max: 0/0/45
Received: 7768148
Sent: 7771067
Connections: 4
Outstanding: 0
Zxid: 0xb0000c4ec
Mode: follower
Node count: 227

结束语

至此,ZooKeeper分布式安装大告成功!更多细节,请浏览官方文档:http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html

文章目录
  1. 1. 背景介绍
  2. 2. 约定
  3. 3. 机器列表
  4. 4. 安装前准备
    1. 4.1. 分别登录3台机器进行主机名设置、hosts设置、ssh免密登录设置
    2. 4.2. 设置myid
  5. 5. 下载Zookeeper并配置
  6. 6. 设置环境变量、启动ZooKeeper集群
  7. 7. 安装验证
  8. 8. 基本命令
  9. 9. zookeeper四字命令的使用
  10. 10. 结束语