# Zookeeper 集群部署
# 1. 集群规划
name | ip |
---|---|
master | 172.16.208.160 |
slave1 | 172.16.208.161 |
slave2 | 172.16.208.162 |
# 2. 下载 zookeeper
官网下载地址:https://zookeeper.apache.org/releases.html
分别在三台机器上下载 zookeeper:
创建 zookeeper 目录,并预先创建好 data 目录
cd ~ mkdir zookeeper cd zookeeper mkdir data
下载 zookeeper
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz --no-check-certificate
解压
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
进入解压后的文件夹中
cd apache-zookeeper-3.7.0-bin
# 3. 修改配置文件
分别修改三台机器上的 zookeeper 配置文件:
进入 conf 目录
cd conf
复制 zoo_sample.cfg 文件并重命名为 zoo.cfg
cp zoo_sample.cfg zoo.cfg
修改 zoo.cfg
vim zoo.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=/root/zookeeper/data # the port at which the clients will connect clientPort=2181 # cluster server.0=172.16.208.160:2888:3888 server.1=172.16.208.161:2888:3888 server.2=172.16.208.162:2888:3888
tickTime
: 基本事件单元,这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔 tickTime 时间就会发送一个心跳;最小的 session 过期时间为 2 倍 tickTime;initLimit
: 允许 follower 连接并同步到 Leader 的初始化连接时间,以 tickTime 为单位。当初始化连接时间超过该值,则表示连接失败;syncLimit
: 表示 Leader 与 Follower 之间发送消息时,请求和应答时间长度。如果 Follower 在设置时间内不能与 Leader 通信,那么此 Follower 将会被丢弃;dataDir
: 存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能;clientPort
: 监听客户端连接的端口;service.A=B:C:D
- A:其中 A 是一个数字,表示这个是服务器的编号;
- B:是这个服务器的 IP 地址;
- C:Zookeeper 服务器之间的通信端口;
- D:Leader 选举的端口。
更多参考官网:https://zookeeper.apache.org/doc/r3.5.8/zookeeperAdmin.html#sc_configuration
# 4. 创建 myid 文件
分别为三台 zookeeper 服务器创建唯一标志文件:
在上步中
dataDir
目录下创建myid
文件cd /root/zookeeper/data vim myid
在该文件添加上一步 server 配置的对应 A 数字
server.0=172.16.208.160:2888:3888 server.1=172.16.208.161:2888:3888 server.2=172.16.208.162:2888:3888
服务器一:在 myid 中写 0
服务器二:在 myid 中写 1
服务器三:在 myid 中写 2
# 5. 配置环境变量
为了能够在任意目录启动 zookeeper 集群,我们需要在三台机器上分别配置环境变量:
在 /etc/profile 末尾添加
#set zookeeper environment export ZK_HOME=/root/zookeeper/apache-zookeeper-3.7.0-bin export PATH=$PATH:$ZK_HOME/bin
刷新配置
source /etc/profile
7475633000
9188466000
# 6. 启动 zookeeper 集群
常用命令:
- 启动命令:zkServer.sh start
- 停止命令:zkServer.sh stop
- 重启命令:zkServer.sh restart
- 集群状态:zkServer.sh status
分别启动三台机器的 zookeeper:
zkServer.sh start
分别查看各个机器中的集群状态:
[root@localhost ~]# zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@localhost ~]# zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@localhost ~]# zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower