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节点和底层集群之间有一个额外的代理,上面没有考虑。

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

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

相关文章

webrtc交叉编译嵌入式的方法

背景是我们有嵌入式的需求,需要编译webrtc进入板子上。先说结论,最后是这样config之后就编译通过的: gn gen out/linux-yeshen --args‘target_os“linux” target_cpu“arm64” ffmpeg_branding“Chrome” proprietary_codecstrue is_debugt…

Tableau可视化入门实践-2

目录 折线图1.导入excel文件数据2.建立折线图并添加标签 双轴折线图 折线图 1.导入excel文件数据 2.建立折线图并添加标签 双轴折线图 行标签拖进两个度量建立上下两个折线图 在第二个折线图纵轴,右键选择“双轴”

【mysql】MySQL服务无法启动 NET HELPMSG 3534

MySQL服务无法启动 NET HELPMSG 3534 错误描述寻找原因解决方法 错误描述 mysql版本:8.1.0 mysql安装成功之后,使用net start mysql来启动mysql,然后出现了报错 MySQL服务无法启动 NET HELPMSG 3534 寻找原因 1、在cmd中,进入…

JWT-Token

一、JWT 需要在 HTTP 这种无状态的机制下,记录下(标识)出来是不是连续(逻辑上的连续)的请求。 思路:如果多次请求,携带了相同的标识型数据,则认为是逻辑上连续的。这个标识&#xff…

数据结构(Java实现)LinkedList与链表(下)

** ** 结论 让一个指针从链表起始位置开始遍历链表,同时让一个指针从判环时相遇点的位置开始绕环运行,两个指针都是每次均走一步,最终肯定会在入口点的位置相遇。 LinkedList的模拟实现 单个节点的实现 尾插 运行结果如下: 也…

构建 NodeJS 影院预订微服务并使用 docker 部署(04/4)

一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 我们前几章的快速回顾 第一篇文章介绍了微服务架构模式,并讨论了使用微服务的优缺点。第二篇…

uniapp封装ajax请求

import /common/api/interceptor.js; // 引入拦截器文件 export default{common:{baseUrl:"http://localhost:3000/api",data:{},header:{"Access-Control-Allow-Origin":"*","Content-Type":"application/json","Cont…

MacOS软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 MacOS是一种由苹果公司开发的操作系统,专门用于苹果公司的计算机硬件。它被广泛用于创意和专业应用程序,如图像设计、音频和视频编辑等。以下是关于MacOS的详细介绍。 1、MacOS的历史和演变 MacOS最初于…

Linux 计算机网络基础概论

一、网络基本概念 1、网络 网络是由若干节点和连接这些结点的链路组成,网络中的结点可以是计算机、交换机、路由器等设备。通俗地说就是把不同的主机连接起来就构成了一个网络,构成网路的目的是为了信息交互、资源共享。 网络设备有:交换机…

ctfshow-web-红包题第六弹

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 首先跑一下字典,这里用的dirmap,可以看到有一个web.zip 下载下来之后发现是一个网站备份,备份的是check.php.bak 然后接着看,可以看到这里不太可能是sql注入,有…

centos7安装nacos

解决 Nacos 国内下载速度缓慢的问题 方案 1. 选择相应的版本源码下载 1.1 依次点击 1、2、3 选中我们的最新稳定版本 1.4.0 1.2 点击下载 ZIP、或者 clone 也行,这里都可以 2. 本地编译 2.1 预备环境准备 2.2 解压编译 3. 启动验证 3.1 解压 3.2 启动服务器 3…

k8s service (三)

K8s service (三) LoadBalancer类型的Service LoadBalancer和NodePort其实是同一种方式,目的都是向外暴露一个端口,区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部环境支持的,外部服务发送到这…

excel 分组排序

excel中会遇到对不同分组数据进行排序,比如对于不同班级里的学生按照分数高低进行升序排序,可以采用如下公式 SUMPRODUCT((A$2:A$12A2)*(C$2:C$12>C2))1 如果需要 进行降序排序,将公式中的大于号替换为小于号即可

Cinema 4D软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Cinema 4D(简称C4D)是由德国Maxon Computer公司开发的一款三维动画渲染和建模软件,广泛应用于影视、广告、工业设计等领域。C4D因其高效率、易用性和强大的功能而受到广大设计师和艺术家的青睐…

vue 实现word文档页面内预览docx-preview 和 vue-office

1.先下载引入 npm i docx-preview --save import { renderAsync } from docx-preview;2.使用 fetch(url) .then((response) > {let docData response.blob(); //将文件转换成bolb形式//选择要渲染的元素let childRef document.getElementsByClassName("childRef&qu…

npm下载最后会卡顿很长时间

npm下载最后会卡顿很长时间 这几天在使用npm下载东西时会出现,快结束了,但是进度条就是卡在那,要等好久才能下载完 解决办法 换阿里云的源 更换源:npm config set registry https://registry.npmmirror.com/ 查看源&#xff…

SQL Server软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SQL Server是一种关系型数据库管理系统,由美国微软公司开发。它被设计用于存储、管理和查询数据,被广泛应用于企业级应用、数据仓库和电子商务等场景。 以下是SQL Server软件的主要特点和功能&#xff1…

【PHP】PHP基本语法

1、PHP标记 当解析一个文件时&#xff0c;PHP 会寻找起始和结束标记&#xff0c;也就是 <?php 和 ?>&#xff0c;告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去&#xff0c;而任何起始和结束标记之外的部分都会被 PHP…

Pytorch-day07-模型保存与读取

PyTorch 模型保存&读取 模型存储模型单卡存储&多卡存储模型单卡读取&多卡读取 1、模型存储 PyTorch存储模型主要采用pkl&#xff0c;pt&#xff0c;pth三种格式,就使用层面来说没有区别PyTorch模型主要包含两个部分&#xff1a;模型结构和权重。其中模型是继承n…

spring cloud整合spring boot,整合nacos、gateway、open-feign等组件

补充&#xff1a; 想看具体详情的可以看我的github链接&#xff1a;codeking01/platform-parent: spring cloud整合spring boot、nacos、gateway、open feign等组件 (github.com) 由于我升级了jdk17&#xff0c;所以用上了spring boot 3.0.2了。 踩坑无数&#xff0c;一堆无用文…