zookeeper 集群搭建

1. 依赖

该教程依赖已经准备好的 linux 环境,请先查看:

LINUX 集群环境准备

2. 下载和解压

点击下载

tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /opt/module
cd /opt/module
mv apache-zookeeper-3.8.0-bin zookeeper-3.8.0

3. 配置

3.1. 创建集群唯一标识

准备一个数据文件夹,并创建节点唯一标识 myid

cd /opt/module/zookeeper-3.8.0
mkdir data
cd data
vim myid

# 写入一个节点的唯一标识,如数字:2
# 注意每台服务器都需要设置成不同的数字

3.2. JAVA 进程配置文件

这个配置可以不配,但是由于我们学习阶段,资源有限,这里则特意将进程的内存调小,防止资源不够

cd /opt/module/zookeeper-3.8.0/conf
vim java.env

# 文件中可以写一点 JAVA 程序参数配置,如堆内存
export JVMFLAGS="-Xms64m -Xmx64m $JVMFLAGS"

3.3. zookeeper 程序配置文件

官方存在一个配置文件的样板,我们可以通过复制样板修改自己的配置文件

cd /opt/module/zookeeper-3.8.0/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

配置文件内容大致如下

# 服务端与客户端的心跳时间
tickTime=2000

# 主节点和从节点初始化连接的心跳次数上限
initLimit=10

# 主节点和从节点同步通讯的心跳次数上限
syncLimit=5

# 数据储存路径,默认 tmp 为临时目录
dataDir=/opt/module/zookeeper-3.8.0/data

# 数据目录下数据快照的数量
autopurge.snapRetainCount=1

# 清理快照的时间间隔,单位小时,0 为不清理
autopurge.purgeInterval=0

# 客户端连接端口
clientPort=2181

# 最大的客户端连接数量
maxClientCnxns=60

# 集群节点配置,配置格式如下,[] 表示变量
# server.[myid]=[host | ip]:[主从通信端口]:[重选主机的端口]
server.1=mitchell-101:2888:3888
server.2=mitchell-102:2888:3888
server.3=mitchell-103:2888:3888

4. 分发

将 zookeeper 和 修改的配置文件一起分发给其它机器

xsync /opt/module/zookeeper-3.8.0

5. 帮助脚本

集群环境下,不管是启动还是关闭都是一件比较麻烦的事情,这里准备一个脚本,从而实现一次性的启动和关闭,方便操作

vim /opt/module/bin/mzookeeper.sh
chmod +x mzookeeper.sh

脚本内容参考

#!/bin/bash

if [ $# -lt 1 ]
then
	echo "请输入参数 start、stop 或 status"
	exit;
fi

case $1 in
"start")
	echo "=============================== 启动 zookeeper 集群 ==============================="
    for i in mitchell-101 mitchell-102 mitchell-103
    do
        echo "------------------------------- 启动 $i  -------------------------------"
        ssh $i "/opt/module/zookeeper-3.8.0/bin/zkServer.sh start"
	done
;;
"stop")
	echo "=============================== 停止 zookeeper 集群 ==============================="
    for i in mitchell-101 mitchell-102 mitchell-103
    do
        echo "------------------------------- 停止 $i  -------------------------------"
        ssh $i "/opt/module/zookeeper-3.8.0/bin/zkServer.sh stop"
	done
;;
"status")
	echo "=============================== 查看 zookeeper 集群 ==============================="
    for i in mitchell-101 mitchell-102 mitchell-103
    do
        echo "------------------------------- 查看 $i  -------------------------------"
        ssh $i "/opt/module/zookeeper-3.8.0/bin/zkServer.sh status"
	done
;;
*)
	echo "请输入参数 start、stop 或 status"
;;
esac

你可能感兴趣的:(zookeeper)