CentOS7.6上进行zookeeper3.4.14集群部署超详细图文版

CentOS7.6上进行zookeeper3.4.14集群部署

一、前言

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

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

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

角色说明
领导者 (Leader)为客户端提供读和写的服务,负责投票的发起和决议,更新系统状态。
跟随者(Follower)为客户端提供读服务,如果是写请求则转发给Leader。在选举过程中参与投票
观察者(Observer)为客户端提供读服务,如果是写请求则转发给Leader。不参与选举过程中的投票,也不参与“过半写成功”策略。在不影响写性能的情况下提升集群的读性能。此角色与zookeeper3.3系列新增的角色。

二、准备工作

1、安装规划

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

节点名IP说明
zookeeper01172.17.132.13zookeeper节点
zookeeper02172.17.132.34zookeeper节点
zookeeper01172.17.132.243zookeeper节点

2、软件版本说明

说明
Linux ServerCentos 7.6
JDK1.8.0_321
Zookeeperzookeeper-3.4.14

三、部署流程

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

3.1下载Zookeeper和基础准备

下载zookeeper并解压,创建所需目录

cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zvxf zookeeper-3.4.14.tar.gz
cd zookeeper-3.4.14
mkdir data
mkdir logs 

关闭防火墙

systemctl stop firewalld

所有节点均需要安装JDK8。

wget https://download.oracle.com/otn/java/jdk/8u321-b07/df5ad55fdd604472a86a45a217032c7d/jdk-8u321-linux-x64.tar.gz
tar -zxvf jdk-8u321-linux-x64.tar -C /usr/local/jdk1.8

配置jdk环境变量

vim /etc/profile

增加以下内容

export JAVA_HOME=/usr/local/jdk1.8
export PATH=JAVA_HOME/bin:PATH
export CLASSPATH=.:JAVA_HOME/lib:JAVA_HOME/jre/lib:$CLASSPATH

验证配置结果

source /etc/profile
java -version

3.2 配置Zookeeper

vim /opt/zookeeper-3.4.14/conf/zoo.cfg

修改完成后的样子

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-3.4.14/data
dataLogDir=/opt/zookeeper-3.4.14/logs
clientPort=2181
server.1=172.17.132.13:2888:3888
server.2=172.17.132.34:2888:3888
server.3=172.17.132.243:2888:3888

zookeeper 的三个端口作用:

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

分别在三台机器的data目录中创建myid文件,内容为阿拉伯数字 1(如果是server.2则为2,与server对应)

zk01:172.17.132.13

echo "1" > /opt/zookeeper-3.4.14/data/myid

zk02:172.17.132.34

echo "2" > /opt/zookeeper-3.4.14/data/myid

zk03:172.17.132.243

echo "3" > /opt/zookeeper-3.4.14/data/myid

3.3 启动ZooKeeper

sh /opt/zookeeper-3.4.14/bin/zkServer.sh start

出现下图所示即为启动成功

zookeeper启动成功

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

4.1 查看节点状态

必须所有节点都启动以后,然后等一段时间,让三个节点互相通讯,然后才能进行状态查看

否则你会看到如下内容

zookeeper集群状态未完全启动成功

sh /opt/zookeeper-3.4.14/bin/zkServer.sh status

看到下图所示即为成功

zookeeper集群状态完全启动成功

如果为领导者节点则Mode:leader

4.2 客户端连接测试

这里随机选其中一个节点作为客户端连接其他节点即可

sh /opt/zookeeper-3.4.14/bin/zkCli.sh -server 172.17.132.34:2181

如下图所示即为成功

zookeeper客户端连接成功

4.3 输入命令测试

查看ZooKeeper根

[zk: 172.17.132.34:2181(CONNECTED) 2] ls /
[zookeeper]

退出zookeeper链接

[zk: 172.17.132.34:2181(CONNECTED) 2] quit

4.4 查看zookeeper运行日志

你在哪个目录执行的启动命令,该目录下的zookeeper.out即为其日志文件

五、 备注

zookeeper常用配置项说明

tickTime:CS通信心跳数;以毫秒为单位,可以使用默认配置。
initLimit:LF初始通信时限;
syncLimit:LF同步通信时限;数值不宜过高。
dataDir:数据文件目录;
dataLogDir:日志文件目录;
clientPort:客户端连接端口;
server.N:服务器名称与地址(服务编号,服务地址,LF通信端口,选举端口)

ZooKeeper高级配置

gloabalOutstandingLimit:最大请求堆积属,默认1000;
preAllocSize:预分配的Transaction log空间大小;
snapCount:每进行snapCount次事务日志输出后,触发一次快照;
maxClientCnxns:最大并发客户端数;
forceSync:是否提交事务的同时同步到磁盘;
leaderServes:是否禁止leader读功能;
traceFile:是否记录所有请求的log;<mark>不建议使用</mark>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chutianly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值