目录

Linux下部署Zookeeper

目的

本篇文章主要介绍如何部署Zookeeper和Zookeeper集群。

单机部署

准备环境

  1. 一台Linux服务器,本实例是CentOS7.4。
  2. 部署JDK,可以查看Linux下安装JDK
  3. 去**清华大学开源软件镜像站 **下载zookeeper
1
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.9-bin.tar.gz

解压

  1. 创建zookeeper放置的路径
1
mkdir -vp /usr/local/zookeeper
  1. 解压到指定路径
1
tar -xzvf apache-zookeeper-3.5.9-bin.tar.gz -C /usr/local/zookeeper/
  1. 配置软链接
1
ln -sf /usr/local/zookeeper/apache-zookeeper-3.5.9-bin /usr/local/zookeeper/default

配置

  1. 配置环境变量,在/etc/profile文件添加如下配置
1
2
export ZOOKEEPER_HOME=/usr/local/zookeeper/default
export PATH=$PATH:$ZOOKEEPER_HOME/bin
  1. zookeeper配置文件
1
cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
  1. zoo.cfg
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 每个刻度的毫秒数
tickTime=2000
# 初始的刻度数
# 同步阶段可能需要
initLimit=10
# 发送请求和获得确认之间可以确认身份的滴答声数量
syncLimit=5
# 快照存储的目录。
# 不要使用/ tmp进行存储,这里/ tmp只是示例。
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
# 客户端将连接的端口
clientPort=2181
# 客户端连接的最大数量。
# 如果您需要处理更多客户,请增加此数量
#maxClientCnxns=60
#
# 在打开自动清除功能之前,请务必阅读管理员指南的维护部分。
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# 要保留在dataDir中的快照数
#autopurge.snapRetainCount=3
# 清除任务间隔(以小时为单位)
# 设置为“ 0”以禁用自动清除功能
#autopurge.purgeInterval=1

# 从3.5.0版本开始,zookeeper增加了AdminServer,提供HTTP接口 http://localhost:8080/commands
# Java系统变量:zookeeper.admin.enableServer
# 设置为“ false”以禁用AdminServer。 默认情况下,AdminServer是启用的。
admin.enableServer=true
# Java系统变量:zookeeper.admin.serverPort
# 嵌入式Jetty服务器侦听的端口。 默认为8080
admin.serverPort=8080
# Java系统变量:zookeeper.admin.commandURL
# 相对于根URL列出和发布命令的URL。 默认为“/commands”。
admin.commandURL=/commands

启动

1
zkServer.sh start

验证

1
zkServer.sh status

停止

1
zkServer.sh stop

集群部署

为了保证集群高可用,zookeeper集群的节点数量最好是奇数,最少要有3个节点。本篇文章使用3个服务器进行搭建,主机名分别为zoo1,zoo2,zoo3,并且在/etc/hosts文件中配置对应的IP。

以之前部署的单节点是在zoo1服务器上为例,首先确保zookeeper已经停止运行。

1
zkServer.sh stop

安装pdsh

pdsh的部署可以参考这篇文章

修改zookeeper的配置文件

  1. zoo.cfg文件增加如下配置
1
2
3
4
5
# server.1 这个1是服务器的标识,可以是1到255之间任意有效数字,不同节点不能相同,这个标识要写到dataDir目录下面myid文件里
# 指定集群间通讯端口和选举端口
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

部署配置其他节点

  1. 在其他节点创建目录
1
pdsh -w zoo[2,3] mkdir -vp /usr/local/zookeeper
  1. 将配置好的zookeeper传输到其他节点 pdcp是安装pdsh时附带安装,用于传输文件。
1
pdcp -r -w zoo[2,3] /usr/local/zookeeper/apache-zookeeper-3.5.9-bin /usr/local/zookeeper/
  1. 节点配置软链接
1
 pdsh -w zoo[2,3] ln -sf /usr/local/zookeeper/apache-zookeeper-3.5.9-bin /usr/local/zookeeper/default
  1. 节点配置环境变量
1
pdcp -r -w zoo[2,3] /etc/profile /etc/profile
  1. 配置myid
1
2
3
4
pdsh -w zoo[1-3] mkdir -vp /opt/zookeeper/data
pdsh -w zoo1 "echo 1 > /opt/zookeeper/data/myid"
pdsh -w zoo2 "echo 2 > /opt/zookeeper/data/myid"
pdsh -w zoo3 "echo 3 > /opt/zookeeper/data/myid"

启动集群

1
pdsh -w zoo[1-3] "source /etc/profile;zkServer.sh start"

查看集群状态

1
pdsh -w zoo[1-3] "source /etc/profile;zkServer.sh status"