Zookeeper集群配置


本文主要介绍Zookeeper集群的配置和运行



启动Zookeeper的单机模式是非常简单的,它在用作开发、测试和评估时间很方便。然而在生产环境下,为了保障服务的高可用性应该要使用集群模式。

有关Zookeeper的简介和单机模式示例请参考:
Zookeeper简介和入门示例

在集群模式下,所有配置文件和单机相比是基本相同的,只有一点细微的差别。


本文的运行环境

OS: CentOS 7
Zookeeper: 3.4.9
server-1: 192.168.1.106
server-2: 192.168.1.107
server-3: 192.168.1.108

编辑zoo.cfg文件

  • server-1的配置文件
    vi /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=10
syncLimit=5

# 集群定义
server.1=0.0.0.0:2888:3888
server.2=192.168.1.107:2888:3888
server.3=192.168.1.108:2888:3888
  • initLimit
    允许各follower和leader之间的连接时间,超过tickTime*initLimit时会重新投票选举leader

  • syncLimit
    leader和follower之间的能容忍的心跳检测时间,超过tickTime*syncLimit则从follower列表里剔除超时的follower

server.X中的X是指服务器的数字代号,在服务器启动的时候会去dataDir(这里是/var/zookeeper)目录查找myid文件,myid文件里就存储这个代号

关于集群定义里汲及到两个端口:2888和3888
第一个通讯端口2888是服务器之间通讯使用的,第二个端口3888是选举新leader使用的。

  • server-2
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=10
syncLimit=5

server.1=192.168.1.106:2888:3888
server.2=0.0.0.0:2888:3888
server.3=192.168.1.108:2888:3888
  • server-3
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=10
syncLimit=5

server.1=192.168.1.106:2888:3888
server.2=192.168.1.107:2888:3888
server.3=0.0.0.0:2888:3888

在每台服务器下加入myid

touch /var/zookeeper/myid
vi /var/zookeeper/myid

里面填的是当前服务器的数字
第一台为配置文件填的server.1的1,第二台为2,依至类推


开放防火墙端口

  • CentOS7
firewall-cmd --zone=public --add-port=2181/tcp --permanent 
firewall-cmd --zone=public --add-port=2888/tcp --permanent 
firewall-cmd --zone=public --add-port=3888/tcp --permanent 
systemctl restart firewalld.service
  • CentOS6
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2183 -j ACCEPT 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2883 -j ACCEPT 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3883 -j ACCEPT
service iptables restart

启动Zookeeper集群

  • 分别在各个节点使用 zkServer.sh start 启动
 zkServer.sh start

查看各个服务节点Zookeeper的状态

  • 使用zkServer.sh status命令
[root@server-1 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader

[root@server-2 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

[root@server-3 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

注:控制台输出[root@server-1 ~],这个server-1可以在/etc/hostname中修改


验证Zookeeper集群


在三台服务器的控制台上打开zk客户端

zkCli.sh

server-1

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]

server-2

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]

server-3

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]

在其中一台服务上增加znode

  • server-1
[zk: localhost:2181(CONNECTED) 1] create /massive this_is_cluster
Created /massive
[zk: localhost:2181(CONNECTED) 2] ls /
[massive, zookeeper]
[zk: localhost:2181(CONNECTED) 3]

其它节点查看

  • server-2
[zk: localhost:2181(CONNECTED) 1] ls /
[massive, zookeeper]
  • server-3
[zk: localhost:2181(CONNECTED) 1] ls /
[massive, zookeeper]
server-2,server-3上都能查看到server-1创建的节点,证实了Zookeeper集群运行成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值