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

Orchestrator介绍二 自身高可用性方案

目录

获得 HA 的方法

一 没有高可用性 (No high availability)

使用场景

架构组成

架构图

二 半高可用性(Semi HA)

三 基于共享数据库后端高可用(HA via shared backend)

四 基于Raft协议高可用

五 方案对比

注意事项

笔记


orchestrator作为高可用的服务运行。本文档列出了orchestrator实现 HA 的各种方法

获得 HA 的方法

HA 可以通过选择以下任一方式来实现:

  • orchestrator/raft设置,orchestrator节点通Raft 共识算法进行通信。每个orchestrator节点都有一个私有数据库后端(MySQLsqlit)。另请参阅Orchestrator/raft 文档
  • 共享后端设置。多个orchestrator节点都与同一个后端数据库通信,该后端可能是 Galera/XtraDB Cluster/InnoDB Cluster/NDB Cluster。同步是在数据库级别完成的

一 没有高可用性 (No high availability

使用场景

这种适用于测试。本地开发环境。

架构组成

这种架构由 单个orchestrator节点和单个后端数据库组成。

后端数据库可以是MySQL也可以是orchestrator自带的sqlite。

架构图

二 半高可用性(Semi HA)

这种架构只有orc服务有高可用行,后端数据库没有高可用行

方式一 

多个orc节点使用MySQL主从中的master。orc 服务实现了高可用,但是后端数据库却没有。后端数据库是主从架构,每个orc节点不能有自己单独的后端数据库。如果后端数据库的master无法进行故障转移

方式二 

多个orc节点使用都配置为代理层的IP 。代理层后端是MySQL双主架构,并且双主架构复制规则设置为statement。

  • 代理层一直指向同一个MySQL节点,除非这个MySQL发生了故障
  • master 宕机后 orc就会通过代理层去访问另一个数据库节点。但是这个数据库节点数据可能有落后,orc会补充这些丢失 通过持续发现的特性。
  • orchestrator查询保证基于STATEMENT格式的复制不会导致重复错误,并且主主设置将始终实现一致性。
  • orchestrator即使在进行故障恢复过程中也可以对后端宕机的master进行启动(恢复将在备用master重新启动)
  • 脑裂是有可能的。 根据您的设置、物理位置、代理类型,可能有不同的orchestrator服务节点与不同的后端MySQL服务器通信。这种情况可能会导致两个orchestrator服务都认为自己是“活动的”,这两个服务都将独立运行故障转移,这将导致拓扑损坏。

三 基于共享数据库后端高可用(HA via shared backend)

完全的高可用是 通过后端数据库也具有高可用能力 实现。现有的后端数据库解决方案有:

  • Galera
  • XtraDB Cluster
  • InnoDB Cluster
  • NDB Cluster

上面的架构都要

  •  Galera/XtraDB Cluster/InnoDB Cluster 使用单写模式运行。多个orchestrator节点可能通过代理与写入节点进行通信。如果写节点发生故障,后端集群将提升另一个数据库作为写节点;由您的代理来识别并将orchestrator的流量引导新的写节点。
  •  Galera/XtraDB Cluster/InnoDB Cluster 在多写模式下运行。一个好的设置建议是将每个orchestrator节点与数据库服务器部署在同一服务器上。由于复制是同步的,因此不存在裂脑。只有一个orchestrator节点可以成为领导者,并且该领导者只会与数据库节点达成共识。

四 基于Raft协议高可用

以上介绍的三种方式都没有引入Raft共识算法。

orchestrator节点直接通过Raft共识算法进行通信。每个orchestrator节点都有自己私有的后端数据库(可以是MySQL或者sqlite)。

只有一个orchestrator节点可以成为leader,并且始终是共识?的一部分。然而,所有其他节点都是独立活动的,并且正在轮询您的拓扑。

在这种设置中

  • 数据库节点之间没有通信
  • orchestrator节点之间通信最少 
  • 与MySQL拓扑节点的通信次数是orc节点个数的倍数。一个3个节点orc 意味着被监控的MySQL集群中需要被3个独立不同的orc节点探测。
  • 建议运行为3个节点或者5个节点
  • sqlite是orc内置的 不需要在额外的安装。如果流量较大 建议使用MySQL。

要访问orc服务 ,你只能与leader角色通信。

  • 使用/api/leader-check作为代理的  HTTP 健康状况检查。
  • 或者使用具有多个orchestrator后端的orchestrator-client;orchestrator-client将找出领导者的身份并向领导者发送请求。

五 方案对比

这比较了两种高可用性部署方法的部署、行为、限制和优势:orchestrator/raftorchestrator/[galera|xtradb cluster|innodb cluster]

我们将假设并比较:

  • 3数据中心设置(可用区可以算作数据中心)
  • 3节点 orchestrator/raft 设置
  • 3 orchestrator节点和 galera|xtradb cluster|innodb cluster多写模式(集群中的每个 MySQL 都可以接受写入)
  • 代理 可以运行 HTTP或者mysql健康检查
  • MySQL,MariaDB,Percona Server统称为MySQL

比较orchestrator/raftsynchronous replication backend
通信每个orchestrator节点都有一个私有的后端DB;orchestrator节点通过raft协议进行通信每个orchestrator节点连接到MySQL同步复制组中的不同成员。orchestrator节点之间不进行通信。
后端数据库
 
MySQL 或 sqliteMySQL
对后端数据库的依赖如果无法访问自己的私有后端数据库,服务会出现如果无法访问自己的私有后端数据库,则服务不健康
数据库数据一致性跨数据库后端独立。可能会有所不同,但在稳定的系统上会收敛到相同的整体情况单个数据集,跨数据库后端同步复制
数据库访问千万不要直接写。只有raft节点在协调/合作时访问后端数据库。否则可能会导致不一致。读取没问题可直接访问、写入;所有orchestrator节点/客户端都会看到完全相同的图片

Leader and actions

单一Leader。只有Leader才能进行恢复。所有节点都可以进行发现(探测)和自我分析单一Leader。只有Leader才能进行发现(探测)、分析和恢复。
HTTP 访问必须只能访问领导者(可以通过代理或强制执行orchestrator-client可以访问任何健康的节点(可以通过代理强制执行)。为了读取一致性,最好只与领导者交谈(可以通过代理或强制执行orchestrator-client
命令行HTTP/API 访问(例如curljq)或orchestrator-client使用熟悉的命令行界面封装常见 HTTP/API 调用的脚本HTTP/API 和/或orchestrator-client脚本或orchestrator ...命令行调用。
安装orchestrator仅在服务节点上提供服务。orchestrator-client任何地方的脚本(需要访问 HTTP/API)。orchestrator服务节点上的服务。orchestrator-client任何地方的脚本(需要访问 HTTP/API)。orchestrator任何地方的客户端(需要访问后端数据库)
ProxyHTTP。只能将流量引导至Leader ( /api/leader-check)HTTP。必须仅将流量引导至健康节点 ( /api/status);最好只将流量引导至Leader节点 ( /api/leader-check)
No Proxyorchestrator-client与所有后端一起使用orchestratororchestrator-client将引导流量至 master。orchestrator-client与所有后端一起使用orchestratororchestrator-client将引导流量至 master。
跨机房每个orchestrator节点(以及私有后端)可以在不同的 DC 上运行。节点间通信不多,流量低。每个orchestrator节点(以及关联的后端)可以在不同的 DC 上运行。orchestrator节点不直接通信。MySQL组复制通信频繁。流量主要与拓扑大小和轮询率呈线性关系。写入延迟。
探测orchestrator所有节点探测每个拓扑服务器每个拓扑服务器由单个活动节点探测
故障分析由所有节点独立执行仅由领导者执行(数据库是共享的,因此所有节点无论如何都会看到完全相同的图片)
故障转移仅由Leader执行仅由Leader节点执行
抵御失败的能力

如果有3个节点,1个节点允许宕机

如果有5个节点,2个节点允许宕机

如果有3个节点,1个节点允许宕机

如果有5个节点,2个节点允许宕机

节点从短暂故障中恢复节点重新加入集群,并根据更改进行更新。数据库节点重新加入集群,并根据更改进行更新。
节点从长期中断中恢复必须从健康节点克隆数据库。取决于您的 MySQL 后端实现。可能从备份进行 SST/恢复。

注意事项

以下是在两种方法之间进行选择时的注意事项:

  • 您只有一个数据中心 (DC):选择共享数据库甚至更简单的设置
  • 您对 Galera/XtraDB Cluster/InnoDB Cluster 感到满意,并且可以自动设置和维护它们:选择共享数据库后端。
  • 您拥有高延迟跨 DC 网络:选择orchestrator/raft方案
  • 您不想为orchestrator后端分配 MySQL 服务器:选择orchestrator/raft 和  SQLite数据库
  • 您有数千个 MySQL 集群:选择MySQL

笔记

  • 另一种同步复制设置是单个写入器的同步复制设置。这需要orchestrator节点和底层集群之间有一个额外的代理,上面没有考虑。

相关文章:

Orchestrator介绍二 自身高可用性方案

目录 获得 HA 的方法 一 没有高可用性 (No high availability) 使用场景 架构组成 架构图 二 半高可用性(Semi HA) 三 基于共享数据库后端高可用(HA via shared backend) 四 基于Raft协议高可用 五…...

成集云 | 旺店通多包裹数据同步钉钉 | 解决方案

源系统成集云目标系统 方案介绍 随着品牌电商兴起,线上线下开始逐渐融为一体,成集云以旺店通ERP系统为例,通过成集云-旺店通连接器,将旺店通ERP系统多包裹数据同步至钉钉实现数据互通,帮助企业解决了电商发货存在的错…...

什么是字体图标(Icon Font)?如何在网页中使用字体图标?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 字体图标(Icon Font)⭐ 如何在网页中使用字体图标⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&a…...

Blender文件云端GPU渲染

本文介绍如何在 GPU云平台vast.ai 上渲染Blender动画的技术指南,假设你已使用 vast.ai 并知道如何启动实例,这里的重要步骤是为实例选择正确的映像。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 使用 nvidia/cuda:11.4.1-cudnn8-devel-ubuntu2…...

C++——引用

引用的概念 引用不是新定义一个变量,而是给已存在的变量取一个别名,编译器不会因为引用变量而开辟内存空间,它和它引用的变量公用同一块空间。 相当于是给被引用的变量取了一个小名,但是相当于是同一个变量。 类型& 引用变…...

Flask入门一 ——虚拟环境及Flask安装

Flask入门一 ——虚拟环境及Flask安装 在大多数标准中,Flask都算是小型框架,小到可以称为“微框架”,但是并不意味着他比其他框架功能少。Flask自开发伊始就被设计为可扩展的框架。Flask具有一个包含基本服务的强健核心,其他功能…...

接口测试json入参,不同类型参数格式书写

接口json入参,不同类型参数格式 1、String 入参:A(String),B(String) 格式:{"A":"值a","B":"值b"} 示例: 接口测试入参这么…...

go web框架 gin-gonic源码解读03————middleware

go web框架 gin-gonic源码解读03————middleware(context) 今天打完游戏有空整理整理之前看的gin的中间件设计,go的中间件设计相较于前两站还是蛮简单,蛮容易看懂的,所以顺便把context也一起写一下。 中间件是现在w…...

win10电脑记事本在哪里?电脑记事本如何查看字数?

在日常工作中,我们会遇到许多需要记录的信息和事项,而使用电脑记事本工具可以帮助我们方便地保存、管理这些内容。无论是记录工作会议的要点、制定工作计划,还是记录灵感和创意,电脑记事本都是非常实用的工具。 那么win10电脑记事…...

【微服务】06-安全问题

文章目录 1.反跨站请求伪造1.1 攻击过程1.2 攻击核心1.3 如何防御1.4 使用AntiforgeryToken机制来防御用到的类 2. 防开发重定向共计2.1 攻击过程2.2 攻击核心2.3 防范措施 3.防跨站脚本3.1 攻击过程3.2 防范措施 4.跨域请求4.1 同源与跨域4.2 CORS过程4.2 CORS是什么4.3 CORS请…...

js的this指向问题

代码一: 这段代码定义了run函数、obj对象,然后我们把run函数作为obj的方法。 function run(){console.log(this);}let obj{a:1,b:2};obj.runrun;obj.run(); 那么我们调用obj的run方法,那么这个方法打印的this指向obj。 分析:即…...

Redis常用数据类型及命令

Redis 常用数据类型 常用数据类型 主要是指value类型 key都是字符串类型的 各种数据类型对应的特点 应用场景 哈希:一般来存储一些对象 列表:存一些跟顺序有关系的数据,比如朋友圈点赞 集合:一般用来做运算,交集&a…...

软件工程(六) 面向对象分析(OOA)之UML图特点

1、UML 面向对象分析里面有一个非常重要的工具叫UML,UML不仅在工作中非常重要,在考试当中也是非常重要的,即作为上午综合体,又大概率又会出现在下午的案例分析中,作为一个25分的大题。 UML叫做统一建模语言,它主要用于需求分析和软件的设计,来做一些模型的制作。比如我…...

QT 消息对话框按钮显示

前言 搞QT嘛,大多数都是军工。都要国产化,而且消息对话框的按钮的英文也不是很得劲,所以需要汉化。使用静态函数的按钮就是显示英文,汉化的代码如下。 void Widget::on_pushButton_clicked() {QMessageBox box(QMessageBox::Inf…...

平衡二叉树及其应用详解

平衡二叉树 定义与性质 平衡二叉树(Balanced Binary Tree)是计算机科学中的一种数据结构,它是二叉排序树的一种特殊情况。 平衡二叉树满足以下性质: 左子树和右子树的高度差不超过 1。也就是说,对于任意节点&#…...

vue3+ ts ts语法在script写不知道为啥一直报错

在vue3页面中写ts语法 发现识别不了 一直报错 1.出现这种问题的话,首先查看自己写的有没有问题,没有问题的话 2.再查看 script里边有没有写 lang"ts" <script setup lang"ts">解析 setup&#xff1a;是vue3在单文件组件 (SFC) 中使用 composition …...

c#写的端口监听,程序退出后,再次运行提示端口占用,且进程不存在

我用c#写了一个监听29999端口,进程结束后再次启动发现端口被占用&#xff0c;但是运行netstat -ano | findstr 29999找到进程ID后&#xff0c;却没有这个进程 经查询这个监听29999进程虽然没了&#xff0c;但是要找到他的父进程&#xff0c;把父进程关闭了才可以&#xff0c;参…...

跨域案例go gf ,请求代理,前端请求后端A转发给多个后端B

跨域案例go gf &#xff0c;请求代理&#xff0c;前端请求后端A转后端B 案例&#xff1a;从前端请求后端A&#xff08;路径携带argusx&#xff09;&#xff0c;后端A转发请求到多个不同地区&#xff08;可一个&#xff09;后端B(切掉argusx&#xff0c;其他不变进行请求)&…...

9.4 集成功率放大电路

OTL、OCL 和 BTL 电路均有各种不同输出功率和不同电压增益的集成电路。应当注意&#xff0c;在使用 OTL 电路时&#xff0c;需外接输出电容。为了改善频率特性&#xff0c;减小非线性失真&#xff0c;很多电路内部还引入深度负反馈。这里以低频功放为例。 一、集成功率放大电路…...

Java“牵手“拼多多商品详情数据、拼多多优惠券信息、拼多多到手价信息获取方法,拼多多API实现批量商品数据抓取示例

拼多多商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取拼多多商品详情数据&#xff0c;您可以通过开放平台的接口或者直接访问拼多多商城的网页来获取商品详情信息。以下是两种常用方法的介绍&#xff1a;…...

USB批量传输中ZLP的必要性:为何512字节整数倍数据包会丢失

1. USB批量传输中的ZLP到底是什么&#xff1f; 第一次遇到USB批量传输丢数据的问题时&#xff0c;我也是一头雾水。明明发送端显示数据已经成功发送&#xff0c;接收端却死活收不到完整数据。后来排查发现&#xff0c;问题出在数据包大小刚好是512字节的整数倍时。这就是我们今…...

Qwen3字幕生成工具实战:快速处理会议录音,输出带时间戳字幕

Qwen3字幕生成工具实战&#xff1a;快速处理会议录音&#xff0c;输出带时间戳字幕 1. 会议录音转字幕的痛点与解决方案 处理会议录音是许多职场人士的日常任务。传统方法需要先听录音&#xff0c;再手动记录内容&#xff0c;最后还要逐句对齐时间轴&#xff0c;整个过程耗时…...

王者荣耀进阶指南:如何用这个HTML5模拟器测试不同出装对英雄属性的影响

王者荣耀进阶指南&#xff1a;如何用HTML5模拟器优化英雄出装策略 在MOBA游戏的战术体系中&#xff0c;装备选择往往决定着团战的胜负走向。传统依靠经验积累的配装方式存在试错成本高、数据感知模糊等痛点&#xff0c;而现代HTML5技术构建的模拟器为玩家提供了可视化、即时反馈…...

ChatGLM3-6B-128K在客服系统中的应用:智能回复生成

ChatGLM3-6B-128K在客服系统中的应用&#xff1a;智能回复生成 1. 引言 想象一下&#xff0c;一个繁忙的电商客服中心&#xff0c;每天要处理成千上万的客户咨询。传统的人工客服需要不断重复回答相似的问题&#xff0c;不仅效率低下&#xff0c;还容易因为疲劳而出错。现在&…...

缺陷检测新利器:f-AnoGAN原理剖析与工业视觉实战

1. 工业视觉缺陷检测的痛点与挑战 在工业生产线上&#xff0c;产品表面缺陷检测一直是个让人头疼的问题。传统的人工检测方式效率低下&#xff0c;一个工人盯着传送带看8小时&#xff0c;漏检率能达到15%以上。我见过某家电企业质检车间&#xff0c;工人们需要检查微波炉门板上…...

电脑PC下载SMART200PLC和SMART 触摸屏程序的方法

西门子S7-200smartPLC和smart触摸屏通过本笔记本下载程序时&#xff0c;笔记本和smart触摸屏需完成相应设置&#xff0c;即笔记本电脑和smart触摸屏需通过固定IP通信下载程序&#xff0c;设置方法如下&#xff0c;本文档设置之前默认已将电脑、PLC和触摸屏通过RJ45接口网线连接…...

多无人机协同打击任务分配方法

随着无人机技术的不断成熟和完善&#xff0c;其军事应用的优势日益显现&#xff0c;近年来其在军事冲突中 所发挥的作用更使人们认识到&#xff0c;无人机在未来战争中将成为重要的军事装备。随着无人机在军 事中的大量应用&#xff0c;无人机集群协同执行任务将成为典型的应用…...

dumpDex安全研究:脱壳工具在Android安全分析中的应用

dumpDex安全研究&#xff1a;脱壳工具在Android安全分析中的应用 【免费下载链接】dumpDex &#x1f4af;一款Android脱壳工具&#xff0c;需要xposed支持, 易开发已集成该项目。 项目地址: https://gitcode.com/gh_mirrors/du/dumpDex 在Android应用安全分析领域&#…...

TSDoc贡献指南:如何为开源文档标准做出贡献的完整教程

TSDoc贡献指南&#xff1a;如何为开源文档标准做出贡献的完整教程 【免费下载链接】tsdoc A doc comment standard for TypeScript 项目地址: https://gitcode.com/gh_mirrors/ts/tsdoc TSDoc是一个为TypeScript设计的文档注释标准&#xff0c;旨在为不同的工具提供统一…...

Youtu-VL-4B-Instruct步骤详解:Supervisor日志查看、错误定位与常见启动失败修复

Youtu-VL-4B-Instruct步骤详解&#xff1a;Supervisor日志查看、错误定位与常见启动失败修复 部署一个强大的多模态AI模型&#xff0c;最让人头疼的往往不是使用&#xff0c;而是启动。你满怀期待地拉取镜像、启动服务&#xff0c;结果浏览器里只显示一个冰冷的“无法访问此网…...