ZooKeeper 基础
分布式系统常见的问题
分布式系统的特点有以下几个
扩展性
分布式
对等性
并发性
无序性
存在的问题
网络通信故障
网络分区(脑裂)
三态 (成功,失败,超时)
节点故障
ZooKeeper部署
首先要安装Java运行环境,下载解压ZooKeeper的tar包,然后修改 conf 文件夹下的 zoo.cfg文件,主要修改的有3点
dataDir 指定Zookeeper存放数据快照的目录
clientPort指定Zookeeper的端口,使用 zkCli.sh 所要连接的端口.
server.N 指定服务器,如上图,leader会从1--3中仲裁出来,剩下2个为follower,server.4 为 observer,不参与选举(提供只读)。N 要和 myid 文件中一致,注册配置zookeeper集群,在启动时根据这个配置进行相应的选举。
如果在同一个机器上模拟zookeeper多节点,如上述模拟4个节点,那么注意每一个节点的dataDir和clientPort 均不一样
localhost:2287:4487, 这里面的第一个端口号2287指的是 leader和 follower通信的端口,第二个端口号4487指的是选举的端口号
除了修改 zoo.cfg 文件之外,还需要在 zookeeper 的根目录下创建一个 myid 的文件,server.1 的 myid 内容输入 1, server.2 的 myid 内容输入2,以此类推
启动服务 bin/zkServer.sh start
查看服务状态 bin/zkServer.sh status
停止服务 bin/zkServer.sh stop
注意:只启动一台 zookeeper 服务,那么检查状态依然没启动,除 observer 外,至少2台才可以启动成功 ( observer 可以不启动)
使用 zkCli.sh 连接 zookeeper
示例: 使用zkCli连接,通过ip和端口号可以指定连到哪个节点, 连接成功之后,使用 create 创建节点,ls 列出节点, get 查看节点
扩展资料 : https://www.cnblogs.com/yangzhenlong/p/8271151.html
failover机制
zookeeper 选举原则为:过半原则,即:3台机器的情况下,只要启动2台,就可以选举成功。4台机器参与选举,那么需要有3台启动成功,角色才能选定。
observer 的机器不参与选举,但提供了水平扩展功能(选举也会消耗一部分性能, observer的机器可以同步数据并提供读取功能)
因此 zookeeper 要部署成 单数 节点模式
最后更新于