一。介绍
1. zookeeper 是一个分布式协调服务,就是为用户的分布式应用程序提供协调服务。
2. zookeeper 是为别的分布式程序服务的。
3. zookeeper 本身就是一个分布式程序(只要有半数以上节点存活,就能正常工作)
4. zookeeper 所提供的服务包括:主从协调,服务节点动态上下线,统一配置管理,分布式共享锁,统一名称服务等。
5. zookeeper 在底层只提供了两个功能:管理(存储,读取)用户提交的数据并为用户程序提供数据节点监听服务。
二。安装
1. 官网下载地址:http://hadoop.apache.org/
[root@host1 ~]# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
2. 解压文件
[root@host1 ~]# tar -xvf zookeeper-3.4.13.tar.gz
3. 删除运行不相关的文件
[root@host1 zookeeper-3.4.13]# rm -rf src/ *.xml *.txt dist-maven/ docs/
三。配置
1. 进入conf文件夹
[root@host1 zookeeper-3.4.13]# cd conf/ [root@host1 conf]#
2. 使配置生效(名字为 zoo.cfg 才生效)
[root@host1 conf]# cp zoo_sample.cfg zoo.cfg [root@host1 conf]#
3. 配置zoo.cfg
[root@host3 conf]# cat zoo.cfg # The number of milliseconds of each tick # 心跳周期为2000毫秒 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=/root/zkData # the port at which the clients will connect # 客户端连接端口 clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 # 默认端口 2888为主从通信端口 3888为投票选举端口 # 要在对应主机的数据目录(dataDir /root/zkData)创建名为myid的文件,里面为server.的id号 server.1=host1:2888:3888 server.2=host2:2888:3888 server.3=host3:2888:3888 [root@host3 conf]#
4. 在数据目录创建myid
[root@host1 conf]# mkdir /root/zkData [root@host1 conf]# cd /root/zkData/ [root@host1 zkData]# echo 1 > myid [root@host1 zkData]# ll 总用量 4 -rw-r--r-- 1 root root 2 9月 1 17:55 myid [root@host1 zkData]# cat myid 1 [root@host1 zkData]#
5. 拷贝zookeeper-3.4.13到其他两台
[root@host1 ~]# scp -r zookeeper-3.4.13 root@host2:/root
[root@host1 ~]# scp -r zookeeper-3.4.13 host3:/root
6. 创建 host2 主机的myid
[root@host2 ~]# mkdir /root/zkData [root@host2 ~]# cd /root/zkData/ [root@host2 zkData]# echo 2 > myid [root@host2 zkData]# ll 总用量 4 -rw-r--r-- 1 root root 2 9月 2 02:50 myid [root@host2 zkData]# cat myid 2 [root@host2 zkData]#
7. 创建 host3 主机的myid
[root@host3 ~]# mkdir /root/zkData [root@host3 ~]# cd /root/zkData/ [root@host3 zkData]# echo 3 > myid [root@host3 zkData]# ll 总用量 4 -rw-r--r-- 1 root root 2 9月 2 02:52 myid [root@host3 zkData]# cat myid 3 [root@host3 zkData]#
四。启动zookeeper
1. 启动第一台(没过半数,不能正常工作)
[root@host1 bin]# ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /root/zookeeper-3.4.13/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@host1 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/zookeeper-3.4.13/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [root@host1 bin]#
2. 启动第二台(刚开始无历史数据启动时,投票给myid大的节点)
[root@host2 bin]# ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /root/zookeeper-3.4.13/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@host2 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/zookeeper-3.4.13/bin/../conf/zoo.cfg Mode: leader [root@host2 bin]#
3. 启动第二台,有主节点了(leader),就直接为从节点(follower)
[root@host3 bin]# ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /root/zookeeper-3.4.13/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@host3 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/zookeeper-3.4.13/bin/../conf/zoo.cfg Mode: follower [root@host3 bin]#
4. 停止zookeeper
[root@host1 bin]# ./zkServer.sh stop ZooKeeper JMX enabled by default Using config: /root/zookeeper-3.4.13/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED [root@host1 bin]#