zookeeper在linux centos7下的集群介绍和配置

Zookeeper 有三种运行模式:单机模式、伪集群模式和集群模式。

单机模式

单机模式,顾名思义,只有一个zookeeper实例,我们安装完成并且启动zk,就是一个单机模式.
具体步骤和上一篇博客zookeeper的安装过程类似.
1. 首先保证已安装Java运行环境
2. 下载ZooKeeper安装包,可以去ZooKpper官网下载最新的Stable版本,并解压到指定目录
3. 配置zoo.cfg 解压成功后,在conf文件夹下复制一份新的zoo_sample.cfg并重新命名为zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper
clientPort=2181

启动服务
这样一个单机模式的ZooKeeper就配置完成了

伪集群模式

这是一种特殊的集群模式,即集群的所有服务器都部署在一台机器上.

首先进入zookeeper安装目录下准备三个配置文件

[root@localhost conf]# pwd
/opt/zookeeper/conf
[root@localhost conf]# cp zoo_sample.cfg zoo1.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo2.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo3.cfg
[root@localhost conf]# ll
总用量 24
-rw-rw-r--. 1 yinxunzhi yinxunzhi  535 630 2016 configuration.xsl
-rw-rw-r--. 1 yinxunzhi yinxunzhi 2712 630 2016 log4j.properties
-rw-r--r--. 1 root      root       922 44 21:51 zoo1.cfg
-rw-r--r--. 1 root      root       922 44 21:51 zoo2.cfg
-rw-r--r--. 1 root      root       922 44 21:51 zoo3.cfg
-rw-rw-r--. 1 yinxunzhi yinxunzhi  922 630 2016 zoo_sample.cfg

由于伪集群模式是在同一台机器上运行多个zk实例,所以要保证端口号不能重复,也要保证dataDir各不相同.

zoo1.cfg配置:

[root@localhost conf]# cat zoo1.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper01
clientPort=2181
server.1=192.168.1.6:2887:3887
server.2=192.168.1.6:2888:3888
server.3=192.168.1.6:2889:3889

zoo2.cfg配置:

[root@localhost conf]# cat zoo1.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper02
clientPort=2182
server.1=192.168.1.6:2887:3887
server.2=192.168.1.6:2888:3888
server.3=192.168.1.6:2889:3889

zoo3.cfg配置:

[root@localhost conf]# cat zoo1.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper03
clientPort=2183
server.1=192.168.1.6:2887:3887
server.2=192.168.1.6:2888:3888
server.3=192.168.1.6:2889:3889

最后需要注意的是在配置文件最后多出的三个配置项

server.1=192.168.1.6:2887:3887
server.2=192.168.1.6:2888:3888
server.3=192.168.1.6:2889:3889

可以用如下格式表示

server.id=host:port1:port2

其中,id被称为server ID,用来标识该机器在集群中的机器序号(需要在每台机器的dataDir目录下创建myid文件,文件内容即为该机器对应的Server ID数字).host为机器IP,port1用于指定Follower服务器与Leader服务器进行通信和数据同步的端口,port2用于进行Leader选举过程中的投票通信.

基于以上描述:我们还需要在各个dataDir下新建myid文件

[root@localhost /]# pwd
/
[root@localhost /]# mkdir /var/zookeeper01/
[root@localhost /]# mkdir /var/zookeeper02/
[root@localhost /]# mkdir /var/zookeeper03/
[root@localhost /]# echo 1 > /var/zookeeper01/myid
[root@localhost /]# echo 2 > /var/zookeeper02/myid
[root@localhost /]# echo 3 > /var/zookeeper03/myid

启动zk01进行测试:

[root@localhost bin]# pwd
/opt/zookeeper/bin
[root@localhost bin]# sh zkServer.sh start ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Starting zookeeper ... STARTED
[root@localhost bin]# sh zkServer.sh start ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Starting zookeeper ... STARTED
[root@localhost bin]# sh zkServer.sh start ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Starting zookeeper ... STARTED

查看三台服务器的状态

[root@localhost bin]# sh zkServer.sh status ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
[root@localhost bin]# sh zkServer.sh status ../conf/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Client port found: 2182. Client address: localhost.
Mode: leader
[root@localhost bin]# sh zkServer.sh status ../conf/zoo3.cfg
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Client port found: 2183. Client address: localhost.
Mode: follower

是用zkCli.sh进行连接测试

[root@localhost bin]# sh zkCli.sh -server 192.168.1.6:2181,192.168.1.6:2182,192.168.1.6:2183
Connecting to 192.168.1.6:2181,192.168.1.6:2182,192.168.1.6:2183
2018-04-04 22:30:39,168 [myid:] - INFO  [main:Environment@109] - Client environment:zookeeper.version=3.5.2-alpha-1750793, built on 06/30/2016 13:15 GMT
....
集群模式(后续完善)

一个ZooKeeper集群通常由一组ZooKeeper实例组成,一般3台以上就可以组成一个可用的ZooKeeper集群了.
组成 ZooKeeper 集群的每台机器都会在内存中维护当前的服务器状态,并且每台机器之间都会互相保持通信.重要的一点是,只要集群中存在超过一半的机器能够正常工作,那么整个集群就能够正常对外服务.
在配置集群模式之前,需要准备三台服务器,我这里使用的虚拟机上的cnteos7,IP地址分别为192.168.134.128,192.168.134.129,192.168.134.130.其他步骤同单机模式,只是在配置zoo.cfg上有所不同,下面具体介绍:
集群模式下zoo.cfg的配置:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper
clientPort=2181
server.1=192.168.134.128:2888:3888
server.2=192.168.134.129:2888:3888
server.3=192.168.134.130:2888:3888

可以看到,相比于单机模式,集群模式多了server.id=host:port1:port2 的配置.其中,id被称为server ID,用来标识该机器在集群中的机器序号(需要在每台机器的dataDir目录下创建myid文件,文件内容即为该机器对应的Server ID数字).host为机器IP,port1用于指定Follower服务器与Leader服务器进行通信和数据同步的端口,port2用于进行Leader选举过程中的投票通信.

然后创建myid文件
在dataDir指定的目录下创建名为myid文件,在第一行写上对应的Server ID.比如如下配置server.1=192.168.134.128:2888:3888,就在myid的文件第一行写上1,具体如下

[root@localhost var]# cd /
[root@localhost /]# cd /var/
[root@localhost var]# mkdir zookeeper
[root@localhost var]# cd zookeeper/
[root@localhost zookeeper]# vi myid #写入Server ID
[root@localhost zookeeper]# cat myid
1

最后就是按照相同步骤配置其他两台服务器,然后启动服务.
这样,整个集群模式就搭建完成

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值