linux中zookeeper-3.4.10安装,集群

一,安装

第一步:zookeeper安装

    1   下载   wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

    2   解压 zookeeper-3.4.10.tar.gz

       进入  zookeeper-3.4.10/conf目录,把zoo_sample.cfg 配置文件改名为 zoo.cfg 

       因为zookeeper启动默认加载的配置文件为zoo.cfg

    3. 启动服务,与客户端

      进入zookeeper-3.4.10/bin 目录    

     [root@localhost bin]# sh zkServer.sh start   //启动

     [root@localhost bin]# sh zkServer.sh stop   //关闭

     [root@localhost bin]# sh zkCli.sh    //连接服务端

第二步,集群相关配置

 安装好2n+1台虚拟机. 如 分别在三台虚拟机上安装好,如192.168.1.128,192.168.1.129,192.168.1.130

     1.在/conf/zoo.cfg 添加,三台虚拟机上保持一致

           #dataDir=/opt/module/zookeeper-3.4.10/zkData
           #dataLogDir=/opt/module/zookeeper-3.4.10/logs/transaction
           server.1=192.168.1.128:2888:3888
           server.2=192.168.1.129:2888:3888
           server.3=192.168.1.130:2888:3888

注: server.<myid>=<host>:2888:3888           

此参数专门用于设置Zookeeper集群,其中<myid>指的是zookeeper服务器ID,主要通过dataDir路径下的myid文件来确定,此文件需要自己手动创建,文件中内容只能有对应服务器ID,不能有任何多余内容。<host>则指的是zookeeper服务器主机ip,其中2888和3888分别指的是zookeeper集群仲裁模式(完全分布式)下Leader和Follower通信端口,以及zookeeper集群选取Leader时各个服务器之间的通信端口

      2.zoo.cfg配置默认的数据存储在 dataDir=/tmp/zookeeper

        在/tmp/zookeeper 目录中新建文件 myid

        [root@localhost conf]# vim /tmp/zookeeper/myid

        192.168.1.128中 myid的内容 为 1, 192.168.1.129中 myid的内容 为 2, 192.168.1.130中 myid的内容 为 3

       与zoo.cfg 中保持一致

       3.重新启动三台虚拟机的zookeeper.

       [root@localhost bin]# tail -fn 100 zookeeper.out    //查看日记

        如果2888,3888两个端口没有打开的话会报错。

       [root@localhost bin]# systemctl stop firewalld   //  测试的话直接 关掉防火墙 

      4.查看主从,首次启动的时候,一般是先开启的为主,后开的为从.后面如果leader挂掉了,则通过leader选举机制重新选取

          [root@localhost bin]# sh zkServer.sh status
          ZooKeeper JMX enabled by default
          Using config: /data/program/zookeeper-3.4.10/bin/../conf/zoo.cfg
           Mode: leader

          [root@localhost bin]# sh zkServer.sh status
          ZooKeeper JMX enabled by default
          Using config: /data/program/zookeeper-3.4.10/bin/../conf/zoo.cfg
          Mode: follower
 

二,zookeeper的基本操作   

随便打开客户端 192.168.1.128,创建一个key,在其它几台集群机器上可以看到添加了相应的key

   [root@localhost bin]# sh zkCli.sh  

  [zk: localhost:2181(CONNECTED) 4] create /test1 a
  [zk: localhost:2181(CONNECTED) 5] ls /
  [zookeeper, test1]

1.创建节点  create [-s] [-e] path data acl

//同一节点下不能创建重复的节点
[zk: localhost:2181(CONNECTED) 19] create /lock v  
Created /lock
[zk: localhost:2181(CONNECTED) 20] create /lock v
Node already exists: /lock

2.创建有序节点

[zk: localhost:2181(CONNECTED) 28] create -s /lock/ v
Created /lock/0000000000
[zk: localhost:2181(CONNECTED) 29] create -s /lock/ v
Created /lock/0000000001
[zk: localhost:2181(CONNECTED) 30] create -s /lock/ v
Created /lock/0000000002
[zk: localhost:2181(CONNECTED) 31] create -s /lock/ v
Created /lock/0000000003
[zk: localhost:2181(CONNECTED) 32] create -s /lock/ v
Created /lock/0000000004
[zk: localhost:2181(CONNECTED) 34] ls /lock 
[0000000001, 0000000000, 0000000003, 0000000002, 0000000004]
[zk: localhost:2181(CONNECTED) 35] 

3.创建临时节点

[zk: localhost:2181(CONNECTED) 0] create -e /temp a
Created /temp

//退出重新进入,/temp节点被删除了
[zk: localhost:2181(CONNECTED) 3] quit
Quitting...
2019-09-29 15:30:44,083 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x16d7bc6e3490002 closed
2019-09-29 15:30:44,089 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x16d7bc6e3490002
[root@localhost bin]# sh zkCli.sh 
[zk: localhost:2181(CONNECTED) 0] ls / 
[zookeeper, lock]

4.删除节点

//存在子节点时不能删除,须把子节点先删除
[zk: localhost:2181(CONNECTED) 47] delete /lock
Node not empty: /lock

[zk: localhost:2181(CONNECTED) 48] delete /lock/0000000004
[zk: localhost:2181(CONNECTED) 49] ls /lock               
[0000000001, 0000000000, 0000000003, 0000000002]

 5.修改

//修改
[zk: localhost:2181(CONNECTED) 13] set /tem a001
cZxid = 0x20
ctime = Sun Sep 29 15:44:08 CST 2019
mZxid = 0x21
mtime = Sun Sep 29 15:58:28 CST 2019
pZxid = 0x20
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
//查看
[zk: localhost:2181(CONNECTED) 14] get /tem     
a001
cZxid = 0x20
ctime = Sun Sep 29 15:44:08 CST 2019
mZxid = 0x21
mtime = Sun Sep 29 15:58:28 CST 2019
pZxid = 0x20
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

6.watch机制    get path [watch],监听事件被触发一次后即失效

//watch /tem节点
[zk: localhost:2181(CONNECTED) 18] get /tem true 
a001
cZxid = 0x20
ctime = Sun Sep 29 15:44:08 CST 2019
mZxid = 0x21
mtime = Sun Sep 29 15:58:28 CST 2019
pZxid = 0x20
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 19] 
[zk: localhost:2181(CONNECTED) 19] 
[zk: localhost:2181(CONNECTED) 19] 
[zk: localhost:2181(CONNECTED) 19] 

//当/tmp节点被修改时,会触发
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/tem

三,应用

1,负载均衡

  •   拿到目标服务下的所有地址
  •   动态感知

2,分布式锁(有序节点,watch机制)

3,全局ID(基于有序节点实现)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值