zookeeper单机+集群部署

1. zookeeper单机版安装 

1、 安装条件
想要安装zookeeper,必须先在linux中安装好jdk

2、 下载并解压zookeeper压缩包
1>. 先进入/usr/local/目录,也可以是其他的目录:
[root@localhost /]# cd /usr/local

2>. zookeeper安装包直接下载
[root@localhost local]# wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
-- 所有版本的zk下载地址 : http://archive.apache.org/dist/zookeeper/

3>. 解压:
[root@localhost local]# tar -zxvf zookeeper-3.4.13.tar.gz

3、 编辑配置文件
1>.进入conf目录:
[root@localhost local]# cd zookeeper-3.4.13/conf

2>. 将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名)
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

3>. 进入zoo.cfg文件进行编辑
[root@localhost conf]# vim zoo.cfg
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/log
注意:如果想配置集群的话,请在clientPort下面添加服务器的ip。如
server.1=101.101.101.101:2888:3888

4>. 创建zookeeper所需目录目录。
[root@localhost conf]# mkdir /data/zookeeper/data -p
[root@localhost conf]# mkdir /data/zookeeper/log -p

5>. 如果是配置集群,还需要在前面配置过的dataDir路径下新增myid文件
[root@localhost conf]# cd /data/zookeeper/data
[root@localhost data]# vim myid
在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。

4、 配置环境变量
1>. 上面的操作都完事之后,我们需要配置一下环境变量,配置环境变量的命令如下:
[root@localhost zookeeper-3.4.13]# vim /etc/profile
export ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.13/
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_INSTALL/bin
[root@localhost zookeeper-3.4.13]# source /etc/profile

5、 启动zookeeper
1>. 启动zookeeper
[root@localhost data]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
2>. 启动状态检查
[root@VM-16-13-centos zookeeper-3.4.13]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: standalone

3>. zookeeper的服务端启动后,还需要启动zookeeper的客户端:
[root@localhost zookeeper-3.4.13]# zkCli.sh
Connecting to localhost:2181
..........
..........
..........
Welcome to ZooKeeper!
2018-10-25 21:04:54,407 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-10-25 21:04:54,471 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
[zk: localhost:2181(CONNECTING) 0] 2018-10-25 21:04:54,501 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10000712e6f0000, negotiated timeout = 30000

WATCHER::
WatchedEvent state:SyncConnected type:None path:null

6、 zookeeper使用<通过 ./zkCli.sh 进入客户端后,就可以使用命令来操作zookeeper>

1>. 创建节点:使用create命令,可以创建一个zookeeper节点。
create [-s] [-e] path data acl
-- 其中-s表示顺序节点,-e表示临时节点。默认情况下,创建的是持久节点。
-- path是节点路径,data是节点数据,acl是用来进行权限控制的。
创建一个叫做/zk-test的节点,内容是"123"
[zk: localhost:2181(CONNECTED) 0] create /zk-test 123
Created /zk-test
创建/zk-test的子节点book,内容是"233"
[zk: localhost:2181(CONNECTED) 7] create /zk-test/book 233
Created /zk-test/book

2>. 查看节点内容:使用get命令,可以获取zookeeper指定节点的内容和属性信息。
[zk: localhost:2181(CONNECTED) 1] get /zk-test
123
cZxid = 0x3a
ctime = Sun Nov 11 21:50:44 CST 2018
mZxid = 0x3a
mtime = Sun Nov 11 21:50:44 CST 2018
pZxid = 0x3a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

3>. 查看子节点:使用ls命令可以查看指定节点下的所有子节点
以下查看根目录下的所有子节点:
[zk: localhost:2181(CONNECTED) 2] ls /
[zk-test, zookeeper]
查看zk-test节点的子节点:
[zk: localhost:2181(CONNECTED) 3] ls /zk-test
[book]

4>. 更新节点内容:使用set命令,更新节点内容,格式为: set path data 其中的data就是要更新的新内容。
[zk: localhost:2181(CONNECTED) 4] set /zk-test 456
cZxid = 0x3a
ctime = Sun Nov 11 21:50:44 CST 2018
mZxid = 0x3b
mtime = Sun Nov 11 22:05:20 CST 2018
pZxid = 0x3a
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
在输出的信息中,可以发现,dataVersion的值由原来的0 变成了 1,这是因为刚才的更新操作导致该节点的数据版本也发生变更。

5>. 删除节点:使用delete命令来删除节点,如下:
[zk: localhost:2181(CONNECTED) 11] delete /zk-test
Node not empty: /zk-test
可以发现,一个节点存在子节点时,无法删除该节点,必须将其子节点删除完毕方可以删除该节点

删除子节点/zk-test/book,如下:
[zk: localhost:2181(CONNECTED) 12] delete /zk-test/book
WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/zk-test/book
zookeeper中的watcher会监控节点,当子节点发生变化时会发出通知。此时提示子节点 /zk-test/book删除成功。

继续尝试删除节点 /zk-test,删除成功。
[zk: localhost:2181(CONNECTED) 13] ls /zk-test
[]
[zk: localhost:2181(CONNECTED) 14] delete /zk-test
[zk: localhost:2181(CONNECTED) 15] ls /
[]

2. zookeeper集群安装 

1. 下载zookeeper安装压缩包
    wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.10.tar.gz
2. 解压zookeeper压缩包
    tar -zxvf zookeeper-3.4.10.tar.gz
3. 配置zookeeper参数
    cd zookeeper-3.4.10
    # 复制之后修改配置文件
    cp conf/zoo_sample.cfg conf/zoo.cfg
    # 创建zookeeper数据存储目录+日志存储目录
    mkdir -p /software/zookeeper-3.4.10/data
    mkdir -p /software/zookeeper-3.4.10/log
    # 配置文件内容
    vim zoo.conf 
       # The number of milliseconds of each tick
       tickTime=2000
       # The number of ticks that the initial 
       # synchronization phase can take
       initLimit=10
       # The number of ticks that can pass between 
       # sending a request and getting an acknowledgement
       syncLimit=5
       # the directory where the snapshot is stored.
       # do not use /tmp for storage, /tmp here is just 
       # example sakes.
       dataDir=/software/zookeeper-3.4.10/data
       dataLog=/software/zookeeper-3.4.10/log
       # the port at which the clients will connect
       clientPort=2181
       server.0=master:8880:7770
       server.1=slave1:8881:7771
       server.2=slave2:8882:7772
4. 将安装包分发至集群其他节点上
    scp -r /software/zookeeper-3.4.10 root@slave1:/software/
    scp -r /software/zookeeper-3.4.10 root@slave2:/software/
5. 修改各个节点上配置数据
    vim  /software/zookeeper-3.4.10/data/myid
       master 上输入0  slave1上输入1  slave2上输入2
6. 将zk信息输入环境变量中/etc/profile
      ZK_HOME=/software/zookeeper-3.4.10
      export PATH=$PATH:$ZK_HOME/bin
   将zk信息输入用户环境 ~/.bash_profile
      ZK_HOME=/software/zookeeper-3.4.10
      export PATH=$PATH:$ZK_HOME/bin
   将环境信息复制给slave1,slave2
      scp ~/.bash_profile root@slave1:~
      scp /etc/profile root@slave1:/etc/
   刷新环境
      source /etc/profile  
      source ~/.bash_profile

7. 创建zk启动集群操作脚本
    vim zkClu.sh
       #!/bin/bash
       help(){
         echo "start: start server"
         echo "stop: stop server"
         echo "restart: restart server"
         echo "status: status server"
         echo "help: help info"
       }

       # 通过第一个参数控制具体行为
       case $1 in
       start)
            zkServer.sh start
            ssh slave1 sh $ZK_HOME/zkServer.sh start
            ssh slave2 sh $ZK_HOME/zkServer.sh start
         ;;
       stop)
            zkServer.sh stop
            ssh slave1 sh $ZK_HOME/zkServer.sh stop
            ssh slave2 sh $ZK_HOME/zkServer.sh stop
         ;;
       restart)
            zkServer.sh restart
            ssh slave1 sh $ZK_HOME/zkServer.sh restart
            ssh slave2 sh $ZK_HOME/zkServer.sh restart
         ;;
       status)
            zkServer.sh status
            ssh slave1 sh $ZK_HOME/zkServer.sh status
            ssh slave2 sh $ZK_HOME/zkServer.sh status
        ;;
       help)
         help
         ;;
       *)
         help
         ;;
       esac
       exit $?

    chmod 777 zkClu.sh
 8. 启动zk集群
     ./zkClu.sh start
 9. 校验zk集群状态
     ./zkClu.sh status

 

posted @ 2021-06-10 14:51  521pingguo1314  阅读(255)  评论(0编辑  收藏  举报