ZooKeeper 实战(一) 超详细的单机与集群部署教程(MacOS)
0. ZooKeeper简介
ZooKeeper是一个提供包括配置维护、域名服务、分布式同步、组服务等功能的集中式服务。主要功能如下:
-
分布式锁:Zookeeper可以帮助开发人员实现分布式锁,用于控制多个节点的并发访问。通过Zookeeper的原子广播和顺序一致性特性,可以实现高效且可靠的分布式锁。
-
配置管理:在分布式系统中,节点的配置信息可能需要动态地更改和共享。Zookeeper提供了一个简单而可靠的方式来实现配置的管理,开发人员可以将配置信息存储在Znode中,当配置发生变化时,Zookeeper会及时通知相关的节点。
-
命名服务:分布式系统中的节点通常需要有一个唯一的标识符来进行识别。Zookeeper可以提供一个简单的命名服务,根据节点的名称和路径来唯一标识每个节点。
-
分布式队列:Zookeeper可以帮助实现分布式系统中的队列功能,多个节点可以通过Zookeeper来访问和操作一个队列。Zookeeper提供了有序的Znode树特性,可以确保队列中的元素按照先进先出的顺序进行处理。
-
服务发现:在分布式系统中,节点需要能够发现和连接到其他相关的服务。Zookeeper提供了服务注册和发现的功能,可以帮助节点快速地发现和连接到其他需要的服务。
详细介绍可前往ZooKeeper官网地址。
1. 单机部署
1.1. ZooKeeper下载安装
官方推荐的稳定版本
(1)前往ZooKeeper官方下载地址选择稳定版本(官方文档中带有Release的版本号),如下图所示,博主选择版本3.7.2。
(2)选择二进制版本,即以-bin结尾的文件下载。
(3)下载完成后解压,并重命名文件夹为zk1。
1.2. 修改配置文件
(1)打开终端,进入conf目录,将zoo_sample.cfg 复制一份并重命名为zoo.cfg。
(2)输入 vim zoo.cfg
编辑zoo.cfg配置文件,修改数据和日志存放目录。
1.3. 启动服务端
进入bin目录,输入./zkServer.sh start
启动服务端。最后显示Starting zookeeper ... STARTED
表示启动成功。
1.4. 启动客户端
还是在bin目录下,输入./zkCli.sh
启动客户端。最后显示[zk: localhost:2181(CONNECTED) 0]
表示启动成功
至此单机部署已完成。
2. 集群部署
本次案例在同一台机器上部署,没有使用虚拟机或多台服务器。
2.1. 集群准备
(1)首先将上一节单机部署的zk1文件夹复制两份,分别命名为zk2,zk3。
(2)修改每个文件夹(zk实例)
配置参数解读:
server.A=B:C:D
A: 是一个数字,表示这个是第几号服务器。集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据 就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
B 是这个服务器的地址(ip或者主机名)。
C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口。
D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
zk1
(1)进入conf目录,编辑zoo.cfg文件
tickTime=2000
initLimit=10
syncLimit=5
# 数据文件存放路径
dataDir=../data
# 日志文件存放路径
dataLogDir=../logs
# 客户端连接端口
clientPort=2181
# zookeeper服务器端口号
admin.serverPort=2111
# 服务器列表,详细配置看《配置参数解读》
# 注意由于此处是在同一台机器上配置所有ip都一样,此时后面的端口不要重复了
server.01=127.0.0.1:2341:2351
server.02=127.0.0.1:2342:2352
server.03=127.0.0.1:2343:2353
# 如果部署在不同服务器,参照下方配置
# server.服务器myid=服务器的ip地址或者主机名:主从交流端口:选举端口
(2)进入dataDir所指定的目录,下创建文件myid,并输入01。
myid文件内容。
zk2
(1)进入conf目录,编辑zoo.cfg文件(与zk1类似)。注意clientPort
和admin.serverPort
修改了,同一台服务器端口不要重复。
tickTime=2000
initLimit=10
syncLimit=5
# 数据文件存放路径
dataDir=../data
# 日志文件存放路径
dataLogDir=../logs
# 客户端连接端口
clientPort=2182
# zookeeper服务器端口号
admin.serverPort=2112
# 服务器列表,详细配置看《配置参数解读》
# 注意由于此处是在同一台机器上配置所有ip都一样,此时后面的端口不要重复了
server.01=127.0.0.1:2341:2351
server.02=127.0.0.1:2342:2352
server.03=127.0.0.1:2343:2353
# 如果部署在不同服务器,参照下方配置
# server.服务器myid=服务器的ip地址或者主机名:主从交流端口:选举端口
(2)进入dataDir所指定的目录,下创建文件myid,并输入02。
zk3
(1)进入conf目录,编辑zoo.cfg文件(与zk1类似)。注意clientPort
和admin.serverPort
修改了,同一台服务器端口不要重复。
tickTime=2000
initLimit=10
syncLimit=5
# 数据文件存放路径
dataDir=../data
# 日志文件存放路径
dataLogDir=../logs
# 客户端连接端口
clientPort=2183
# zookeeper服务器端口号
admin.serverPort=2113
# 服务器列表,详细配置看《配置参数解读》
# 注意由于此处是在同一台机器上配置所有ip都一样,此时后面的端口不要重复了
server.01=127.0.0.1:2341:2351
server.02=127.0.0.1:2342:2352
server.03=127.0.0.1:2343:2353
# 如果部署在不同服务器,参照下方配置
# server.服务器myid=服务器的ip地址或者主机名:主从交流端口:选举端口
(2)进入dataDir所指定的目录,下创建文件myid,并输入03。
2.2. 启动集群服务器
(1)启动zk1
(2)启动zk2
(3)启动zk3
2.3. 查看服务器状态
(1)zk1 -> follower
(2)zk2 -> leader
(3)zk3 -> follower
至此集群部署完成。文章来源:https://www.toymoban.com/news/detail-857754.html
3. 总结
本篇文章旨在教会读者学会部署ZooKeeper,未涉及有关理论和使用的知识。后续将会基于本章部署好的ZooKeeper进行有关各项功能教学。文章来源地址https://www.toymoban.com/news/detail-857754.html
到了这里,关于ZooKeeper 实战(一) 超详细的单机与集群部署教程(MacOS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!