ZooKeeper :Shell脚本搭建单机版ZooKeeper
本文博主将使用Shell
脚本搭建单机版ZooKeeper
,上一篇博客介绍了使用Shell
脚本搭建Nacos
集群:
- Spring Cloud Alibaba:搭建Nacos集群
方法其实是类似的,搭建集群版ZooKeeper
以后再介绍,博主最近比较忙,要准备发小论文和申请自由探索。
ZooKeeper
是分布式应用程序的高性能协调服务,分布式应用程序可以基于ZooKeeper
实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和服务注册中心等功能。
ZooKeeper
常用的使用场景就是用于担任服务注册中心。服务提供者将自己的信息注册到ZooKeeper
,服务消费者在进行服务调用的时候先到ZooKeeper
中查找服务,获取到服务提供者的信息之后,再去调用服务提供者的接口。
ZooKeeper
的一些重要概念和实现原理留到以后再详细介绍,接下来博主将介绍使用Shell
脚本搭建单机版ZooKeeper
。首先需要创建虚拟机(博主创建的虚拟机配置是内存2G
、磁盘8G
):
- VirtualBox安装CentOS7
设置静态IP
导致(为了防止IP
地址动态分配导致的麻烦,下面这篇博客有进行介绍):
- Spring Cloud Alibaba:搭建Nacos集群
Shell脚本
搭建单机版ZooKeeper
的Shell
脚本(脚本的注释写的比较详细):
脚本的意图:
- 安装
JDK
,需要提前将JDK
压缩包放到虚拟机的/usr/local/
路径下,博主不喜欢使用yum
安装JDK
,但使用wget
命令下载JDK
压缩包得到的是缺损包,因为Oracle
官方有验证;所以博主采取了折中的方式,手动上传JDK
压缩包,文件解压和配置环境变量就通过脚本完成。 - 下载
ZooKeeper
压缩包(从ZooKeeper
官网),再进行解压。 - 配置与运行
ZooKeeper
,创建配置文件zoo.cfg
(通过copy
官方给的样例配置文件zoo_sample.cfg
),在配置文件zoo.cfg
中修改数据存储路径、日志存储路径以及客户端连接端口这三个配置。关闭防火墙(方便远程连接ZooKeeper
),以单机方式启动ZooKeeper
。
将下载好的JDK
压缩包放到虚拟机的/usr/local/
路径下:
如果JDK
版本和博主不相同,需要修改脚本的这两个变量:
先将该Shell
脚本复制到虚拟机上:
保存后再退出:
- 怎么保存退出 vim 编辑
修改zookeeper.sh
脚本的权限(不然没有运行权限):
运行zookeeper.sh
脚本(ZooKeeper
版本为3.6.3
,客户端连接端口修改为9000
):
等待脚本执行完成。
ZooKeeper
启动成功:
查看ZooKeeper
服务的状态:
zookeeper.sh
脚本执行完成后,配置文件zoo.cfg
也成功被创建和修改了:
-
tickTime
:ZooKeeper
中最小的时间单位长度 (默认2000ms
)。 -
initLimit
:follower
节点启动后与leader
节点完成数据同步的时间(指定为tickTime
的倍数,默认10
倍,即20s
)。 -
syncLimit
:leader
节点和follower
节点进行心跳检测的最大延迟时间(指定为tickTime
的倍数,默认5
倍,即10s
)。 -
dataDir
:表示ZooKeeper
存储快照文件的目录(默认为/tmp/zookeeper
)。 -
dataLogDir
:表示ZooKeeper
事务日志的存储路径,默认指定在dataDir
目录下 。 -
clientPort
:表示ZooKeeper
客户端和ZooKeeper
服务端建立连接的端口号(默认 2181
)。
dataDir
和dataLogDir
也被创建了:
ZooKeeper
提供的脚本程序:
zkServer.sh
用于启动ZooKeeper
服务,zkCli.sh
以客户端的方式连接ZooKeeper
服务。使用zkCli.sh
连接ZooKeeper
服务:
-
timeout
:表示ZooKeeper
客户端向ZooKeeper
服务端发送心跳的时间间隔,单位为毫秒。因为ZooKeeper
客户端与ZooKeeper
服务端的连接状态是通过心跳检测来维护的,如果在指定的时间间隔内,ZooKeeper
客户端没有向ZooKeeper
服务端发送心跳包,ZooKeeper
服务端则会断开与该ZooKeeper
客户端的连接。参数5000
,表示ZooKeeper
客户端向ZooKeeper
服务端发送心跳的间隔为5
秒。 -
server
:指定ZooKeeper
服务端的IP
地址与客户端连接端口,ZooKeeper
默认的客户端连接端口为2181
,因为博主修改了ZooKeeper
客户端连接端口配置,因此要指定为修改后的客户端连接端口。
ZooKeeper
客户端成功连接ZooKeeper
服务端:
查看ZooKeeper
给客户端提供了哪些命令(help
,其实服务端并没有提供help
命令,当客户端执行的命令在服务端不存在时,服务端会返回提供的所有命令):
ZooKeeper
提供给客户端的ls
命令(用于列出指定路径下的Znode
,这些ZooKeeper
的重要概念以后会详细介绍)和Linux
的ls
命令(用于列出指定路径下的文件)类似。其他命令这里先不进行介绍,博主以后会详细介绍这些命令。
使用Shell
脚本搭建单机版ZooKeeper
就介绍到这里,如果博主有说错的地方或者大家有不同的见解,欢迎大家评论补充。