官方:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
伪分布式集群就是在一台机器部署多个zk应用,部署之前服务器需要有jdk环境。使用 java -version可以显示相关java信息才可以进行zookeeper搭建。
官网下载:zookeeper官网
解压tar zxvf zookeeper-3.4.11.tar.gz
进入conf目录下:
cp zoo-sample.cfg zoo1.cfg
cp zoo-sample.cfg zoo2.cfg
cp zoo-sample.cfg zoo3.cfg
分别对zoo1.cfg、zoo2.cfg、zoo3.cfg文件进行编辑:
#不同的地方,下面分别为d_1、d_2、d_3
dataDir=/apps/servers/data/d_1
#同上
dataLogDir=/apps/servers/logs/logs_1
#不同zoo.cfg修改自己的属性和端口号,为分布式端口号需要不一样
#分别是2181、2182、2183
clientPort=2181
#每个配置文件都需要配置如下三条,互相告知集群里有谁
#第一个端口号用于集群通讯,第二个端口号用于集群选举
server.1=192.168.31.132:2187:2887
server.2=192.168.31.132:2188:2888
server.3=192.168.31.132:2189:2889
分别创建data目录和日志目录:
mkdir /apps/servers/data/d_1
mkdir /apps/servers/data/d_2
mkdir /apps/servers/data/d_3
mkdir /apps/servers/logs/logs_1
mkdir /apps/servers/logs/logs_2
mkdir /apps/servers/logs/logs_3
echo "1" > /apps/servers/data/d_1/myid
echo "2" >/apps/servers/data/d_2/myid
echo "3" >/apps/servers/data/d_3/myid
进入bin目录下输入命令分别进行启动:
zkServer.sh start ../conf/zoo1.cfg
zkServer.sh start ../conf/zoo2.cfg
zkServer.sh start ../conf/zoo3.cfg
通过命令检测是否成功:注意防火墙和配置是否成功,这个是部署成功的关键
#进入bin目录下:
sh zkCli.sh -server 192.168.31.132:2181, 192.168.31.132:2182, 192.168.31.132:2183
结果如下:
Leader:
Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,保证整个集群内部消息处理的FIFO,写操作都走leader,zk里面leader只有一个。
Follower:
Follower的逻辑就比较简单。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。帮助leader处理读请求,投票权。
Observer:
如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。没有投票权利,可以处理读请求。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章