zookeeper单机模式与集群模式的配置与安装

Posted on 2017-11-21 10:21  李太阳  阅读(197)  评论(0编辑  收藏  举报

        ZooKeeper 是一个为分布式应用所设计的分布的、开源的协调服务。设计 ZooKeeper 的目的是为了减轻分布式应程序所承担的协调任务,

借助于 zookeeper 服务开发出高可靠的分布式协同程序。

       ZooKeeper 是构建dubbo框架最主要的组件学习zookeeper是学习dubbo框架的必学知识和最重要组成部分。

ZooKeeper 的安装:

方式1.单机模式安装:

  1. 解压

  2. 复制配置文件重命名为zoo.cfg:

            cd conf/

            cp zoo_sample.cfg  zoo.cfg

  1. 修改配置文件zoo.cfg内容:

#数据目录

dataDir=/home/admin/zookeeper/data

#日志目录

dataLogDir=/home/admin/zookeeper/logs

#心跳间隔时间,zookeeper中使用的基本时间单位,毫秒值。每隔2秒发送一个心跳

tickTime=2000

#leader与客户端连接超时时间。表示5个心跳间隔

initLimit=5

#LeaderFollower之间的超时时间,表示2个心跳间隔

syncLimit=2

#客户端连接端口

clientPort=2181


:tickTime :基本事件单元,以毫秒为单位。它来指跳,最的session 过期时间为两倍的tickTimedataDir :存储内存中数据库快照的位置,如果不设置参数,更新事务志将被存储到默认位置。clientPort :监听客户端连接的端口。


  1. 需要保证在dataDirdataLogDir指定的路径下有相应的文件夹

  2. 如果bin下面的.sh等文件无权限就执行chmod 777 zkCli.sh 给对应的可执行程序授权

  3. bin目录下执行./zkServer.sh start 启动

  4. Ps-ef |grep zoopkeeper 查看是否启动

  5. bin目录下运行./zkCli.sh –server 127.0.0.1:2181 连接到zookeeper


:使单机模式时户需要注意:这种配置式下没有ZooKeeper 副本,所以如果ZooKeeper 服务器出现故障,ZooKeeper服务将会停。



方式2.集群模式安装

集群模式有两种形式:

1)使用多台机器,在每台机器上运行一个ZooKeeper Server进程;

2)使用一台机器,在该台机器上运行多个ZooKeeper Server进程。

在生产环境中,一般使用第一种形式,在练习环境中,一般使用第二种形式。


操作和单机模式的安装类似,我们同样需要对JAVA 环境进设置,下载最新的ZooKeeper 稳定版本并配置相应的环境变量。不同之处在于每台机器上conf/zoo.cfg 配置件的参数设置,参考下的配置:

2.1.配置参数

#数据目录

dataDir=/home/admin/zookeeperGroup/zookeeper1/data

#日志目录

dataLogDir=/home/admin/zookeeperGroup/zookeeper1/logs

#心跳间隔时间,zookeeper中使用的基本时间单位,毫秒值。每隔2秒发送一个心跳

tickTime=2000

#leader与客户端连接超时时间。表示5个心跳间隔

initLimit=5

#LeaderFollower之间的超时时间,表示2个心跳间隔

syncLimit=2

#客户端连接端口。多个实例的端口配置不可重复

clientPort=2181

#server.NUM=IP:port1:port2  NUM表示本机为第几号服务器;IP为本机ip地址;

#port1leaderfollower通信端口;port2为参与竞选leader的通信端口

#多个实例的端口配置不能重复,如下:

server.1=127.0.0.1:2222:2225

server.2=127.0.0.1:3333:3335

server.3=127.0.0.1:4444:4445


注:“server.id=host:port:port”指出了不同的Zookeeper 的服务器的自身的标示,作为集群中一部分机器应该知道集群中其他的机器。用户可以从”server.id=host:port:port”中读取相关信息。在dataDir 目录创建一个文件名为myid 的文件,这个文件仅仅含有一行内容,指定的是自身的id 值。比如服务器id 1 就在这个文件写1.第一个port 是保持和主机通信,第二个port 是做选举的。

2.2.添加myid文件

dataDir指定的目录下添加myid文件,用于存储一个数值,用来作为该ZooKeeper Server进程的标识。即上面配置中的NUM。 

启动:./bin/zkServer.sh start 

 查看状态:./bin/zkServer.sh status

 连接集群./bin/zkCli.sh -server 127.0.0.1:2181

连接之后简单操作:

使 ls 命令来查看当前 ZooKeeper 中所包含的内容:
[zk: 127.0.0.1:2182(CONNECTED) 1] ls /
[zookeeper]
创建个新的 znode ,使 create /zk myData 。这个命令创建了个新的
znode 节点“ zk ”以及与它关联的字符串:
[zk: 127.0.0.1:2182(CONNECTED) 9] create /jiangzz "helloworld"
Created /jiangzz
[zk: 127.0.0.1:2182(CONNECTED) 10] ls /
[jiangzz, zookeeper]
运 get 命令来确认第步中所创建的 znode 是否包含我们所创建的字符
串:
[zk: 127.0.0.1:2182(CONNECTED) 11] get /jiangzz
"helloworld"
cZxid = 0x10000000b
ctime = Thu Aug 13 05:58:13 CST 2015
mZxid = 0x10000000b
mtime = Thu Aug 13 05:58:13 CST 2015
pZxid = 0x10000000b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
 通过 set 命令来对 zk 所关联的字符串进设置:
[zk: 127.0.0.1:2182(CONNECTED) 14] set /jiangzz "lovejava"
cZxid = 0x10000000b
ctime = Thu Aug 13 05:58:13 CST 2015
mZxid = 0x10000000c
mtime = Thu Aug 13 06:01:25 CST 2015
pZxid = 0x10000000b
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 10
numChildren = 0
我们将刚才创建的 znode 删除
[zk: 127.0.0.1:2182(CONNECTED) 15] delete /jiangzz
[zk: 127.0.0.1:2182(CONNECTED) 16] ls /
[zookeeper]
查看/jiangzz 已经被删除