ZooKeeper(三)安装部署:之单机版、伪集群、集群

前言:zookeeper的部署模式有三种:单机模式、伪集群模式、集群模式

单机模式:zookeeper只运行在一台服务器上,适合测试

伪集群:在一台服务器上,多进程运行多个zookeeper实例

集群:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)

Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。为什么一定要超过半数呢?这跟Zookeeper的复制策略有关:zookeeper确保对znode 树的每一个修改都会被复制到集合体中超过半数的机器上。

单节点改造使用稳定版zookeecper-3.4.10.tar.gz下载教程

一、默认单机版

1、使用rz上传已下好的zookeecper-3.4.10.tar.gz到 /usr/local/src 目录下

# 进入到/usr/local/src目录 如果没有这个目录 创建:mkdir /usr/local/src
[root@centos6 ]# cd /usr/local/src
# 上传zookeecper-3.4.10.tar.gz
[root@centos6 src]# rz



2、解压zookeeper-3.4.10.tar.gz到 /usr/local 目录

# 解压zookeeper-3.4.10.tar.gz到 /usr/local 目录
[root@centos6 src]# tar -zxvf ./zookeeper-3.4.10.tar.gz -C /usr/local/

3、进入到解压的zookeeper的配置文件下

# 进入到解压的zookeeper的配置文件下
[root@centos6 src]# cd ../zookeeper-3.4.10/conf/


4、更改配置文件zoo_sample.cfg的名称为zoo.cfg

# 更改配置文件zoo_sample.cfg的名称为zoo.cfg
[root@centos6 conf]# mv zoo_sample.cfg zoo.cfg


5、启动zookeeper

# 进入大bin目录
[root@centos6 conf]# cd ../bin/
# 启动zookeeper的Server
[root@centos6 bin]# ./zkServer.sh start

6、为了以后方便使用配置zookeeper环境变量

# 编辑环境配置文件
[root@centos6 zookeeper]# vim /etc/profile
# 加入zookeeper环境配置
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
# 使环境变量立即生效
[root@centos6 zookeeper]# source /etc/profile



7、关闭zookeeper的server

# 因为配置过环境变量所以任何目录下都可以运行停止命令
[root@centos6 zookeeper]# zkServer.sh stop

二、zookeeper的配置zoo.cfg详解

Zookeeper的功能特性是通过Zookeeper配置文件来进行控制管理的(zoo.cfg).这样的设计其实有其自身的原因,通过前面对Zookeeper的配置可以看出,在对Zookeeper集群进行配置的时候,它的配置文档是完全相同的。集群伪分布模式中,有少部分是不同的。这样的配置方式使得在部署Zookeeper服务的时候非常方便。如果服务器使用不同的配置文件,必须确保不同配置文件中的服务器列表相匹配。

在设置Zookeeper配置文档时候,某些参数是可选的,某些是必须的。这些必须参数就构成了Zookeeper配置文档的最低配置要求。另外,若要对Zookeeper进行更详细的配置,可以参考下面的内容。

2.1 基本配置

下面是在最低配置要求中必须配置的参数:

(1) client:监听客户端连接的端口。
(2) tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime   
dataDir:存储内存中数据库快照的位置,如果不设置参数,更新食物的日志将被存储到默认位置。

应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。

2.2 高级配置

下面是高级配置参数中可选配置参数,用户可以使用下面的参数来更好的规定Zookeeper的行为:

(1) dataLogdDir

这个操作让管理机器把事务日志写入“dataLogDir”所指定的目录中,而不是“dataDir”所指定的目录。这将允许使用一个专用的日志设备,帮助我们避免日志和快照的竞争。配置如下:

# the directory where the snapshot is stored
   dataDir=/usr/local/zk/data 

(2) maxClientCnxns

这个操作将限制连接到Zookeeper的客户端数量,并限制并发连接的数量,通过IP来区分不同的客户端。此配置选项可以阻止某些类别的Dos攻击。将他设置为零或忽略不进行设置将会取消对并发连接的限制。

例如,此时我们将maxClientCnxns的值设为1,如下所示:

# set maxClientCnxns
   maxClientCnxns=1

启动Zookeeper之后,首先用一个客户端连接到Zookeeper服务器上。之后如果有第二个客户端尝试对Zookeeper进行连接,或者有某些隐式的对客户端的连接操作,将会触发Zookeeper的上述配置。

(3) minSessionTimeoutmaxSessionTimeout

即最小的会话超时和最大的会话超时时间。在默认情况下,minSession=2*tickTime;maxSession=20*tickTime。

2.3 集群配置(伪集群配置)

(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) myidzoo.cfg

除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。



三、伪集群版部署

Zookeeper不但可以在单机上运行单机模式Zookeeper,而且可以在单机模拟集群模式 Zookeeper的运行,也就是将不同节点运行在同一台机器。我们知道伪分布模式下Hadoop的操作和分布式模式下有着很大的不同,但是在集群为分布 式模式下对Zookeeper的操作却和集群模式下没有本质的区别。显然,集群伪分布式模式为我们体验Zookeeper和做一些尝试性的实验提供了很大 的便利。比如,我们在实验的时候,可以先使用少量数据在集群伪分布模式下进行测试。当测试可行的时候,再将数据移植到集群模式进行真实的数据实验。这样不 但保证了它的可行性,同时大大提高了实验的效率。这种搭建方式,比较简便,成本比较低,适合测试和学习,如果你的手头机器不足,就可以在一台机器上部署了 3个server。

敲重点划黑板:注意

在一台机器上部署了3个server,需要注意的是在集群为分布式模式下我们使用的每个配置文档模拟一台机器,也就是说单台机器及上运行多个Zookeeper实例。但是,必须保证每个配置文档的各个端口号不能冲突,除了clientPort不同之外,dataDir也不同。另外,还要在dataDir所对应的目录中创建myid文件来指定对应的Zookeeper服务器实例。

clientPort端口:如果在1台机器上部署多个server,那么每台机器都要不同的 clientPort,比如 server1是2181,server2是2182,server3是2183

dataDirdataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个server的这两变量所对应的路径都是不同的

server.Xmyid: server.X 这个数字就是对应,data/myid中的数字。在3个server的myid文件中分别写入了0,1,2,那么每个server中的zoo.cfg都配 server.flm_a, server.flm_b,server.flm_c就行了。因为在同一台机器上,后面连着的2个端口,3个server都不要一样,否则端口冲突

我所配置的集群伪分布模式,分别通过zoo_flma.cfg、zoo_flmb.cfg、zoo_flmc.cfg来模拟由三台机器的Zookeeper集群


zoo_flma.cfg配置

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/zookeeper-3.4.10/data_flma
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#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
server.0=localhost:1111:11111
server.1=localhost:2222:22222
server.2=localhost:3333:33333



zoo_flmb.cfg配置

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/zookeeper-3.4.10/data_flmb
# the port at which the clients will connect
clientPort=2182
# the maximum number of client connections.
# increase this if you need to handle more clients
#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
server.0=localhost:1111:11111
server.1=localhost:2222:22222
server.2=localhost:3333:33333


zoo_flmc.cfg配置

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/zookeeper-3.4.10/data_flmc
# the port at which the clients will connect
clientPort=2183
# the maximum number of client connections.
# increase this if you need to handle more clients
#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
server.0=localhost:1111:11111
server.1=localhost:2222:22222
server.2=localhost:3333:33333

启动伪集群zookeeper并查看状态
# 不能使用单机版启动方式 伪集群版必须指定配置文件
[root@centos6 bin]# ./zkServer.sh start ../conf/zoo_flma.cfg
[root@centos6 bin]# ./zkServer.sh start ../conf/zoo_flmb.cfg
[root@centos6 bin]# ./zkServer.sh start ../conf/zoo_flmc.cfg
# 查看启动状态
[root@centos6 bin]# ./zkServer.sh status ../conf/zoo_flma.cfg
[root@centos6 bin]# ./zkServer.sh status ../conf/zoo_flmb.cfg
[root@centos6 bin]# ./zkServer.sh status ../conf/zoo_flmc.cfg



在运行完第一条指令之后,会出现一些错误异常,产生异常信息的原因是由于Zookeeper服务的每个实例都拥有全局配置信息,他们在启动的时候会随时随地的进行Leader选举操作。此时,第一个启动的Zookeeper需要和另外两个Zookeeper实例进行通信。但是,另外两个Zookeeper实例还没有启动起来,因此就产生了这的异样信息。我们直接将其忽略即可,待把图中“b号”和“c号”Zookeeper实例启动起来之后,相应的异常信息自然会消失。由上图可知zoo_flmc是leader 其余两个是follower


四、搭建ZooKeeper服务器集群

搭建要求:

(1) zk服务器集群规模不小于3个节点
(2) 要求各服务器之间系统时间要保持一致。

上面我们在149上已经有了三个伪集群,现在我们在再148和158上个搭一个zookeeper构建成5台集群
4.1、关闭防火墙

# 暂时关闭防火墙
[root]:/usr/local/zookeeper-3.4.10/bin# service iptables stop
4.2、如单上面机版安装,不过要更改下zoo.cfg文件,同时增加myid的文件

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/zookeeper-3.4.10/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#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
server.0=192.168.133.149:1111:11111
server.1=192.168.133.149:2222:22222
server.2=192.168.133.149:3333:33333
server.3=192.168.133.148:1888:18888
server.4=192.168.133.158:1888:11888


myid的文件

# 创建上图dataDir目录 /usr/local/zookeeper-3.4.10/data
[root]:/usr/local/zookeeper-3.4.10/bin# mkdir /usr/local/zookeeper-3.4.10/data
# 在/usr/local/zookeeper-3.4.10/data创建 myid 文件 
[root]:/usr/local/zookeeper-3.4.10/data# vim ./myid
# 在myid文件写入server的编号 3并保存
i 3 ESC :wq


# 启动zookeeper
[root]:/usr/local/zookeeper-3.4.10/bin# ./zkServer.sh start
# 查看状态
[root]:/usr/local/zookeeper-3.4.10/bin# ./zkServer.sh status 


另一台159服务器同样如此...

149服务器zookeeper状态

148zookeeper的日志(日志输出下一篇)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值