Zookeeper 全局设计+集群环境搭建
zookeeper是什么?
(分布式协调)通过分布式协调组件多节点顺序一致性,简单来说zookeeper=文件系统+监听通知机制
Google Chubby(不开源产品)
解决分布式一致性
单机
-
-
sh zkServer.sh start
集群
集群的角色:leader、follower、observer
leader
-
整个集群中的调度节点
-
数据的同步
follower
-
高可用特性
-
参与投票(leader选举的投票,数据达成一致的投票)
-
过半提交(集群节点过多会影响整个集群性能的数据同步)
-
-
处理客户端请求(提升集群性能)
observer
-
observer不参与投票。 只同步 leader的状态 ;
-
observers 接受客户端的连接,并将写请求转发给 leader节点 ;
-
加入更多ObServer 节点,提高伸缩性,同时还不影响吞吐率。
- 2N+1台组成(过半提交决策)大于过半
为什么在Zookeeper中Server 数目一般为奇数?
安装部署/集群
-
修改配置文件zoo.cfg,原配置文件,添加集群节点配置
-
$dataDir/myid 添加一个Myid文件
/home/program/zookeeper-3.4.14/data
如果需要增加observer节点
同时在zoo.cfg中增加;peerType=observer
Server.1=192.168.11.129:2888:3181
Server.2=192.168.11.135:2888:3181
Server.3=192.168.11.136:2888:3181:observer
# The number of milliseconds of each tick
# 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
2 tickTime=2000
3 # The number of ticks that the initial
4 # synchronization phase can take
5 initLimit=10
6 # The number of ticks that can pass between
7 # sending a request and getting an acknowledgement
# 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10秒
8 syncLimit=5
9 # the directory where the snapshot is stored.
10 # do not use /tmp for storage, /tmp here is just
11 # example sakes.
# 顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
12 dataDir=/home/program/zookeeper-3.4.14/data
13 # the port at which the clients will connect
# 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
14 clientPort=2181
15 # the maximum number of client connections.
16 # increase this if you need to handle more clients
17 #maxClientCnxns=60
18 #
19 # Be sure to read the maintenance section of the
20 # administrator guide before turning on autopurge.
21 #
22 # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
23 #
24 # The number of snapshots to retain in dataDir
25 #autopurge.snapRetainCount=3
26 # Purge task interval in hours
27 # Set to "0" to disable auto purge feature
28 #autopurge.purgeInterval=1
29 server.1=192.168.1.102:2888:3181:observer
30 server.2=192.168.1.115:2888:3181
31 server.3=192.168.1.106:2888:3181