当前位置: 首页 > news >正文

zookeeper之集群搭建

1. 集群角色

        zookeeper集群下,有3种角色,分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。

领导者(Leader):

        事务请求(写操作)的唯一调度者和处理者,保证集群事务处理的顺序性;

        集群内部各个服务器的调度者。对于create、setData、delete等有写操作的请求,则要统一转发给leader处理,leader需要决定编号、执行操作,这个过程称为事务。

跟随着(Follower)

        处理客户端非事务(读操作)请求(可以直接响应)。

        转发事务请求给Leader。

        参与集群Leader选举投票。 

 观察者(Observer)

        对于非事务请求可以独立处理(读操作)。

        对于事务性请求会转发给leader处理。

        Observer节点接收来自leader的inform信息,更新自己的本地存储不参与提交和选举投票。通常在不影响集群事务处理能力的前提下提升集群的非事务处理能力

如何配置观察者:

在配置文件zoo.cfg写集群配置时需要后面写observer

#配置一个ID为1的观察者节点
server.1=192.168.31.5:2888:3888:observer

Observer应用场景:

        提升集群的读性能。因为Observer和不参与提交和选举的投票过程,所以可以通过往集群里面添加observer节点来提高整个集群的读性能。
        跨数据中心部署。 比如需要部署一个北京和香港两地都可以使用的zookeeper集群务,并且要求北京和香港客户的读请求延迟都很低。解决方案就是把香港的节点都设置为observer。

2. 集群架构

leader节点可以处理读写请求;

follower只可以处理请求,follower在接到请求时会把写请求转发给leader来处理。

Zookeeper数据一致性保证:

  • 全局可线性化(Linearizable )写入∶先到达leader的写请求会被先处理,leader决定写请求的执行顺序。
  • 客户端FIFO顺序∶来自给定客户端的请求按照发送顺序执行。 

3. 集群搭建

本节介绍的一主两从的集群搭建。

3.1 准备工作

准备三台虚拟机

192.168.31.5
192.168.31.176
192.168.31.232

每台机器根据单机环境先进行单机环境的搭建 ;

注意:根据单机环境搭建集群的每个节点时,先不要启动,继续按照一下后续步3.2骤修改完文件以及3.3创建myid文件后再启动。否则启动集群节点时可能会出现状态是standalone的问题,解决看3.4启动时遇到的问题进行解决。

单机环境搭建参考:Zookeeper特性与节点数据类型详解-CSDN博客中的Zookeeper单机搭建。

3.2 修改配置文件

        修改每台机器中zookeeper的zoo.cfg文件

vim zoo.cfg
#修改数据存储目录 
dataDir=/app/zookeeper/data#文件末尾追加配置内容
server.1=192.168.31.5:2888:3888
server.2=192.168.31.176:2888:3888
server.3=192.168.31.232:2888:3888

集群配置内容含义:

server.Number=IP:port1:port2
Number 是一个数字,表示这个是第几号服务器; 集群模式下配置一个文件 myid,这个文件在 dataDir目录下,这个文件里面有一个数据 就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个server。
IP 是这个服务器的地址;
port1 是这个服务器Follower与集群中的Leader服务器交换信息的端口;
port2 是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 

3.3 创建myid文件,配置服务器编号

  •  在每台服务器zookeeper的dataDir对应目录下创建 myid 文件,内容为对应ip的zookeeper服务器编号。
  •  dataDir目录是你在zoo.cfg中配置的目录。内容是你在zoo.cfg中配置集群时server.后面的数字。
  •  添加 myid 文件时,一定要在 Linux 里面创建,不要 notepad++等工具里面创建后上传,因为可能会乱码。并且内容上下不要有空行,左右不要有空格。
vim myid

3.4 启动集群

启动前需要关闭防火墙(生产环境需要打开对应端口)

分别启动三个节点的zookeeper的server

#启动节点
bin/zkServer.sh start
#查看节点状态
bin/zkServer.sh status

如列图所示,我依次启动了192.168.31.5、192.168.31.176、192.168.31.232服务器中zk的节点,每次都是启动后直接查看状态,他们的状态都是follower。

待三台机器都启动完成后,我再次差看个节点的状态,192.168.31.5这台机器zk的节点变为了leader。

所以,三个节点启动后状态是leader或者follower才表示集群启动成功了。

3.4 启动时遇到的问题

集群启动时有可能会失败,一般情况就是zoo.cfg配置错误或者防火墙没有关闭(生产环境端口没有开放)

3.4.1关闭防火墙

#centos7 
# 检查防火墙状态 
systemctl status firewalld 
#关闭防火墙 
systemctl stop firewalld 
systemctl disable firewalld

3.4.2 启动后查看状态的Mode是standalone

解决:

1. 检查zoo.cfg文件中有书写错误是否有误;

2. 如果这台机器上有单机版的zookeeper启动,关闭之前的zookeeper,重新启动;(我的单机版的zk改配置,变为集群节点时就遇到的是这个问题。)

3.4.3  .sh权限不足

        在启动zookeeper时,报zkServer.sh权限不足,当时没有截图记录,但和下述截图中zkCli.sh权限不足一样,明明有root权限,但是就是提示权限不足。

        接下来,以解决zkCli.sh权限不足为例,解决该问题,如遇到zkServer.sh权限不足,可参考这个解决方法;

进去zookeeper的bin目录后,执行以下指令

chmod a+xwr zkCli.sh

再次执行

./zkCli.sh

 客户端执行成功了

4. 集群下leader的选举原理

相关文章:

zookeeper之集群搭建

1. 集群角色 zookeeper集群下,有3种角色,分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader): 事务请求(写操作)的唯一调度者和处理者,保…...

从0开始界面设计师 Qt Designer

QT程序界面的 一个个窗口、控件,就是像上面那样用相应的代码创建出来的。 但是,把你的脑海里的界面,用代码直接写出来,是有些困难的。 很多时候,运行时呈现的样子,不是我们要的。我们经常还要修改代码调整界…...

Html / CSS刷题笔记

WebKit是一个开源的浏览器引擎,它最初是由苹果公司开发的,并且被广泛用于Safari浏览器和其他基于WebKit的浏览器,比如Google Chrome的早期版本。它也是构建许多移动设备浏览器的基础。WebKit的主要功能是解析HTML和CSS,并将其渲染…...

关于“Python”的核心知识点整理大全51

目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门👆(在文章最后)&a…...

Termius for Mac/Win:一站式终端模拟器、SSH 和 SFTP 客户端软件的卓越选择

随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…...

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图,软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间? 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…...

HTML---JavaScript基础

文章目录 目录 文章目录 本章目标 一.JavaScript基础 概述 特点 JavaScript 基本机构 语法 网页中引用JavaScript的方式 二. JavaScript核心语法 变量 ​编辑 数据类型 数组 练习 本章目标 掌握JavaScript的组成掌握JavaScript的基本语法会定义和使用函数会使用工具进行…...

2023年03月17日_微软和谷歌办公AI的感慨

2023年3月17日 最近这个科技圈的消息 有点爆炸的让人应接不暇了 各种大公司简直就是神仙打架 你从来没有见过这么密集的 这么高频的产品发布 昨天微软是发布了Office 365 Copilot 在里边提供了大量的AI的功能 然后谷歌呢也发布了这个Google Workspace AI 也是跟365 Cop…...

2023年新一代开发者工具 Vue ,正式开源!

以下文章来源于前端充电宝 ,作者CUGGZ 近日,Vue 新一代开发者工具(DevTools)正式开源!Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具,它提供了一些功能来帮助开发者更好地了解 Vue 应用。下面就来看…...

springboot(ssm校园组团平台 高校组团系统 Java系统

springboot(ssm校园组团平台 高校组团系统 Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据库…...

QT 利用开源7z 实现解压各种压缩包,包括进度条和文件名的显示(zip,7z,rar,iso等50多种格式)

想做一个winRAR一样的解压软件吗?很简单,利用开源的7z库就能实现。我看网上其他人说的方法不敢苟同,误人子弟。以前自己在项目中使用过7z,这次又有需要,就想记录下来。如果你研究过如何用7z的话,一定知道7z的每一个GUID都代表了一种格式,50多种GUID也就有50多个格式,最…...

androidStudio 没有新建flutter工程的入口?

装了flutter dart 插件 执行了 flutter doctor 也执行了 flutter doctor --android-license 最后重启了 androidStudio 还是没发现在哪新建flutter项目工程 原来 plugins 下的 Android APK Support没有勾选...

微信小程序开发系列-03全局配置中的“window”和“tabBar”

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…...

基于CNN神经网络的手写字符识别实验报告

作业要求 具体实验内容根据实际情况自拟,可以是传统的BP神经网络,Hopfield神经网络,也可以是深度学习相关内容。 数据集自选,可以是自建数据集,或MNIST,CIFAR10等公开数据集。 实验报告内容包括但不限于&am…...

Ubuntu 系统中安装和配置 clash

本博客参考 ubuntu下怎么安装clash-ghc? 和 对 clash 进行下载和配置,如有需要可自行点击链接查看原文。 下载 clash 打开终端(进入到 主目录/用户目录 ),通过命令下载 clash 文件并将其中命名为 clash: # 下载 cl…...

DragonEnglish:COCA20000+单词+释义

去年的时候接触到了 COCA20000 单词,对这种给单词特定顺序的方式蛮感兴趣的。因为我当时接触的版本只有单词或者单词释义的版本,所以我直接通过各种方式给它搭配了音标例句发音,然后每100个切割成1份,分成了 202 个文件来学习&…...

『亚马逊云科技产品测评』活动征文|云服务器如何快速搭建个人博客(图文详解)

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 引言一、前期准备步骤1.1 准备一个亚马逊 EC2 服务器1.2 进入控…...

QT上位机开发(乘法计算小软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面一篇文章,我们学习了怎么创建qt的第一个工程,怎么用designer给qt修改界面。虽然我们到目前为止,还没有编写…...

【Matlab】BP 神经网络时序预测算法

资源下载: https://download.csdn.net/download/vvoennvv/88681507 一,概述 BP 神经网络是一种常见的人工神经网络,也是一种有监督学习的神经网络。其全称为“Back Propagation”,即反向传播算法。BP 神经网络主要由输入层、隐藏层…...

GPT在企业自动化方面的应用

GPT和类似的自然语言处理技术在企业自动化方面有许多应用。以下是一些主要的应用领域: 自动化客户支持: 使用GPT可以构建自动化的客户支持系统,能够理解和生成自然语言文本,回答常见问题,解决用户的疑问和问题。 自动…...

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...