一、Zookeeper功能简介
ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。
二、ZooKeeper基本概念
一个 ZooKeeper 集群同一时刻只会有一个 Leader,其他都是 Follower 或 Observer。
ZooKeeper 配置很简单,每个节点的配置文件(zoo.cfg)都是一样的,只有 myid 文件不一样。myid 的值必须是 zoo.cfg中server.{数值} 的{数值}部分。
ZooKeeper 默认只有 Leader 和 Follower 两种角色,没有 Observer 角色。为了使用 Observer 模式,在任何想变成Observer的节点的配置文件中加入:peerType=observer 并在所有 server 的配置文件中,配置成 observer 模式的 server 的那行配置追加 :observer
三、ZooKeeper 的安装
1.安装准备
#下载cdh版本zookeeper wget http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.9.3.tar.gz
#解压文件到/opt tar -zxvf zookeeper-3.4.5-cdh5.9.3.tar.gz -C /opt &&mv zookeeper-3.4.5-cdh5.9.3 zookeeper #创建数据和日志目录 mkdir /opt/zookeeper/{data,log}
2.配置zoo.cfg文件
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper/data dataLogDir=/opt/zookeeper/log clientPort=2181 autopurge.snapRetainCount=3 autopurge.purgeInterval=6 server.1=zkh01:2888:3888 server.2=zkh02:2888:3888 server.3=zkh03:2888:3888
3.修改id
#zkh01节点(datanode1)配置id echo "1">/opt/zookeeper/data/myid #zk02节点(datanode2)配置id echo "2">/opt/zookeeper/data/myid #zk03节点(datanode3)配置id echo "3">/opt/zookeeper/data/myid
4.配置环境变量
#编辑文件/etc/profile.d/zookeeper.sh # ZOOKEEPER ENV export ZOOKEEPER_HOME=/opt/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin #使ZK环境变量生效。 source /etc/profile.d/zookeeper.sh
5.启动各节点zk
/opt/zookeeper/bin/zkServer.sh start
6.查看各节点启动状态和角色
[root@datanode01 ~]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: follower [root@datanode02 ~]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: leader [root@datanode03 ~]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: follower