01 | CentOS 7.9 安装 zookeeper-3.7.0

435 阅读4分钟

1. 下载 Zookeeper

Zookeeper 官网

使用 wget 下载:

wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

2. 解压资源

# 解压资源到指定目录下
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz 
 
# 资源目录重命名
mv apache-zookeeper-3.7.0-bin/ zookeeper

# 移动到你想要安装的目录
mv zookeeper /usr/local

3. 启动 Zookeeper

Zookeeper 依赖 Java 环境,所以启动之前请配置好 JDK 或者 JRE

# 进入到之前解压后的zookeeper资源目录
cd /usr/local/zookeeper

# 重命名 Zookeeper 的配置文件
cp ./conf/zoo_sample.cfg ./conf/zoo.cfg

# 启动 Zookeeper
./bin/zkServer.sh start 

注意:Zookeeper在启动时会找 conf 下的 zoo.cfg 作为默认配置文件


4. 检查 Zookeeper 是否成功启动

ps -ef |grep zookeeper

# 如果可以查询到 Zookeeper 的进程,则说明成功启动了
# 需要注意的是,这样启动 Zookeeper 并不是开机自启的服务。

5. 设置 Zookeeper 服务开机自启

# 配置开机自启时,需要先停用 zookeeper 
./bin/zkServer.sh stop

cd /etc/systemd/system

# 在该目录下创建 zookeeper.service 
vi zookeeper.service 

# 在 zookeeper.service 输入以下内容,注意 zookeeper 的安装路径
[Unit]
Description=zookeeper.service
After=network.target
[Service]
Type=forking
Environment=/usr/local/zookeeper
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart
[Install]
WantedBy=multi-user.target

# 保存并退出 vi 

# 重新加载服务配置
systemctl daemon-reload

# 设置开机自启
systemctl enable zookeeper.service

# 启动 zookeeper
systemctl start zookeeper.service

查看 zookeeper 状态

systemctl status zookeeper.service

关闭 zookeeper

systemctl stop zookeeper.service

关闭开机自启

systemctl disable zookeeper.service

zookeeper-3.7.0 配置与部署官方文档

6. 基础配置说明

Zookeeper 提供了一个简单的配置文件示例:zoo_simple.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 directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

zookeeper 启动的时候默认会去加载 conf 目录下的 zoo.cfg 这个配置文件

zookeeper 可以指定配置文件启动,就是启动命令后面接配置文件路径,eg:zkServer.sh start ../conf/zoo_sample.cfg

参数说明

配置项说明
tickTime默认值 2000,单位 ms,必要配置
心跳检测时间间隔
也是 zookeeper 中的基本时间单位,关于时间配置该是该配置的倍数
initLime默认值 5,代表5次心跳,也就是 5 * 2000 ms
初始通信时限,集群中的 follower 节点与 leader 节点之间初始连接时限
syncLimit默认值 2
同步时限,follower 节点超过该时限未与 leader 通信,则认为该节点下线
dataDir默认值 /tmp/zookeeper,必要配置
保存数据的目录,默认情况下也是事务日志的存储目录
zookeeper 的数据以类目录树的结构存储,每间隔一段时间生成快照(shapshot)
clientPort默认值 2181,必要配置
监听客户端连接的端口

7. zookeeper 集群搭建

zookeeper 有三种搭建模式:

集群的搭建注意 clientPortdataDirdataLogDir的配置保持区分

dataLogDir:事务日志的存储目录,默认在 dataDir 配置的目录下。配置后可以有效避免数据快照与日志记录之间的竞争,所以建议配置

在上述配置文件的基础上添加集群节点的相关配置:

# 格式:server.id=host:port1:port2
# 其中 id 为server id,对应myid
# host 为 ip 或主机名称
# port1 为用于 followers 连接到 leader 的端口
# port2 为 leader 选举时使用的端口
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

在对应 zookeeper 实例配置文件中的 dataDir 目录下创建 myid 文件并记录对应的 server id,以 server.1 为例:

echo "1" > /usr/local/zookeeper/data1/myid

完整的配置文件示例如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data1
dataLogDit=/usr/local/zookeeper/log1

clientPort=2181

server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

多个 zookeeper 实例的配置文件一定要区分 clientPortdataDirdataLogDir

最后,逐一指定配置文件启动 zookeeper 实例即可

更细致的配置参数可以参考官方文档