Zookeeper使用详解之安装篇(Zookeeper详细安装教程)

Zookeeper使用详解之安装篇(Zookeeper详细安装教程)

一、简介

ZooKeeper是Apache软件基金会的项目,其是一个高可用的分布式的数据管理和协调框架,其可为大型分布式计算应用提供分布式配置服务、同步服务以及命名注册等,同时保证分布式环境中数据的一致性。此外,ZooKeeper还可通过CP实现高可用。

对于ZooKeeper而言,其设计目标是对复杂且易出错的分布式一致性服务进行封装,从而构建高效且可靠的原语集,并为用户提供简单易用的接口。可以说,ZooKeeper为典型的分布式一致性解决方案。通过使用ZooKeeper可实现诸如:数据发布/订阅、分布式协调/通知、负载均衡、集群管理、命名服务、Master选举,分布式锁和分布式队列等功能。

本篇只介绍如何进行安装。

二、安装

2.1 下载

首先需从官网下载对应的安装包,其官网地址为:http://zookeeper.apache.org/,本篇使用的版本为:apache-zookeeper-3.8.1-bin.tar.gz,下载完毕后如下:

2.2 安装

对于ZooKeeper的安装而言,操作系统不同,安装方式也不尽相同。本文介绍的为Linux系统下的安装方式。

首先使用常见的Shell工具(如:MobaXterm、Putty等)将对应的压缩包上传至服务器。我这里使用虚拟机来模拟Linux服务器。

上传后如下图所示:

接着使用如下命令进行解压缩:

 # 创建解压卤路径
mkdir -p /home/Programs/zookeeper
# 进行解压 
tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz -C /home/Programs/zookeeper/

解压缩之后如下图所示:

解压缩完毕后,进入到zookeeper的conf目录下,并使用如下命令将zoo_sample.cfg拷贝一份并命名为zoo.cfg:

cp zoo_sample.cfg zoo.cfg

复制完毕后如下:

接着使用vi命令对zoo.cfg进行编辑,修改dataDir的值。如下所示:

修改完毕后,进入bin目录,并使用如下命令来启动ZooKeeper:

./zkServer.sh start

执行结果如下所示:

若需使用远程方式访问,则需做一些额外处理,因为Linux的防火墙会将远程访问请求进行拦截。若为个人测试,则使用如下命令将防火墙直接关闭即可:

systemctl stop firewalld

当然,若在实际开发中则需对指定端口进行放行,于ZooKeeper而言,其默认端口为2181。放开端口限制的命令如下:

# 添加防火墙对指定端口的访问
firewall-cmd --add-port=2181/tcp --permanent
# 重新加载防火墙的配置
firewall-cmd --reload

2.3 常用服务操作命令

对于ZooKeeper而言,其常用的服务操作命令大致分为:启动命令,查看状态命令、重启服务命令、查看版本命令和关闭服务命令等。

2.3.1 启动命令

启动命令如下:

./zkServer.sh start

执行后结果如下图:

2.3.2 查看状态命令

查看状态命令为:

./zkServer.sh status

执行后结果如下图:

2.3.3 重启服务命令

重启服务命令为:

./zkServer.sh restart

执行后结果如下所示:

2.4.4 查看版本命令

查看版本命令为:

./zkServer.sh version

执行后结果如下图:

2.4.5 关闭服务命令

关闭服务命令为:

./zkServer.sh stop

执行后结果如下所示:

2.4 自定义服务启动

为了方便Zookeeper的启动以及开机自启,可将ZooKeeper配置成自定义服务。

首先进入/usr/lib/systemd/system目录下,接着使用vi命令新建zookeeper.service,并输入如下内容:

[Unit]
Description=zookeeper
After=nework.target
ConditionPathExists=/home/Programs/zookeeper/apache-zookeeper-3.8.1-bin/conf/zoo.cfg
[Service]
Type=forking
ExecStart=/home/Programs/zookeeper/apache-zookeeper-3.8.1-bin/bin/zkServer.sh start
ExecStop=/home/Programs/zookeeper/apache-zookeeper-3.8.1-bin/bin/zkServer.sh stop
User=root
Group=root
[Install]
WantedBy=multi-user.target

接着使用如下命令启动即可:

# 启用zookeeper服务,此时zookeeper会开机自启
systemctl enable zookeeper
# 启动zookeeper服务
systemctl start zookeeper

执行后使用“systemctl status zookeeper”进行查看,结果如下所示:

2.5 集群启动

对于ZooKeeper的集群而言,大致分为两种,分别是:伪集群和集群。这两者的区别在于,伪集群会将多个ZooKeeper部署在同一台机器上,由于其host相同,因此需通过不同的端口来进行节点的区分,而集群则是将多个ZooKeeper部署在不同的机器上。

下面介绍一下如何进行部署。当然,这里使用伪集群的方式,集群方式与此类似。

首先需要解压出三份zookeeper,如下所示:

接着在每个解压后的zookeeper文件中新加data目录,如下所示:

接着在各自的data目录下新建myid文件,并输入当前结点的序号,如下图所示:

接着将conf下的zoo_sample.cfg拷贝一份并重命名为zoo.cfg。并修改内容如下所示:

# node1节点的zoo.cfg
tickTime=2000
dataDir=/root/program/zookeeper/node1/apache-zookeeper-3.7.0-bin/data
dataLogDir=/root/program/zookeeper/node1/apache-zookeeper-3.7.0-bin/logs
clientPort=2181
initLimit=10
syncLimit=5
server.1=192.168.56.103:2888:3888
server.2=192.168.56.103:2889:3889
server.3=192.168.56.103:2890:3890
# node2节点的zoo.cfg
tickTime=2000
dataDir=/root/program/zookeeper/node2/apache-zookeeper-3.7.0-bin/data
dataLogDir=/root/program/zookeeper/node2/apache-zookeeper-3.7.0-bin/logs
clientPort=2182
initLimit=10
syncLimit=5
server.1=192.168.56.103:2888:3888
server.2=192.168.56.103:2889:3889
server.3=192.168.56.103:2890:3890
# node3节点的zoo.cfg
tickTime=2000
dataDir=/root/program/zookeeper/node3/apache-zookeeper-3.7.0-bin/data
dataLogDir=/root/program/zookeeper/node3/apache-zookeeper-3.7.0-bin/logs
clientPort=2183
initLimit=10
syncLimit=5
server.1=192.168.56.103:2888:3888
server.2=192.168.56.103:2889:3889
server.3=192.168.56.103:2890:3890

对于以上的内容来说,其格式为:server.id=host:port1:port2。其含义分别为:

  • id:也被称为server ID,用来作机器在集群中的序号,当然,为达成该目的,需在各ZooKeeper的解压包数据目录下(dataDir参数指定的目录)创建对应的myid文件,且填入一个数字序号,该数字序号即为每个ZooKeeper节点的ServerID。
  • port1:表示该服务器与集群的Leader服务器进行信息交互的端口。
  • port2:表示在集群中参与Leader选举的接口。当集群中的Leader服务挂掉时,可通过port2 在Leader重新选举时与其他服务器进行通信。若为伪集群,则各端口应不同。当然,大多时候port1和port2会相差1000左右。

配置完毕后,依次使用启动命令启动各节点,之后查询各节点的状态如下图所示:

2.6 ZooKeeper分析工具

2.6.1 ZooInspect

对于ZooKeeper而言,安装较方便,但查看数据却比较难,这里给出一个查看ZooKeeper数据的工具:ZooInspector。其下载地址为:ZooInspector。下载之后进行解压,如下图所示:

接着进入到build目录中,如下图所示:

接着运行zookeeper-dev-ZooInspector.jar,启动之后页面如下所示:

接着点击如下按钮进行启动,如下图:

在弹出来的页面中输入zookeeper的地址访问即可。当然,偶尔会出现连接不上的情况,即使进行了防火墙确认、网络联通确认,也会无法连接。此时可先通过Java客户端进行连接后再次连接即可。至于原因为何,我暂时也未搞懂。

2.6.2 PrettyZoo

除ZooInspect外,还可使用PrettyZoo来进行查看ZooKeeper的信息,其官网地址为:https://github.com/vran-dev/PrettyZoo/releases,下载后如下:

接着进行安装,按照提示一步步往前推进即可,安装完毕后如下:

对于我个人而言,更倾向于使用PrettyZoo。一是界面好看,二是不会出现首次无法连接的情况。

给TA打赏
共{{data.count}}人
人已打赏
干货分享

Zookeeper使用详解之常见操作篇(ZooKeeper常见节点操作)

2023-8-23 9:30:45

干货分享

ZooKeeper的事件机制原理是什么?(一文了解 Zookeeper 基本原理与应用场景)

2023-8-23 9:49:55

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
打开微信,扫描左侧二维码,关注【旅游人lvyouren】,发送【101】获取验证码,输入获取到的验证码即可解锁复制功能,解锁之后可复制网站任意一篇文章,验证码每月更新一次。
提交