zookeeper 安装的三种模式(转)

zookeeper的安装分为三种模式:单机模式、集群模式和伪集群模式。下面介绍在Centos 7虚拟机上安装配置的过程。
单机模式

首先,从Apache官网下载一个Zookeeper稳定版本,本次教程采用的是zookeeper-3.4.10版本。http://apache.fayea.com/zookeeper/zookeeper-3.4.10/
然后解压zookeeper-3.4.10.tar.gz文件到安装目录下:

tar -zxvf zookeepre-3.4.10.tar.gz

zookeeper要求Java运行环境,并且需要jdk版本1.6以上。为了以后的操作方便,可以对zookeeper的环境变量进行配置(该步骤可忽略)。方法如下,在/etc/profile文件中加入以下内容:

设置Zookeeper的环境变量
编辑/etc/profile,在文档尾部添加如下内容:

export ZOOKEEPER_HOME=/usr/local/zookeeper3410
export PATH=$ZOOKEEPER_HOME/bin;$ZOOKEEPER_HOME/conf

Zookeeper服务器包含在单个jar文件中(本环境下为 zookeeper-3.4.10.jar),安装此服务需要用户自己创建一个配置文件。默认配置文件路径为 zookeeper3410/conf/目录下,文件名为zoo.cfg。进入conf/目录下可以看到一个zoo_sample.cfg文件,可供参考。通过以下代码在conf目录下创建zoo.cfg文件:

vi zoo.cfg

在文件中做如下修改并保存:

tickTime=2000
dataDir=/usr/local/zookeeper3410/data
dataLogDir=/usr/local/zookeeper3410/dataLog
clientPort=2181

在这个文件中,各个语句的含义:

tickTime : 服务器与客户端之间交互的基本时间单元(ms)
dataDir : 保存zookeeper数据路径、日志路径等
dataLogDir : 保存zookeeper日志路径,当此配置不存在时默认路径与dataDir一致
clientPort : 客户端访问zookeeper时经过服务器端时的端口号

使用单机模式时需要注意,在这种配置方式下,如果zookeeper服务器出现故障,zookeeper服务将会停止。


伪集群模式

伪集群模式就是在单机环境下模拟集群的Zookeeper服务。
在zookeeper集群配置文件中,clientPort参数用来设置客户端连接zookeeper服务器的端口。server.1=IP1:2888:3888中,IP1指的是组成Zookeeper服务器的IP地址,2888为组成zookeeper服务器之间的通信端口,3888为用来选举leader的端口。由于伪集群模式中,我们使用的是同一台服务器,也就是说,需要在单台机器上运行多个zookeeper实例,所以我们必须要保证多个zookeeper实例的配置文件的client端口不能冲突。
下面简单介绍一下如何在单台机器上建立伪集群模式。
首先将zookeeper3410拷贝两份,具体操作如下:

cp -r zookeeper3410 zookeeper34101
cp -r zookeeper3410 zookeeper34102

然后在zookeeper3410/data/目录下创建文件myid文件并写入“1”,同样在zookeeper34101/data/,目录下创建文件myid并写入“2”,同样在zookeeper34102/data,目录下创建文件myid并写入“3”。然后分别修改各自的zoo.cfg文件,具体如下:

# Server 1
# The number of milliseconds of each tick
# 服务器与客户端之间交互的基本时间单元(ms)
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
# 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
# Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# 保存zookeeper数据,日志路径
dataDir=/home/jxwch/server1/data
dataLogDir=/home/jxwch/server1/dataLog
# the port at which the clients will connect
# 客户端与zookeeper相互交互的端口
#(注意三个zookeeper的端口要设置成不一样)
clientPort=2181
#(编号1,2,3要和myid一致)
server.1= 127.0.0.1:2888:3888
server.2= 127.0.0.1:2889:3889
server.3= 127.0.0.1:2890:3890
#server.A=B:C:D  其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。
# the maximum number of client connections.
# increase this if you need to handle more clients
# 限制连接到zookeeper服务器客户端的数量
maxClientCnxns=60
## Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

Zookeeper伪集群模式运行
首先启动zookeeper34110服务器:

cd zookeeper34110/bin
./zkServer.sh start

这时候,查看zookeeper3410服务器的状态,会提示下列信息:

./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper34102/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

上述信息先不用管,继续启动其它zookeeper服务器,当zookeeper服务器都启动之后,执行如下命令:

[root@xhp1 zookeeper3410]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper3410/bin/../conf/zoo.cfg
Mode: follower
[root@xhp1 zookeeper34101]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper34101/bin/../conf/zoo.cfg
Mode: leader
[root@xhp1 zookeeper34102]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper34102/bin/../conf/zoo.cfg
Mode: follower

说明zookeeper3410服务器此时处于follower模式,zookeeper34101服务器此时处于leader模式,zookeeper34102服务器此时处于follower模式。


集群模式

zookeeper最主要的应用场景是集群,下面介绍如何在一个集群上部署一个zookeeper。只要集群上的大多数zookeeper服务启动了,那么总的zookeeper服务便是可用的。另外,最好使用奇数台服务器。如歌zookeeper拥有5台服务器,那么在最多2台服务器出现故障后,整个服务还可以正常使用。
之后的操作和单机模式的安装类似,我们同样需要Java环境,下载最新版的zookeeper并配置相应的环境变量。不同之处在于每台机器上的conf/zoo.cfg配置文件的参数设置不同,用户可以参考下面的配置:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/jxwch/server1/data
dataLogDir=/home/jxwch/server1/dataLog
clientPort=2181
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
maxClientCnxns=60

在这个配置文件中,新出现的语句的含义:

initLimit : 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。
syncLimit : Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接。
maxClientCnxns : 限制连接到zookeeper服务器客户端的数量
server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息。用户可以从“server.id=host:port:port” 中读取到相关信息。在服务器的data(dataDir参数所指定的目录)下创建一个文件名为myid的文件,这个文件的内容只有一行,指定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。这一样配置中,zoo1代表第一台服务器的IP地址。第一个端口号(port)是从follower连接到leader机器的端口,第二个端口是用来进行leader选举时所用的端口。所以,在集群配置过程中有三个非常重要的端口:clientPort:2181、port:2888、port:3888。

我是在虚拟机上复现了上述内容,需要特别注意的是:1. 要保证虚拟机之间可连通,2. 主机名和ip地址要对应好,3. 文件的操作权限。

强调一下:一定要把防火墙先关了。
下面室操作防火墙的命令:
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service (查看关闭状态)

转发至:https://www.cnblogs.com/jxwch/p/6433310.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值