Zookeeper[2]- Zookeeper集群环境搭建

news2024/10/6 14:25:40

前边步骤可参考: 

Zookeeper[1]-Zookeeper介绍与安装以及集群环境准备_豆虫儿的博客-CSDN博客Zookeeper的介绍和安装Zookeeper客户端使用ZookeeperJavaAPI使用我们为了学习Dubbo,而在dubbo中需要一个注册中心,而Zookeeper是我们在使用Dubbo是官方推荐的注册中心,所以我们先来介绍ZookeeperZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。https://blog.csdn.net/listeningdu/article/details/128307053?spm=101.2014.3001.5502

4.1 获取安装文件

下载地址:Index of /apache/zookeeper

通过wget命令将安装文件下载到opt目录下

注意:

apache-zookeeper-3.5.9-bin.tar.gz和apache-zookeeper-3.5.9.tar.gz的区别 -bin是编译后的文件 我们用这个

wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz

 

 

解压缩文件

 

进入Zookeeper目录

 

4.2 修改配置

修改zoo.cfg文件,系统默认的名称是 zoo_smple.cfg我们需要重命名为zoo.cfg

 

修改cfg的内容

修改了两块:

1是Zookeeper中存储数据的文件夹,还有就是Zookeeper集群环境节点信息

配置myid文件

我们需要在Zookeeper的数据存储的目录中创建一个myid文件,文件中的内容只有一行信息,即表示我们集群几点的标识,范围是1-255,每个节点的myid的数字和我们在zoo.cfg中配置的server.数字是对应的

1

4.3 分发文件

当我们配置好了一个Zookeeper节点后,我们就可以将Zookeeper文件夹分发给其他几个节点了

scp -r zookeeper bobo02:`pwd`
scp -r zookeeper bobo03:`pwd`

分发成功后我们需要修改各个节点中的myid的信息为配置文件中对应的数字

4.4 启动测试

整个集群环境都配置好了之后我们就可以测试启动了

启动命令

./bin/zkServer.sh start

当我们仅仅启动一个节点的时候,因为半数存活机制,3个节点只启动一个节点是没有效果的,

当我们启动第二个节点后发现集群环境可以使用了

然后第一个节点的状态也改变了

然后再把第三个节点也启动起来 

 

 

5. Zookeeper的选举机制

为什么要进行Leader选举? Leader 主要作用是保证分布式数据一致性,即每个节点的存储的数据同步。遇到以下两种情况需要进行Leader选举

  • 服务器初始化启动

  • 服务器运行期间无法和Leader保持连接,Leader节点崩溃,逻辑时钟崩溃。

5.1 服务器初始化时Leader选举

  Zookeeper由于其自身的性质,一般建议选取奇数个节点进行搭建分布式服务器集群。以3个节点组成的服务器集群为例,说明服务器初始化时的选举过程。启动第一台安装Zookeeper的节点时,无法单独进行选举,启动第二台时,两节点之间进行通信,开始选举Leader。

  1. 每个Server投出一票。他们两都选自己为Leader,投票的内容为(SID,ZXID)。 SID即Server的id,安装zookeeper时配置文件中所配置的myid;ZXID,事务id, 为节点的更新程度,ZXID越大,代表Server对Znode的操作越新。由于服务器初始化, 每个Sever上的Znode为0,所以Server1投的票为(1,0),Server2为(2,0)。 两Server将各自投票发给集群中其他机器。

  2. 每个Server接收来自其他Server的投票。集群中的每个Server先判断投票有效性, 如检查是不是本轮的投票,是不是来Looking状态的服务器投的票。

  3. 对投票结果进行处理。先了解下处理规则

  • 首先对比ZXID。ZXID大的服务器优先作为Leader

  • 若ZXID相同,比如初始化的时候,每个Server的ZXID都为0,

  • 就会比较myid,myid大的选出来做Leader。

    对于Server而言,他接受到的投票为(2,0),因为自身的票为(1,0),所以此时它会选举Server2为Leader, 将自己的更新为(2,0)。而Server2收到的投票为Server1的(1,0)由于比他自己小, Server2的投票不变。Server1和Server2再次将票投出,投出的票都为(2,0)。

  1. 统计投票。每次投票之后,服务器都会统计投票信息,如果判定某个Server有过半的票数投它, 那么该Server将会作为Leader。对于Server1和Server2而言,统计出已经有两台机器接收了(2,0)的投票信息, 此时认为选出了Leader。

  2. 改变服务器状态。当确定了Leader之后,每个Server更新自己的状态, Leader将状态更新为Leading,Follower将状态更新为Following。

 

5.2 服务器运行期间的Leader选举

  Zookeeper运行期间,如果有新的Server加入,或者非Leader的Server宕机,那么Leader将会同步数据到新Server或者寻找其他备用Server替代宕机的Server。若Leader宕机,此时集群暂停对外服务,开始在内部选举新的Leader。假设当前集群中有Server1、Server2、Server3三台服务器,Server2为当前集群的Leader,由于意外情况,Server2宕机了,便开始进入选举状态。过程如下

  1. 变更状态。其他的非Observer服务器将自己的状态改变为Looking,开始进入Leader选举。

  2. 每个Server发出一个投票(myid,ZXID),由于此集群已经运行过,所以每个Server上的ZXID可能不同。 假设Server1的ZXID为145,Server3的为122,第一轮投票中,Server1和Server3都投自己, 票分别为(1,145)、(3,122),将自己的票发送给集群中所有机器。

  3. 每个Server接收接收来自其他Server的投票,接下来的步骤与初始化时相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

作业-12.13【使用QT制作一个简单的登录界面】

#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //设置窗口属性 this->setWindowTitle("Sumeru Dance Training"); this->setFixedSize(8…

[激光原理与应用-52]:《激光焊接质量实时监测系统研究》-3-传感器选型和电路设计

目录 3.1 传感器的选取 3.1.1 光电探测基本概念 3.1.2 可见光传感器 3.1.4 声音传感器 3.2 信号调理电路 3.2.0 可见光电信号前置放大电路 3.2.1 红外光电信号前置放大电路 3.2.2 程控自适应增益的光信号放大电路 3.2.3 光信号滤波电路 3.2.4 声信号调理电路 3.3 数据…

【图像处理】边缘检测算子有哪些以及它们之间的对比

这个问题应该是做过传统图像处理的人都接触过的吧。粗略总结下,应该也不会问太细,面试官大概就考察下大家的知识面吧。 综述 边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。图像边缘检测大幅度地减少了数据量&#xf…

第五章. 可视化数据分析图表—常用图表的绘制3—散点图,面积图,热力图

第五章. 可视化数据分析图 5.3 常用图表的绘制3—散点图,面积图,热力图 本节主要介绍常用图表的绘制,主要包括散点图,面积图,热力图。 1.散点图(matplotlib.pyplot.scatter) 散点图主要用来查…

Redux Hooks actions 调用方式优化(一)

hooks 可以说是现在react编程的的主流,redux 迎合这个主流也推出 toolkit 工具集来。但是在用toolkit 搭建前端框架后,给人的感觉就是比原先的connect 那一套好些,但用起来还是挺繁琐的。 一 toolkit 搭建的正常使用版本 1.1 创建store im…

三、pcm音频转wav

前言 ffmpeg录制下来的音频为pcm格式(内部存储着十六进制数据),但pcm格式的音频无法直接播放 本文先将pcm转换成wav格式(提要提前了解音频知识) 首先分析wav文件格式(wav的本质是在pcm数据前加上文件头&a…

[附源码]Node.js计算机毕业设计电子工厂进销存管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

《Linux运维总结:Centos7.6使用yum安装Mysql8.0.31》

一、使用yum安装mysql服务 官方:下载对应的yum源 1、yum源下载 [rootlocalhost ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm [rootlocalhost ~]# rpm -ivh mysql80-community-release-el7-7.noarch.rpm如下图所示:…

vsftpd 升级3.0.2-29 和 增加账号访问

一、下载文件至/opt 百度网盘: 链接: https://pan.baidu.com/s/1Ad20bm5fvw8WvtaV3uHGYA 提取码: 2pa9 二、安装 2.1、切换目录 命令:cd /opt 2.2、授权 命令:chmod x centos7.6-vsftpd-upgrade.sh 2.3、安装 命令:./cent…

D. Lucky Chains(gcd + 线性筛)

Problem - D - Codeforces 如果一对正整数(x,y)的最大公除数等于1(gcd(x,y)1),我们就把它们命名为幸运。 让我们把由(x,y)引起的链定义为一个由(x,y), (x1,y1), (x2,y2), ..., (xk,yk)组成的序列,对于某个整数k≥0。 如果链中的所有配对都是幸运的&…

2022-12-13 note

1、linux内核的特点 1. linux内核是完全开源的作者:linusgit --> 代码版本管理工具 2. linux内核源码支持多种不同的架构,比如arm架构,powerPC,mips,Risc-V,X86等 3. linux内核采用模块化的编译的思想 4. 在linux内核中只允许出现C代码或…

优秀的PM如何轻松应对公司90%以上的沟通难题

项目经理和PMO工作中最多的事情往往是沟通,但是你在工作中会不会遇到很多沟通难题?如果其他环节的人处理不好还可以理解,但是咱们处理不好就说不过去了,并且还会让人感觉不专业,丧失很多机会,甚至失去领导的…

代码随想录Day49|121.买卖股票的最佳时期、122.买卖股票的最佳时期II

文章目录121.买卖股票的最佳时期、122.买卖股票的最佳时期II121.买卖股票的最佳时期、 文章讲解:代码随想录 (programmercarl.com) 题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode) 题目: 给定一个数组 prices…

Metal每日分享,调整灰度系数gamma滤镜效果

本案例的目的是理解如何用Metal实现灰度系数效果滤镜,输入像素rgb进行次方运算获取到新的rgb; Demo HarbethDemo地址 实操代码 // 灰度系数滤镜 let filter C7Gamma.init(gamma: 3.0)// 方案1: ImageView.image try? BoxxIO(element: originImage,…

[附源码]Node.js计算机毕业设计儿童闲置物品交易网站Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

六、JavaScript——变量的内存结构

一、内存 定义&#xff1a;内存是用于存储数据的地方&#xff0c;程序要执行一段代码&#xff0c;要先从硬盘加载到内存当中&#xff0c;再由内存发送给CPU,CUP才能对代码进行执行。 注&#xff1a;变量并不存储任何值&#xff0c;而是存储值的内存地址 JS定义一个变量 <s…

Telerik模拟生成规则的新设置

Telerik模拟生成规则的新设置 添加了对Microsoft.NET 7官方版本的支持。 添加了控制模拟生成规则的设置。 Telerik JustLock是一个易于使用的模拟工具&#xff0c;它将帮助您以前所未有的速度、更高的质量编写单元测试。JustLock允许您轻松地将测试场景与难以配置的依赖关系(如…

5G现场网的数字孪生体系架构

现场网面向钢铁生产和统一管理的场景&#xff0c;实现现场设备与数据采集器和控制器的网络连接和数据互通&#xff0c;现场网的ZigBee、蓝牙等短距离技术以及窄带物联网&#xff08; narrowbandinternetofthings,NB-IoT&#xff09;、超远距离&#xff08;longrange,LoRa&#…

病历开发SDK:TX Text Control ActiveX 31.x Crack

Visual Basic 6 应用程序的文档处功能齐全的文档编辑器 TX Text Control ActiveX是一种完全可编程的 Rich Edit 控件&#xff0c;它在专为 Visual Studio 设计的可重用组件中为开发人员提供了广泛的文字处理功能。它提供全面的文本格式、强大的邮件合并功能和所有文字处理关键概…

算法训练四十八天 | LeetCode 198、213、337打家劫舍专题

LeetCode 198 打家劫舍 题目简析&#xff1a; 不能偷相邻的屋子&#xff0c;求能偷到的最大金额 思路分析&#xff1a; //由于是相邻的才偷&#xff0c;因此&#xff0c;我们对于最基础的三间 //dp[3] 应该是 Math.max(dp[2],dp[1]nums[3]) //如果第一间加偷第三间的价值大…