Zookeeper系列(一):环境搭建

一,题记

Zookeeper是一个开源的分布式协调服务 ,由雅虎公司创建,Zookeeper设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,并通过简单的接口供用户使用。

二,具体可以用来实现什么功能?

实现数据的发布/订阅(异步消息,生产者消费者模式),负载均衡器,命名服务,分布式协调/通知服务,集群管理服务(注册中心),分布式锁功能等等。这里不再详细介绍,后续会用具体事例来说明。

三,快速搭建Zookeeper

Zookeeper安装有三种模式:

单机模式:适合测试环境

伪集群模式:简而言之就是在一个环境上运行多个Zookeeper实例

集群模式 : Zookeeper运行在一个集群上,适合用于生产环境

下载Zookeeper:http://mirror.bit.edu.cn/apache/zookeeper/

解压zookeeper-3.4.10.tar.gz文件

单机模式

进入zookeeper-3.4.10\conf,创建zoo.cfg文件,配置如下,这样一个简单的单机环境就搭建完成了。

所以在windows上搭建了单机环境,那么点击zkServer.cmd即可运行Zookeeper了。运行信息如下:

伪集群模式的搭建:

下图是zkServer.cmd的脚本,从中可以看到红圈部分,这个配置文件决定了启动哪一个实例

正确的姿势(以三个实例为例):

zkServer.cmd复制两个zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd

三个zkServer.cmd中分别写入如下配置;

set ZOOCFG=..\conf\zoo1.cfg

set ZOOCFG=..\conf\zoo2.cfg

set ZOOCFG=..\conf\zoo2.cfg

很显然,在conf目录下的配置文件需要两个,另外注意,配置信息不能重复,否则造成数据覆盖和端口占用等问题

集群环境搭建

是标准的生产环境,这里省略掉,可以度娘找攻略.。

四,配置项说明

最低要求

(1)client

监听客户端连接的端口。

(2)tickTime

基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime

(3)dataDir

存储内存中数据库快照的位置,如果不设置参数,更新食物的日志将被存储到默认位置。如果考虑性能的话,日志必须存放在专有的日志设备上,负责就会坑爹呦~

高级配置

(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。

集群配置

(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的原里和应用。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180224G0JOD500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券