zookeeper单机版和集群版搭建

Zookeeper介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

总结:Zookeeper负责服务的协调调度.当客户端发起请求时,返回正确的服务器地址.

Zookeeper下载

网址: http://zookeeper.apache.org/releases.html
在这里插入图片描述
下载路径,点击download.
在这里插入图片描述

下载Zookeeper地址.
http://mirrors.hust.edu.cn/apache/zookeeper/
在这里插入图片描述

Zookeeper安装

因为 zookeeper 是使用 Java 语言开发的所以要安装 jdk 才可以使用。

安装JDK

将JDK1.8文件上传到Linux操作系统中/ usr / /local/src/java/文件下.
如图
在这里插入图片描述

  1. 解压文件

tar -xvf jdk-8u51-linux-x64.tar.gz

  1. 配置环境变量
    编辑环境变量配置文件

vim /etc/profile

如图所示
在这里插入图片描述
使JDK生效,之后检查jdk安装是否成功
source /etc/profile
如图
在这里插入图片描述

上传安装文件

说明:上传zookeeper安装文件.之后解压.
在这里插入图片描述

  1. 解压目录:

tar -xvf zookeeper-3.4.8.tar.gz

  1. 修改配置文件
    在zk根目录下创建文件夹data/log

mkdir data log

如图
在这里插入图片描述

  1. 跳入conf目录中修改配置文件
  2. 复制配置文件并且修改名称

cp zoo_sample.cfg zoo.cfg
在这里插入图片描述

启动zk

跳转到bin目录中    zk启动关闭命令如下.
sh zkServer.sh start     或者  ./zkServer.sh start
sh zkServer.sh stop
sh zkServer.sh status

在这里插入图片描述

Zookeeper集群安装

准备文件夹

在zookeeper根目录中创建新的文件夹zkCluster.
如图
在这里插入图片描述
如图所示
创建zk1/zk2/zk3文件夹.
在这里插入图片描述
在每个文件夹里创建data/log文件夹.

mkdir {zk1,zk2,zk3}/{data,log}

在这里插入图片描述

添加myid文件

分别在zk1/zk2/zk3中的data文件夹中创建新的文件myid.其中的内容依次为1/2/3,与zk节点号对应.
如图所示
在这里插入图片描述
编辑myid文件,定义编号.
如图所示
在这里插入图片描述

编辑配置文件

将zoo_sample.cfg 复制为zoo1.cfg之后修改配置文件.
如图所示
在这里插入图片描述

修改zoo1.cfg

在这里插入图片描述
配置完成后将zoo1.cfg复制2份.之后需要修改对应的文件夹目录.和不同的端口即可.

ZK集群测试

通过下面的命令启动zk集群.

# 启动命令
sh zkServer.sh start   zoo1.cfg
# 暂停命令
sh zkServer.sh stop    zoo1.cfg
# 查看状态
sh zkServer.sh status  zoo1.cfg

检查主从关系,从机情况说明.
如图所示
在这里插入图片描述
检查主从关系,主机情况说明.
如图所示
在这里插入图片描述

关于zookeeper集群说明

Zookeeper集群中leader负责监控集群状态,follower主要负责客户端链接获取服务列表信息.同时参与投票.

为什么集群是奇数台

公式: 剩余存活节点的数量 > n/2

问题分析:

	1个节点  不满足公式 ,所以不能搭建集群.

	2个节点      1>1    不满足公式   所以不能搭建集群.

	3个节点      2>1.5  满足公式      可以搭建集群.

	结论:集群的最小的单位3台.

	4个节点      3>2      满足公式      偶数台也可以搭建集群

性价比问题:

	3个节点:  最多宕机1台.否则集群崩溃.

	4个节点:  最大宕机1台,否则集群崩溃.

	结论: 3台的效果与4台效果相同.所以选择奇数.

启动现象说明

问题: 为什么启动zk1的时候检查状态,显示报错.之后启动第二台/第三天.为什么zk1就显示正常并且还是follower

	答案:只有当集群超半数以上启动时才能正常工作.

脑裂现象

说明:在集群中,由于需要进行高可用的配置,当主机宕机时,需要重新选举新的主机.当连续多次出现平票时,则可能出现多台主机的现象.称之为脑裂.

在这里插入图片描述
一般选举的机制连续3次平票才有可能出现脑裂现象.

高中数据问题: 连续3次平票的概率是多少?

(1/2)^3=1/8 12.5%

问题:如何有效的降低脑裂现象的发生. 可以适当的调整节点的数量.

zk集群的选举机制

说明:在搭建集群时,会动态的分配myid的序号.zk集群的选举规则秉承着序号最大值优先的策略.集群选举时超半数同意即当选新的主机.

在这里插入图片描述
面试题: 1-7台zk, 问哪几台永远不能当主机?

答案:1-3台永远不能当主机.

zk集群程序链接规则

zk集群中 主机只负责监控和数据同步. 从机负责与客户端交互. 代码中的链接zk的一般都是从机.

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页