zookeeper(三)windows zookeeper单机伪集群

一、安装环境

1.1、系统环境

zk对不同系统环境支持都很好,在绝大多数主流的操作系统上都能够正常运行,如:GNU/linux、Sun Solaris、Win32以及MacOSX等。需要注意的是,Zookeeper官方文档中特别强调,由于FreeBSD系统的JVM对Java的NIO Selector支持得不是很好,所以不建议在该系统上部署生产环境的Zookeeper服务器。由于当前只是演示,所以2种安装方式都在Win上面进行。

1.2、Java环境

Java1.6或以上版本(建议下载Oracle官方发布的Java,下载地址是:http://www.java.com/download/)。我用的是jdk1.8。

二、集群模式(伪)

现在,我们开始使用三台机器来搭建一个Zookeeper集群。由于没有多余的服务器,这里就将三个Zk都安装到本地机器上,故称谓伪集群模式更合适,伪集群模式只是便于开发、普通测试,不能用于生产环境。

2.1、下载Zookeeper安装包

建议去官方网站上下载稳定版本,地址:http://zookeeper.apache.org/releases.html,这里我用到的是3.4.9

2.2、配置文件zoo.cfg

将解压后的Zk复制三份到工作目录并重命名为zk2281,zk2282,zk2283,在创建三个文件夹zk2281data,zk2282data,zk2283data,如:

这里写图片描述

三份zookeeper的目录都在E:\learning\dubbo\zookeeperCloud/ 下,然后需要将E:\learning\dubbo\zookeeperCloud{zk2281,zk2282,zk2283}\conf目录下的zoo_sample.cfg文件重命名为zoo.cfg,并且按照下面的方式简单配置:

zk2281的zoo.cfg配置


tickTime=2000
initLimit=10
syncLimit=5
dataDir=E:\learning\dubbo\zookeeperCloud\zk2281data
clientPort=2281
#2881是zk的通信端口
#3881是zk的投票选举端口
server.1=192.168.2.100:2881:3881
server.2=192.168.2.100:2882:3882
server.3=192.168.2.100:2883:3883

zk2282的zoo.cfg配置


tickTime=2000
initLimit=10
syncLimit=5
dataDir=E:\learning\dubbo\zookeeperCloud\zk2282data
clientPort=2282
#2881是zk的通信端口
#3881是zk的投票选举端口
server.1=192.168.2.100:2881:3881
server.2=192.168.2.100:2882:3882
server.3=192.168.2.100:2883:3883

zk2283的zoo.cfg配置


tickTime=2000
initLimit=10
syncLimit=5
dataDir=E:\learning\dubbo\zookeeperCloud\zk2283data
clientPort=2283
#2881是zk的通信端口
#3881是zk的投票选举端口
server.1=192.168.2.100:2881:3881
server.2=192.168.2.100:2882:3882
server.3=192.168.2.100:2883:3883

关于zoo.cfg的配置,这里简单说明下:

  • 在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的,在配置文件中,可以按照这样的格式进行配置,每一行都代表一个机器配置:server.id=host:port:port,其中,id被称为Server ID,用来标识该机器在集群中的机器序列号。同时,在每台Zookeeper机器上,我们都需要在数据目录(即dataDir参数指定的那个目录)下创建一个myid文件,该文件只有一行内容,并且是一个数字,即对应于每台机器的Server ID 数字。

  • 上面也提到了,myid文件中只有一个数字,即一个Server
    ID。例如,server.1的myid文件内容就是”1”。注意,清确保每个服务器的myid文件中的数字不同,并且和自己所在机器的zoo.cfg中server.id=houst:port:port的id一致。另外,id的范围是1~255。

  • 参数的意义:

    tickTime:默认值为3000,单位是毫秒(ms),可以不配置。参数tickTime用于配置Zookeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。例如,Zk中会话的最小超时时间默认是2*tickTime。

    dataDir:该参数无默认值,必须配置。参数dataDir用于配置Zookeeper服务器存储快照文件的目录。

    clientPort:参数clientPort用于配置当前服务器对外的服务端口,客户端会通过该端口和Zk服务器创建连接,一般设置为2181。

    initLimit:该参数默认值:10,表示是参数tickTime值的10倍,必须配置,且为正整数。该参数用于配置Leader服务器等待Follower启动,并完成数据同步的时间。Follower服务器在启动过程中,会与Leader建立连接并完成对数据的同步,从而确定自己对外提高服务的起始状态。leader服务器允许Follower在initLimit时间内完成这个工作。

    syncLimit:该参数默认值:5,表示是参数tickTime值的5倍,必须配置,且为正整数。该参数用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间。在Zk集群运行的过程中,Leader服务器会与所有的Follower进行心跳检测来确定该服务器是否存活。如果Leader服务器在syncLimit时间内无法获取到Follower的心跳检测响应,那么Leader就会认为该Follower已经脱离了和自己的同步。

    server.id:该参数无默认值,在单机模式下可以不配置。该参数用于配置组成Zk集群的机器列表,其中id即为Server ID,与每台服务器myid文件中的数字相对应。同时,在该参数中,会配置两个端口:第一个端口用于指定Follower服务器与Leader进行运行时通信和数据同步时所使用的端口,第二个端口测专门用于进行Leader选举过程中的投票通信。

2.3、创建myid文件

在dataDir所配置的目录下,创建一个名为myid的文件,在该文件的第一行写上一个数字,和zoo.cfg中当前机器的编号对应上。即:

在E:\learning\dubbo\zookeeperCloud\zk2281data\文件夹下创建值为"1"的myid文件。

在E:\learning\dubbo\zookeeperCloud\zk2281data\文件夹下创建值为"2"的myid文件。

在E:\learning\dubbo\zookeeperCloud\zk2281data\文件夹下创建值为"3"的myid文件。

下图是zk2281data文件夹下myid文件和其内容,zk2282data,zk2283data只是文件里的值不一样。

这里写图片描述

三、创建启动zk集群脚本

我呢比较懒,就把几个启动命令和到一个命令里了。创建一个start-all-zookeeper.bat文件,里面的内容如下:

@echo off
rem 运行zk3
start E:\learning\dubbo\zookeeperCloud\zk2881\bin\zkServer.cmd  & start E:\learning\dubbo\zookeeperCloud\zk2882\bin\zkServer.cmd  & start E:\learning\dubbo\zookeeperCloud\zk2883\bin\zkServer.cmd 

这里写图片描述

四、验证集群是否成功

双击我们的start-all-zookeeper.bat 文件 ,如下图所示

这里写图片描述

通过控制台我们发现zk2283是leader,zk2281 和zk2282是follewer 。

此时发们把zk2283停掉,看有什么变化。

这里写图片描述

此时发们发现,zk2282变成了leader,zk2281还是follewer。说明进行的重新的选主。集群配置成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值