Zookeeper简单介绍
Zookeeper官方:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Zookeeper单机模式搭建
环境:Centos 7、jdk1.8、zookeeper-3.4.10
- 下载 Zookeeper【Zookeeper官网】
- 解压:
tar -zxvf zookeeper-3.4.10.tar.gz
- 进入 zookeeper-3.4.10/conf 目录将 zoo_sample.cfg 文件名修改为 zoo.cfg:
mv zoo_sample.cfg zoo.cfg
- 进入 zookeeper-3.4.10/conf 目录启动 Zookeeper :
sh zkServer.sh start
- 验证是否启动成功:
sh zkServer.sh status
(最后一行出现 standalone 则成功) - 连接 Zookeeper
sh zkCli.sh
Zookeeper集群模式搭建
- 修改 zoo.cfg 文件,在 zoo.cfg 文件中添加如下配置:
### server.A=B:C:D
### A:第几号服务器,B:服务IP,C:leader 和 follower 通讯端口,D:备用 leader 端口
server.1=192.168.43.200:2188:2888
server.2=192.168.43.201:2188:2888
server.3=192.168.43.202:2188:2888
- 将 zookeeper 拷贝到另外两台机器
scp -r zookeeper-3.4.10/ root@192.168.43.201:/tools
scp -r zookeeper-3.4.10/ root@192.168.43.202:/tools
- 设置 myid 文件,告诉 Zookeeper 当前是哪一台服务器
### 设置 1 号服务器
echo "1" >/tmp/zookeeper/myid
### 设置 2 号服务器
echo "2" >/tmp/zookeeper/myid
### 设置 3 号服务器
echo "3" >/tmp/zookeeper/myid
- 顺序启动这三个 Zookeeper 服务器
- 验证启动是否成功,打印日志最后一行出现 leader 或 follower 则启动成功
- 连接 Zookeeper 服务
sh zkCli.sh -server 192.168.43.201:2181,192.168.43.200:2181,192.168.43.202:2181
Zookeeper集群角色介绍
- Leader: ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO,写操作都走 leader,ZK中只有一个 leader
- Follower : Followe响应本服务器上的读请求外,处理leader的提议,leader提交该提议时在本地也进行提交。 注意: leader 和follower 构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。 帮助leader处理读请求,有投票权选举 leader。
- Observer : 提高读取吞吐量。observer 不需要将事务持久化到磁盘,若 observer 被重启,需要 leader 重新同步整个名字空间。 没有投票权利(因为 observer 不属于法定人数),只可以处理读请求