伪集群模式:就是在一台物理机上运行多个Zookeeper 实例
在一台机器上部署了3个server,要满足以下条件
1. 端口号不能冲突,除了clientPort不同之外,
2. dataDir也不同。
3. 创建myid, 在dataDir所对应的目录中创建myid文件来指定对应的Zookeeper服务器实例。
安装部署
1.下载解压
解压到目录:/usr/local/services/zookeeper/
2.创建配置文件
zoo1.cfg配置如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zk/data_1
clientPort=2181
dataLogDir=/usr/local/zk/logs_1
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
zoo2.cfg配置如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zk/data_2
clientPort=2182
dataLogDir=/usr/local/zk/logs_2
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
zoo3.cfg配置如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zk/data_3
clientPort=2183
dataLogDir=/usr/local/zk/logs_3
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
配置完cfg文件之后,在data日志路径下添加myid,并将对应的id写进配置文件
3.启动集群
./zkServer.sh stop ../conf/zoo1.cfg
./zkServer.sh stop ../conf/zoo2.cfg
./zkServer.sh stop ../conf/zoo2.cfg
4.启动结果
使用命令 ./zkServer.sh status ../conf/zoo1.cfg
查看状态
[root@localhost bin]# ./zkServer.sh status ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Mode: follower
[root@localhost bin]# ./zkServer.sh status ../conf/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Mode: follower
[root@localhost bin]# ./zkServer.sh status ../conf/zoo3.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Mode: leader
集群配置说明
(1) initLimit
此配置表示,允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
(2) syncLimit
此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
(3) server.A=B:C:D
A:其中 A 是一个数字,表示这个是服务器的编号;
B:是这个服务器的 ip 地址;
C:Leader选举的端口;
D:Zookeeper服务器之间的通信端口。
(4) myid和zoo.cfg
除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。