ZooKeeper集群学习--从零开始搭建本地伪集群

前言

为了方便本地开发学习测试ZooKeeper集群,而不想要找多个服务器,可将多个ZooKeeper节点都部署在一台服务器或本地机器上,故称伪集群。实际上,如果了解了伪集群模式下的安装和配置,那么在生产环境下的安装配置也差不多了。

需要注意的是:由于ZooKeeper是使用Java编写的,所以在安装之前必须要准备好Java运行环境,这里不做展开。

下载ZooKeeper

下载地址https://mirrors.cnnic.cn/apache/zookeeper/当前的稳定版本https://mirrors.cnnic.cn/apache/zookeeper/stable/历史版本http://archive.apache.org/dist/zookeeper/这里下载使用了zookeeper-3.6.3,下载文件apache-zookeeper-3.6.3-bin.tar.gz,将文件解压到自定义路径下,这里用D:\zookeeper-3.6.3作为安装路径,后边配置会用到。

注意:从3.5.5 版本以后,只有带有bin标识的文件才是编译后的文件,其他的是未编译的文件,所以下载时要做好选择。

安装ZooKeeper

规划节点个数

安装之前要先规划安装节点的个数,推荐单数,最少3个节点,这里选择3个,推荐单数的原因见另一篇文章:

ZooKeeper集群推荐节点个数为奇数(2n+1)个的理解

创建数据目录和日志目录

分别为3个节点创建数据目录和日志目录,日志目录默认设置在该节点数据目录相同路径下,这里将其分开创建:

数据目录:安装路径下创建文件夹data,内再创建zoo-1,zoo-2,zoo-3三个文件夹分别作为3个节点的数据目录;

日志目录:安装路径下创建文件夹log,内再创建zoo-1,zoo-2,zoo-3三个文件夹分别作为3个节点的日志目录。

创建id文件

ZooKeeper每个节点都需要一个记录节点id的文本文件,文件名为myid,文本内容为数字,不能有其他内容,用来表示节点的id编号,各节点各不相同,默认存放在节点数据目录下,这里不做更改。

分别在data目录下的zoo-1,zoo-2,zoo-3目录内创建myid文件,文件的文本内容分别为1,2,3作为相应的id编号。

注意:myid中文本值只能是数字,且范围在1~255,表示节点个数最多为255个。

 创建修改配置文件

ZooKeeper包里有一个官方的配置文件样板zoo_sample.cfg,在安装目录下conf文件夹中,在此路径下,将样版配置文件复制三份,分别命名为zoo-1.cfg,zoo-2.cfg,zoo-3.cfg。

为每一个节点修改配置文件,这里以节点1为例,各个选项的解释如下:

#数据目录(路径改为自己安装路径;myid文件在此目录下;注意斜杠方向)
dataDir=D:/zookeeper-3.6.3/data/zoo-1
#日志目录(没有该参数,默认=dataDir)
dataLogDir=D:/zookeeper-3.6.3/log/zoo-1
#客户端连接当前节点的端口号(实际集群各节点放在不同服务器上,端口号为了方便记忆一般相同,伪集群放在同一机器上,注意错开,这里可以递加)
clientPort=2181
#集群中各节点信息(全部节点,包括自身),格式为:
#server.id=host:port:port
#id与各节点myid文件中的id一致
#两个端口号,前一个用于节点之间通信,后一个用于选举主节点
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启动文件在安装路径中bin文件夹下,在Windows环境下,启动文件为zkServer.cmd,为每个节点复制一份,分别命名为zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd,在其中增加设置配置文件路径的语句,以节点1为例:

setlocal
call "%~dp0zkEnv.cmd"

REM 设置配置文件路径,路径改为自己的安装路径
set ZOOCFG=D:\zookeeper-3.6.3\conf\zoo-1.cfg

set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set ZOO_LOG_FILE=zookeeper-%USERNAME%-server-%COMPUTERNAME%.log

echo on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*

endlocal

启动

分别运行zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd,运行完成之后,可以使用ZooKeeper客户端zkCli.cmd连接集群,在Windows命令提示符窗口,进入bin目录,运行:

D:\zookeeper-3.6.3\bin>.\zkCli.cmd -server 127.0.0.1:2181

如果显示CONNECTED则连接成功:

[zk: 127.0.0.1:2181(CONNECTED) 0]

注意:ZooKeeper集群需要有1/2以上的节点启动才能完成集群的启动,才能对外提供服务。所以,至少需要启动两个节点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值