ZooKeeper集群部署

参考链接: https://ken.io/note/zookeeper-cluster-deploy-guide

一.前言

1.1ZooKeeper简介

ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)、分布式锁(Distributed Lock)等简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

1.2ZooKeeper集群角色说明

ZooKeeper主要有领导者(Leader)跟随者(Follower)观察者(Observer)三种角色。

二.准备工作

2.1集群节点规划

ZooKeeper在提供分布式锁等服务的时候需要过半数的节点可用。另外高可用的诉求来说节点的个数必须>1,所以ZooKeeper集群需要是>1的奇数节点。例如3、5、7等等。
本次我们规划三个节点,操作系统选用CentOS 7。

节点名 IP 说明
zookeeper01 192.168.172.8 zookeeper节点
zookeeper02 192.168.172.9 zookeeper节点
zookeeper03 192.168.172.10 zookeeper节点

2.2软件版本说明

说明
Linux Server Centos 7
JDK 1.8.0_282
Zookeeper zookeeper-3.4.14

2.3部署JDK8

所有节点均需要安装JDK8。

yum search jdk
yum install java-1.8.0-openjdk.x86_64 -y
java -version

三.部署流程

本次一共要部署3个zookeeper节点,所有文中没有指定机器的操作都表示每个节点都要执行该操作。

3.1下载Zookeeper和基础准备

  • 1.下载ZooKeeper
    官方镜像选择:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
cd /home/download
浏览器中访问: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 
下载需要的zookeeper版本,我这里下载的是zookeeper-3.4.14.tar.gz
  • 2.创建ZooKeeper相关目录

创建应用目录

mkdir /usr/zookeeper

创建数据目录

mkdir /zookeeper
mkdir /zookeeper/data
mkdir /zookeeper/logs

解压到指定目录

tar -zvxf zookeeper-3.4.14.tar.gz -C /usr/zookeeper
  • 3.配置环境变量

修改环境变量文件

vim /etc/profile

增加以下内容

export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH
  • 4.使环境变量生效
source /etc/profile
  • 5.查看配置结果
echo $ZOOKEEPER_HOME

既然已配置环境变量,为了方便访问ZooKeeper目录
后续通过$ZOOKEEPER_HOME代替/usr/zookeeper/zookeeper-3.4.14

  • 6.主机之间的解析做好解析,绑定hosts写入/etc/hosts中
vim /etc/hosts
192.168.172.8 zookeeper01
192.168.172.9 zookeeper02
192.168.172.10 zookeeper03

3.2配置Zookeeper

  • 1.ZooKeeper基础配置
进入ZooKeeper配置目录
cd $ZOOKEEPER_HOME/conf

新建配置文件
vim zoo.cfg

写入以下内容并保存
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data
dataLogDir=/zookeeper/logs
clientPort=2181
server.1=192.168.172.8:2888:3888
server.2=192.168.172.9:2888:3888
server.3=192.168.172.10:2888:3888

zoo.cfg配置信息:
zookeeper 的三个端口作用:

  • 2181 : 对 client 端提供服务
  • 2888 : 集群内机器通信使用
  • 3888 : 选举 leader 使用

zk01

echo "1" > /zookeeper/data/myid

zk02

echo "2" > /zookeeper/data/myid

zk03

echo "3" > /zookeeper/data/myid
  • 3.防火墙配置
开放端口
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --add-port=2888/tcp --permanent
firewall-cmd --add-port=3888/tcp --permanent

重新加载防火墙配置
firewall-cmd --reload

在本地测试环境,如果觉得配置防火墙策略太麻烦的话,可以直接关闭防火墙和设置selinux==disabled

systemctl stop firewalld
systemctl disable firewalld

vim /etc/sysconfig/selinux
SELINUX=disabled

3.3启动ZooKeeper

进入ZooKeeper bin目录
cd $ZOOKEEPER_HOME/bin

启动
sh zkServer.sh start

出现以下字样表示启动成功:
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper … STARTED

四.集群查看&测试连接工作

  • 1.查看节点状态
sh $ZOOKEEPER_HOME/bin/zkServer.sh status

状态信息
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower

如果为领导者节点则Mode:leader
  • 2.客户端连接测试
    这里随机选其中一个节点作为客户端连接其他节点即可
指定Server进行连接
sh $ZOOKEEPER_HOME/bin/zkCli.sh -server 192.168.172.9:2181 

正常连接后会进入ZooKeeper命令行,显示如下:
[zk: 192.168.172.9:2181(CONNECTED) 0] 
  • 3.输入命令测试
查看ZooKeeper根
[zk: 192.168.172.9:2181(CONNECTED) 0] ls /
[zookeeper]

五.备注

5.1zookeeper常用配置项说明

5.2附录

参考链接:
https://www.jianshu.com/p/abbc1411ed9d

https://zookeeper.apache.org/doc/current/zookeeperStarted.html

原文地址:https://www.cnblogs.com/even160941/p/14666971.html