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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复-AIX PV完整镜像方法以及误删LV的数据恢复方案

AIX中的PV相当于物理磁盘(针对于存储来说,PV相当于存储映射过来的卷;针对操作系统来说,PV相当于物理硬盘),若干个PV组成一个VG,AIX可以将容量不同的存储空间组合起来统一分配。AIX把同一个VG的所…

java maven项目打jar包发布(精简版)

目录 一、maven打包 二、安装jdk环境 三、安装mysql 四、jar包传输到服务器 一、maven打包 先clean再package target文件夹下面有生成一个jar包 二、安装jdk环境 1、下载jdk cd /usr/local wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.…

Unity - 制作package 插件包

1.将制作的插件包代码放置一个根目录下 2.在跟目录下创建package.json文件 //package.json {"name": "com.unity.customlibrary", //插件包名:com.组织名.包名"displayName": "CustomLibrary", //显示的插件名"v…

基于深度学习的图像风格迁移发展总结

前言 本文总结深度学习领域的图像风格迁移发展脉络。重点关注随着GAN、CUT、StyleGAN、CLIP、Diffusion Model 这些网络出现以来,图像风格迁移在其上的发展。本文注重这些网络对图像风格迁移任务的影响,以及背后的关键技术和研究,并总结出一…

stm32的位带操作

在51单片机中,我们可以使用P2^1来对单片机的某一位进行操作,到了stm32,我们通过位带操作,将寄存器的每一位映射到一个32位的地址。如下是我查资料摘录的一些图片。 映射方式 SRAM: AliasAddr 0x22000000 (A-0X20000000)*8*4n*4…

C++类成员的访问权限以及类的封装

C通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。 Java、C# 程序员注意,C 中的 publ…

IDEA项目实践——VUE介绍与案例分析

系列文章目录 IDEA项目实践——JavaWeb简介以及Servlet编程实战 IDEA项目实践——Spring集成mybatis、spring当中的事务 IDEA项目实践——Spring当中的切面AOP IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——Spring框架简介,以及IOC注解 I…

YOLO目标检测——动漫头像数据集下载分享

动漫头像数据集是用于研究和分析动漫头像相关问题的数据集,它包含了大量的动漫风格的头像图像。动漫头像是指以动漫风格绘制的虚构人物的头像图像,常见于动画、漫画、游戏等媒体。 数据集点击下载:YOLO动漫头像数据集50800图片.rar

Matlab分割彩色图像

彩色图像 彩色图像除有亮度信息外,还包含有颜色信息。以最常见的RGB(红绿蓝)彩色空间为例来简要说明彩色图像: 彩色图像可按照颜色的数目来划分。例如,256色图像和真彩色图像(2的16次方=21677…

Android 12 源码分析 —— 应用层 二(SystemUI大体组织和启动过程)

Android 12 源码分析 —— 应用层 二(SystemUI大体组织和启动过程) 在前一篇文章中,我们介绍了SystemUI怎么使用IDE进行编辑和调试。这是分析SystemUI的最基础,希望读者能尽量掌握。 本篇文章,将会介绍SystemUI的大概…

若依微服务版部署到IDEA

1.进入若依官网,找到我们要下的微服务版框架 2.点击进入gitee,获取源码,下载到本地 3.下载到本地后,用Idea打开,点击若依官网,找到在线文档,找到微服务版本的,当然你不看文档,直接按…

Java集合案例:斗地主游戏开发

斗地主游戏的开发业务需求分析业务:共有54张牌点数:“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”,“2”花色:“♠”,“❤”,“♣”,“♦”大小王:“👲”,“🃏” *点数分别要…

2023年京东睡眠经济市场数据分析(京东商品数据)

如今,伴随快节奏的生活,越来越多的人饱受睡眠问题的影响。同时,伴随现代化的发展,睡眠障碍群体或许会达到新的体量,而日趋增加的失眠人群自然而然低催生了助眠产品的增长。随着人们对健康睡眠重视的程度不断提高&#…

C++设计模式(工厂模式)

文章目录 前言一、什么是工厂模式二、简单工厂模式三、简单工厂模式优点和缺点四、简单工厂适用场景五、简单工厂类的使用总结 前言 本篇文章正式带大家来学习C中的设计模式,这篇文章主要带大家学习工厂模式。 一、什么是工厂模式 工厂模式(Factory P…

SpringCloud/SpringBoot多模块项目中配置公共AOP模块实现打印子模块Controller所有请求参数与日志

项目中遇到多个模块需要打印Controller请求日志,在每个模块里面加AOP并且配置单独的切面笔者认为代码冗余,于是乎就打算把AOP日志打印抽离成一个公共模块,谁想用就引入Maven坐标就行。 定义公共AOP模块 并编写AOP工具 AOP模块pom.xml如下 &…

Elasticsearch 入门安装

1.Elasticsearch 是什么 The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。 Elaticsearch,简称为…

非凸联合创始人李佐凡受邀出席复旦DSBA项目座谈会

8月17日,非凸科技联合创始人&CTO李佐凡受邀参加复旦管院数据科学与商业分析专业硕士(DS&BA)项目发展座谈会,与学校教授、老师在生源背景、课程教学、职业发展、学生培养和企业合作方面进行深入交流,旨在更好地…

大数据课程K6——Spark的Shuffle详解

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的定义&&特点&&目的&&优缺点; ⚪ 掌握Spark的相关参数配置; ⚪ 掌握Hadoop的插件配置; 一、Spark Shuffle详解 1. 概述 Shuffle,就是洗牌。之所以…

ReoGrid.NET集成到winfrom

ReoGrid一个支持excel操作的控件,支持集成到任何winfrom项目内。 先看效果图: 如何使用: 使用ReoGrid自带excel模版设计工具先设计一个模版,设计器如下: 具体例子看官方文档 代码示例如下: var sheet reoGridControl1.CurrentWorksheet; …

虚拟展览有什么优势?设计虚拟展览时需注意什么?

引言: 在这个数字化飞速发展的时代,虚拟展览作为一种崭新的展示方式,正逐渐走入人们的视野。虚拟展览,顾名思义,是通过数字技术将传统的展览呈现方式转变为虚拟的线上体验。 一、什么是虚拟展览 虚拟展览是一种以数…