登录 |  注册 |  繁體中文


Zookeeper 安装和配置

分类: 人工智能&大数据 颜色:橙色 默认  字号: 阅读(1008) | 评论(0)

ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

一、ZooKeeper的安装

1. 单机模式

下载zookeeper的安装包之后, 解压到合适目录. 进入zookeeper目录下的conf子目录, 重命名zoo_sample.cfg为zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeperfile
clientPort=2181

参数说明:

  • tickTime: 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳,单位毫秒.
  • initLimit: follower和leader之间的最长心跳时间. 此时该参数设置为10, 说明时间限制为10倍tickTime, 即10*2000=20000ms=20s.
  • syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即10000ms=10s.
  • dataDir: 数据目录. 可以是任意目录.
  • clientPort: 监听client连接的端口号.
  • server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 此参数在集群环境下配置

至此, zookeeper的单机模式已经配置好了. 启动server只需运行脚本:

bin/zkServer.sh start  

通过jps命令可以查看ZooKeeper服务器进程,名称为QuorumPeerMain。

Server启动之后, 就可以启动client连接server了, 执行脚本:

bin/zkCli.sh -server localhost:2181  

关闭zookeeper:

bin/zkServer.sh stop  

2 集群模式

ZooKeeper集群中具有两个关键的角色:Leader和Follower。ZooKeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. 集群中所有的结点作为一个整体对分布式应用提供服务,每个结点之间都互相连接,ZooKeeper采用一种称为Leader election的选举算法。如果ZooKeeper集群在运行过程中Leader出了问题,系统会采用该算法重新选出一个Leader。

第一步: 修改集群模式的配置, 需要在每一台都配置

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeperfile
clientPort=2181

server.1=hd1:2888:3888   #hd1为hostname,详见上面的参数说明
server.2=hd2:2888:3888
server.3=hd3:2888:3888
server.4=hd4:2888:3888
server.5=hd5:2888:3888

第二步: 设置myid

在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,例如:

hadoop@hd1$ echo "1" > /data/zookeeperfile/myid
hadoop@hd2$ echo "2" > /data/zookeeperfile/myid  

按照上述进行配置即可

第三步:启动ZooKeeper集群

在ZooKeeper集群的每个结点上,执行启动ZooKeeper的脚本,无先后顺序,如下所示:

$ bin/zkServer.sh start

由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以日志部分的异常是可以忽略的。通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。

第四步:安装验证

可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),如下:

$ bin/zkServer.sh status
JMX enabled by default
Using config: /data/app/zookeeper-3.4.7/bin/../conf/zoo.cfg
Mode: leader

通过上面状态查询结果可见,hd2是集群的Leader,其余结点是Follower。

另外,可以通过客户端脚本,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接,例如:

$ bin/zkCli.sh -server hd3:2181



上一篇:ZooKeeper原理及实例   下一篇:Jvm内存管理

姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部