Centos下Zookeeper的安装部署

1.安装jdk

zookeeper是采用java开发的,所以需要依赖jdk环境,我们需要先安装jdk,最便捷的方式就是采用yum,但是yum的官方源速度很慢,我们可以先更换yum源;

#备份初始源 
#备份初始源配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载新的阿里镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清理和重建索引
yum clean all
yum makecache

ok现在我们就可以使用yum安装需要的jdk了

yum -y install java-1.8.0-openjdk-demo.x86_64
#验证一下是否安装成功  
java -version

2.安装zookeeper

#下载二进制压缩包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz#解压缩
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
#移动至local下
mv apache-zookeeper-3.6.1-bin /usr/local
# 为了操作方便,创建软连接
ln -s /usr/local/apache-zookeeper-3.6.1-bin /usr/local/zookeeper
# 添加至环境变量
echo export PATH=\"\$PATH:/usr/local/zookeeper/bin\" >> ~/.bashrc
#更新环境变量
source ~/.bashrc

目录结构:
在这里插入图片描述
注意:在bin目录下有两种执行文件,以.sh结尾是lunix执行文件,以.cmd结尾是windows执行文件,为了方便我们可以使用rm -rf *.cmd删除windows执行文件。

配置文件模板:
zookeeper给的有模板文件,我们需要复制一份命名为zoo.cfg

#复制配置模板更名为zoo.cfg
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg  zoo.cfg

在这里插入图片描述
主要配置项:
修改配置文件vim zoo.cfg
在这里插入图片描述
修改zoo.cfg中的dataDir指向新建的data目录

#修改zoo.cfg中的dataDir指向新建的data目录
#dataDir=/usr/local/zookeeper/data

上面储存目录需要修改,需要自己创建目录。

#提供 一个dataDir,在安装目录下创建名为data的目录#该目录默认指向tmp必须修改,用于存储zookeeper持久化数据和日志文件;
cd /usr/local/zookeeper
mkdir data

3.相关操作

启动

#启动
zkServer.sh start
#查询是否启动成功
ps aux|grep zoo

查询出来的进程,因为带有很多参数,所以很长
在这里插入图片描述
客户端访问

zkCli.sh
#当服务器不在当前机器上时通过 -server参数指定主机地址 
zkCli.sh -server 192.168.74.128:2181

关闭

#关闭
zkServer.sh stop

查看状态

zkServer.sh status

查看目录下的节点

#先连接
zkCli.sh
#查看节点信息
ls /  (这是查看根目录下的节点,其他相似)

创建节点

#先连接
zkCli.sh
#创建节点
create /test 123 (节点必须以“/”根目录开头,后面可以跟数据,也可以不跟)
#创建临时节点
create /test_temp 123 (当服务端和客户端断开或服务器重启之后,就会自动消失)

查看数据

get 节点    #get /test

设置数据

set 节点 数据      #set /test abc

删除

#删除某个节点
delete 节点名       #delete /test
#删除所有节点
deleteall

4.搭建集群

准备

在开始搭建集群之前我们需要先了解一下概念:

三种角色

为了避免 Zookeeper 的单点问题,zk 也是以集群的形式出现的。zk 集群中的角色主要有 以下三类:

  • Leader 集群的主节点,可以处理写请求,并将数据同步至从节点

  • Follower 从节点,跟随者,决策者,学习者,仅可以处理读请求,收到写请求是自动转发给leader,具备选举权,被选举权,决策权

  • Observer 学习者 仅可处理读请求,且不具备选举权,被选举权和决策权

由于选举leader的过程使用的是paxos算法,参与选举的节点越多则选举过程越慢,且选举过程中节点不可对外服务,Observe可以缩短leader选举过程所需的时间; 减少集群不可用;

法定人数

zookeeper服务器运行于两种模式:独立模式和集群模式。

集群模式下,会复制所有服务器的 数据树。但如果让客户端等待所有复制完成,延迟太高。这里引入法定人数概念,指为了使zookeeper 集群正常工作,必须有效运行的服务器数量。同时也是服务器通知客户端保存成功前,必须保存数据的 服务器最小数。例如我们有一个5台服务器的zookeeper集群,法定人数为3,只要任何3个服务器保存了数据,客户端就会收到确认。
在这里插入图片描述
另外当法定人数为3时,集群中只要有3台服务器存活,整个zookeeper集群就是可用的

在这里插入图片描述
注意:observer不算在法定人数内

集群应该有奇数个节点

zookeeper节点数量因当是大于1的奇数,因为zookeeper集群必须在大多数节点都可用的情况下才能正常提供访问,若节点为3个则运行宕机1个,若节点为4个同样只允许宕机1个,偶数个节点的允许宕机的节点占比更低;

集群搭建

对于不同的系统,要通过ip地址访问,所以我们要固定lunix的ip地址:操作连接

防火墙设置

#1.禁止firewall开机启动
systemctl disable firewalld
#2.设置开机启动防火墙
systemctl enable firewalld.service

zookeeper集群部署

zookeeper节点数量因当是大于1的奇数,因为zookeeper集群必须在大多数节点都可用的情况下才能正常提供访问,若节点为3个则运行宕机1个,若节点为4个同样只允许宕机1个,偶数个节点的允许宕机的节点占比更低;

1.在配置文件配置节点信息
在zoo.cfg里面写入下面节点信息:

#server.节点编号=ip地址:节点通讯端口:选举端口
server.1 = 192.168.74.129:28888:38888
server.2 = 192.168.74.130:28888:38888
server.3 = 192.168.74.131:28888:38888

注意:若是在一台机器上做测试,则需要需改clientPort,以及每个节点的通信端口和选举端口,保证不与其他节点冲突。

2.在/usr/local/zookeeper/data/下创建myid文件

该文件用于存储集群中各个zookeeper节点的编号

创建myid文件:

touch /usr/local/zookeeper/data/myid
#文件内容为当前zookeeper的节点编号与配置文件对应
echo 1 > /usr/local/zookeeper/data/myid

注意:若data目录下有其他文件则需要删除,在创建集群前要保持zookeeper是空的。

3.启动其他的虚拟机

1.逐个启动虚拟机并修改ip地址2.修改myid文件中的节点id与配置文件匹配3.逐个启动每个虚拟机上的zookeeper服务

查看zookeeper状态:

zkServer.sh start
#启动完成后可以通过以下指令查看当前zookeeper的状态
zkServer.sh status

Observer

为什么需要Observer:

为了提高zookeeper的吞吐量,我们可以为其添加更多的follower,但是更多的follower会导致投票过程变得更慢,而客户端的响应时间变长(因为投票过程zookeeper不能响应),因此zookeeper设计了Observer节点

什么是Observer:

Observer与普通的 follower仅有一个区别: Observer不参与 投票环节; 但是提议 和commit同样会发送给Observer,这意味着Observer中的数据也是一致的,既提高了整个集群的性能同时避免了,投票带来的延迟;

配置方法:

只需要在 节点后面 添加observer关键字即可将节点作为Observer

#操作命令
echo server.4=10.211.55.9:28888:38888:observer >> /usr/local/zookeeper/conf/zoo.cfg
#添加后的内容:
server.1=10.211.55.5:28888:38888
server.2=10.211.55.6:28888:38888
server.3=10.211.55.7:28888:38888
server.4=10.211.55.8:28888:38888:observer

启动集群后通过status查看节点状态:

zkServer.sh status

链接:Zookeeper实现服务注册/发现

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注