1 Zookeeper基本框架
Zookeeper集群主要角色有Leader,Learner(Follower,Observer(当服务器增加到一定程度,由于投票的压力增大从而使得吞吐量降低,所以增加了Observer。)以及client:
Leader:领导者,负责投票的发起和决议,以及更新系统状态
Follower:接受客户端的请求并返回结果给客户端,并参与投票
Observer:接受客户端的请求,将写的请求转发给leader,不参与投票。Observer目的是扩展系统,提高读的速度。
Client:客户端,想Zookeeper发起请求。
Zookeeper的基本框架图如下
1.2 zookeeper集群节点个数
zookeeper节点部署的越多,服务的可靠性也就越高。当然建议最好是部署奇数个,偶数个不是不可以。但是zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳,最好部署3,5,7个zookeeper节点。本次实验我们是以3个节点进行(centos6)。
二、zookeeper安装
2.1安装jdk
2.2安装zookeeper
[root@localhost ~]# cd /usr/local/
[root@localhost local]# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
[root@localhost local]# tar -xf zookeeper-3.4.8.tar.gz && rm -rf zookeeper-3.4.8.tar.gz && mv zookeeper-3.4.8 zookeeper && cd zookeeper && cp conf/zoo_sample.cfg conf/zoo.cfg
把zookeeper加入到环境变量,如下:
[root@localhost zookeeper]# vim /etc/profile
执行source命令使刚刚修改的环境生效,如下:
[root@localhost zookeeper]# source /etc/profile
[root@localhost zookeeper]# env
2.3修改zookeeper配置文件
[root@localhost zookeeper]# vim /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
server.1= 192.168.1.2:2888:3888
server.2= 192.168.1.3:2888:3888
server.3= 192.168.1.4:2888:3888
clientPort=2181
配置文件参数说明:
tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。
2.4创建相关目录
[root@localhost zookeeper]# mkdir -p /usr/local/zookeeper/{data,logs}
2.5创建ServerID标识
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。
这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。
在192.168.1.2服务器上创建myid文件,并设置为1,同时与zoo.cfg文件里面的server.1对应,如下:
echo "1" > /usr/local/zookeeper/data/myid
在192.168.1.3服务器上创建myid文件,并设置为2,同时与zoo.cfg文件里面的server.2对应,如下:
echo "2" > /usr/local/zookeeper/data/myid
在192.168.1.4服务器上创建myid文件,并设置为2,同时与zoo.cfg文件里面的server.2对应,如下:
echo "3" > /usr/local/zookeeper/data/myid
三、启动zookeeper,查看集群
启动:
[root@localhost zookeeper]# bin/zkServer.sh start
注意:在启动第一台zookeeper的时候可能会报错,等三台zookeeper全部启动完成之后就不会报错了。
查看状态:
[root@localhost zookeeper]# bin/zkServer.sh status
四、连接zookeeper集群
[root@localhost zookeeper]# bin/zkCli.sh -server 192.168.1.3:2181
安装完成。。。