windows下安装zk集群环境并配置windows服务开机启动

 

然后解压到D盘:D:\zookeeper-3.3.6:如图:

 

 

  • 2配置文件zoo.cfg

复制三份安装目录:

将conf目录下的zoo_sample.cfg文件重命名为zoo.cfg,并且按照下面的方式简单配置:

zookeeper-1zoo.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 port at which the clients will connect
clientPort=2181
dataDir=D:\\zookeeper-3.3.6\\zk1\\data  
dataDirLog=D:\\zookeeper-3.3.6\\zk1\\log
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.1=127.0.0.1:2888:3888  
server.2=127.0.0.1:2889:3889  
server.3=127.0.0.1:2890:3890 

 

zookeeper-2zoo.cfg配置

 

 

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2182
dataDir=D:\\zookeeper-3.3.6\\zk2\\data  
dataDirLog=D:\\zookeeper-3.3.6\\zk2\\log
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.1=127.0.0.1:2888:3888  
server.2=127.0.0.1:2889:3889  
server.3=127.0.0.1:2890:3890 

 

zookeeper-3zoo.cfg配置

 

 

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2183
dataDir=D:\\zookeeper-3.3.6\\zk3\\data  
dataDirLog=D:\\zookeeper-3.3.6\\zk3\\log
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.1=127.0.0.1:2888:3888  
server.2=127.0.0.1:2889:3889  
server.3=127.0.0.1:2890:3890 

 

 

 

 

  • 配置说明

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

  a.在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的,在配置文件中,可以按照这样的格式进行配置,每一行都代表一个机器配置server.id=host:port:port

其中,id被称为 Server ID,用来标识该机器在集群中的机器序列号。同时,在每台Zookeeper机器上,我们都需要在数据目录(即dataDir参数指定的那个目录)下创建一个myid文件,该文件只有一行内容,并且是一个数字,即对应于每台机器的Server ID 数字

  b.在Zk的设计中,集群中所有机器上的zoo.cfg文件的内容都应该是一致的。因此最好使用svn或是git把此文件管理起来,确保每个机器都能共享到一份相同的配置。

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

  d.参数的意义:

    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选举过程中的投票通信

 

 

 

  • 创建myid文件

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

 

在D:\zookeeper-3.3.6\zookeeper1\data文件夹下创建值为"1"的myid文件。

在D:\zookeeper-3.3.6\zookeeper2\data文件夹下创建值为"2"的myid文件。

在D:\zookeeper-3.3.6\zookeeper3\data文件夹下创建值为"3"的myid文件。

 

 

 

  • 启动zk

至此,所有Zk都已经基本配置完毕,可以使用 bin 目录下的zkServer.cmd脚本进行服务器的启动了。

刚启动第一个Zk时会不断报错,这是正常的,因为集群中其它的Zk还未起来,Zk集群之间的心跳检测未检测到其它Zk,等集群中所有的Zk都启动后,就不会报错了。

如果我们关闭一个zkServer启动床就,就会关闭一个zk实例。

也就是说,现在zk服务还不能开机启动。不过已经可以使用bin下的zkCli.cmd -server 127.0.0.1:2181连接到zk1这个实例了,当然2182,2183也是可以使用任意客户端连接上。

 

 

  • 查看节点

因为zk的单一视图,我们可以在zk1查看zk2创建的节点。

 

 

  • 加入windows服务,开机启动。

 

以下内容参考:https://www.cnblogs.com/manxiaolong/p/7241083.html

下载prunsrv 

  下载地址:http://archive.apache.org/dist/commons/daemon/binaries/windows/ 

我选用的是:commons-daemon-1.0.6-bin-windows

 

解压后复制文件 

  64位机器用amd64/prunsrv.exe 
  a. 复制 commons-daemon-1.0.6-bin-windows/amd64/prunsrv.exe 至 zookeeper-3.3.6\bin目录下
  这是做服务的执行程序 
  b. 复制 commons-daemon-1.0.6-bin-windows/prunmgr.exe 至 zookeeper-3.3.6\bin目录下

  监控服务配置及运行的程序 

 

.配置环境变量

  添加ZOOKEEPER_SERVICE, ZOOKEEPER_HOME两个环境变量

     ZOOKEEPER_SERVICE:服务名称(不要有中文)

     ZOOKEEPER_HOME:设置到zookeeper-3.3.6目录下

 

PS:因为我做的是windows的为集群环境,所以这里我分别为zk1、zk2、zk3配置了环境变量。

 

添加关闭脚本

分别在zk1、zk2、zk3的bin目录下添加一个 zkServerStop.cmd 文件.并分别改成各自的环境变量名称。

@echo off
setlocal
TASKLIST /svc | findstr /c:"%ZOOKEEPER_SERVICE%" > %ZOOKEEPER_HOME%\zookeeper_svc.pid
FOR /F "tokens=2 delims= " %%G IN (%ZOOKEEPER_HOME%\zookeeper_svc.pid) DO (
    @set zkPID=%%G
)
taskkill /PID %zkPID% /T /F
del %ZOOKEEPER_HOME%/zookeeper_svc.pid
endlocal
ZOOKEEPER_SERVICE%" > %ZOOKEEPER_HOME%\zookeeper_svc.pid
FOR /F "tokens=2 delims= " %%G IN (%ZOOKEEPER_HOME%\zookeeper_svc.pid) DO (
    @set zkPID=%%G
)
taskkill /PID %zkPID% /T /F
del %ZOOKEEPER_HOME%/zookeeper_svc.pid
endlocal

 

 

新建一个批处理文件install.bat来安装到windows服务。并更改为各自的环境变量名称。

 

 

prunsrv.exe "//IS//%ZOOKEEPER_SERVICE%" ^
        --DisplayName="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
        --Description="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
        --Startup=auto --StartMode=exe ^
        --StartPath=%ZOOKEEPER_HOME% ^
        --StartImage=%ZOOKEEPER_HOME%\bin\zkServer.cmd ^
        --StopPath=%ZOOKEEPER_HOME%\ ^
        --StopImage=%ZOOKEEPER_HOME%\bin\zkServerStop.cmd ^
        --StopMode=exe --StopTimeout=5 ^
        --LogPath=%ZOOKEEPER_HOME% --LogPrefix=zookeeper-wrapper ^
        --PidFile=zookeeper.pid --LogLevel=Info --StdOutput=auto --StdError=auto
ZOOKEEPER_SERVICE%" ^
        --DisplayName="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
        --Description="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
        --Startup=auto --StartMode=exe ^
        --StartPath=%ZOOKEEPER_HOME% ^
        --StartImage=%ZOOKEEPER_HOME%\bin\zkServer.cmd ^
        --StopPath=%ZOOKEEPER_HOME%\ ^
        --StopImage=%ZOOKEEPER_HOME%\bin\zkServerStop.cmd ^
        --StopMode=exe --StopTimeout=5 ^
        --LogPath=%ZOOKEEPER_HOME% --LogPrefix=zookeeper-wrapper ^
        --PidFile=zookeeper.pid --LogLevel=Info --StdOutput=auto --StdError=auto

 

 

 

 

 

最后在cmd中以管理员身份运行install.bat,或双击就OK了。

不过此时是未启动的,需要设置为开启启动。

 

配置下载:http://download.csdn.net/download/shengqianfeng/10247729

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jeff.sheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值