Zookeeper集群
zookeeper集群的目的是为了保证系统的性能承载更多的客户端连接设专门提供的机制。通过集群可以实现以下功能:
- 读写分离:提高承载,为更多的客户端提供连接,并保障性能。
- 主从自动切换:提高服务容错性,部分节点故障不会影响整个服务集群。
半数以上运行机制说明:
集群至少需要三台服务器,并且强烈建议使用奇数个服务器。因为zookeeper 通过判断大多数节点的存活来判断整个服务是否可用。比如3个节点,挂掉了2个表示整个集群挂掉,而用偶数4个,挂掉了2个也表示其并不是大部分存活,因此也会挂掉。
1. 集群部署
配置语法
server.<节点ID>=< IP>:<据同步端口>:<选举端口>
- 节点ID: 服务id手动指定1至125之间的数字,并写到对应服务节点的 {dataDir}/myid 文件中。
- IP地址: 节点的远程IP地址,可以相同。但生产环境就不能这么做了,因为在同一台机器就无法达到容错的目的。所以这种称作为伪集群。
- 数据同步端口: 主从同时数据复制端口,(做伪集群时端口号不能重复)。
- 远举端口: 主从节点选举端口,(做伪集群时端口号不能重复)。
配置文件示例:
tickTime=2000
dataDir=/var/lib/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
#以下为集群配置,必须配置在所有节点的zoo.cfg文件中
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
集群配置流程:
- 分别创建3个data目录用于存储各节点数据
mkdir data
mkdir data/1
mkdir data/2
mkdir data/3
- 编写myid文件
echo 1 > data/1/myid
echo 2