avatar

目录
ZooKeeper专题(3):zk的集群安装

第5章 选举模式和ZooKeeper的集群安装

5-1 集群的一些基本概念

zk集群搭建

  • zk集群,主从节点,心跳机制(选举模式)

选举模式图例:

![屏幕快照 2018-11-16 上午10.35.09](20181114115703812/屏幕快照 2018-11-16 上午10.35.09.png)

最少的集群需要3个节点,以此类推3、5、7、9…

  • 配置数据文件myid 1/2/3 对应 server.1/2/3

  • 通过./zkCli.sh -server [ip]:[port] 检测集群是否配置成功

5-2 单机伪分布式安装zookeeper集群

单机下的集群,就是zk的port不一样

配置伪分布式:

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 对zookeeper进行copy
$ cp zookeeper zookeeper02 -rf
$ cp zookeeper zookeeper03 -rf

# 修改3个zookeeper目录的 conf/zoo.conf
#---------vim start---------------
clientPort=2181 # 依次改为2182、2183
dataDir=/usr/local/zookeeper/dataDir #依次改为zookeeper02、zookeeper03
dataLogDir=/usr/local/zookeeper/dataLogDir #依次改为zookeeper02、zookeeper03

#3个文件都要添加如下:
# 2888:3888 为同步和选举的端口号
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
#---------vim end---------------

# 在三个zookeeper实例的dataDir目录下新增myid文件,文件内容分别为1、2、3

测试:

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 把3台zkServer都打开
$ sudo ./zookeeper/bin/zkServer.sh restart
$ sudo ./zookeeper02/bin/zkServer.sh restart
$ sudo ./zookeeper03/bin/zkServer.sh restart

# zkCli连接2181端口的zkServer
$ zkCli.sh -server localhost:2181
# 在第一个server创建一个节点
$ create /node01 data-01
# 退出,登进2182端口的server
$ zkCli.sh -server localhost:2182
$ ls /
# - 发现3台server的数据同步了,说明伪分布式的集群搭建成功
[node01, zookeeper]

5-3 三台物理机(虚拟机)安装zookeeper集群

真实环境下:ip不同,端口号可以保持一致

搭建步骤:

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 建3台虚拟机

# 修改3台zk的conf/zoo.cfg
#---------vim start---------------
clientPort=2181 # 3台机子的port可以保持一致
dataDir=/usr/local/zookeeper/dataDir
dataLogDir=/usr/local/zookeeper/dataLogDir

#3个文件都要添加如下:
server.1=10.211.55.6:2888:3888
server.2=10.211.55.12:2888:3888
server.3=10.211.55.13:2888:3888
#---------vim end---------------

# 把3台机子的myid分别改为1、2、3

# 把3台机子的2181、2888、3888端口打开

测试:

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 分别启动3台机子的zkserver
$ ./bin/zkServer.sh restart
# 查看3台机子的状态
$ ./bin/zkServer.sh status
# 第一台
Mode: follower
# 第二台
Mode: leader
# 第三台
Mode: follower

# 在leader里面修改数据
$ ./bin/zkCli.sh -server 10.211.55.12:2181
$ create /node02 data-02

# 查看follower是否同步
$ ./bin/zkCli.sh -server 10.211.55.6:2181
$ ls /
[node01, zookeeper, node02]
# - 发现修改leader,follower都会同步

5-4 测试集群角色以及选举

上一节测试了同步,接下来验证选举

master挂掉,slave会竞争选举,成为新的master

测试:

bash
1
2
3
4
5
# 关闭掉leader节点的server

# 查看另2台的status,发现第三台 经过选举后 变成了leader

# 重新恢复关掉的节点2,发现他重新加入集群,变成了follower

选举算法???

文章作者: Machine
文章链接: https://machine4869.gitee.io/2018/11/14/20181114115703812/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哑舍
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论