超融合架构下,虚拟机高可用机制如何构建?
作者:SmartX 产品部 钟锦锌
虚拟机高可用(High Availability,简称 HA)是虚拟化/超融合平台最常用、关键的功能之一,可在服务器发生故障时通过重建业务虚拟机以降低故障对业务带来的影响。因此,为了充分保障业务的连续性和稳定性,虚拟机 HA 功能需要覆盖大范围的故障场景,能够对具体故障进行准确识别,并根据故障场景采取适合的切换机制。
基于计算与存储融合部署的架构,SmartX 超融合(搭配原生虚拟化 ELF)不仅可通过多副本策略和机架感知等技术特性提升虚拟机 HA 有效性,还可通过优化的虚拟机 HA 功能为多种服务器和虚拟机故障场景提供更为细致的虚拟机重建服务。以下,我们将结合超融合架构对高可用的构建要求,深入解读 SmartX 超融合虚拟机 HA 机制设计与具体功能。
欲了解更多 SmartX 超融合技术与特性,欢迎下载阅读系列电子书《超融合技术原理与特性解析(一)虚拟化与存储》、《SmartX 超融合技术原理与特性解析合集(二)管理与运维》。
1 超融合架构下的虚拟机高可用实现需求
超融合架构下,虚拟机 HA 功能的作用与虚拟化平台基本一致:当服务器发生故障时,受影响的虚拟机将在集群中其他健康主机上自动重启并恢复运行。HA 将降低停机故障影响,并缩短服务中断时长,同时不需要专门的备用硬件和安装附加软件。关键步骤包括:
- 准确感知故障,触发 HA。
- 不依赖虚拟机的操作系统和软件,并在确保虚拟机的一致性前提下实现主机的转移。
- 合理选择目标主机,重启虚拟机,完成 HA 流程。
1.1 核心差异是存储的高可用
在虚拟机 HA 功能的设计和实现上,超融合与虚拟化平台存在一些差异。在虚拟化场景中,实现故障场景下虚拟机转移到其他主机恢复运行的基础是:虚拟机数据存放在共享存储设备,且这些主机能访问该存储。因此,高可用功能是高度依赖共享存储(FC-SAN 、IP-SAN 存储等外部存储设备)的。然而在传统架构中,虚拟化主机与共享存储是相互独立的,存储的可用性是由存储设备负责保证的,虚拟化平台的高可用设计无需考虑存储的可用性。
而超融合架构的特征是计算虚拟化和软件定义存储在同一主机上融合部署,因此,超融合架构下高可用设计的复杂性在于,既要确保计算虚拟化层面的可用性,还要确保存储的可用性,这是两者在高可用实现中的核心差异。
1.2 服务器节点故障对超融合集群的影响
1.2.1 对虚拟化计算的影响
当服务器节点发生故障,最直接的影响就是虚拟机无法正常运作。如果遭遇节点宕机,虚拟机自然也会随之宕机;如果遭遇的是局部故障,虚拟机虽然不会直接宕机,但有可能无法连接网络或者无法正常 I/O 读写。无论是以上哪种故障,都很有可能影响业务的正常运行,需要通过 HA 功能介入,尽快恢复业务的正常服务。
1.2.2 对存储的影响
SmartX 超融合软件 SMTX OS 使用多副本技术实现数据冗余,所有写入的数据将自动复制为多个副本(2 副本或者 3 副本可选),并确保不同的数据副本分别写入不同的服务器。当(一台或多台)服务器节点发生故障,软件定义存储的其中一个(或多个)副本就会离线。
图 1
2 SmartX 超融合虚拟机 HA 适用范围
2.1 可覆盖的故障场景
真实环境中面临的故障场景是复杂、多样的,高可用首先需要准确地辨认故障场景。否则,错误地、频繁地触发 HA 将会为业务连续性带来负面影响。基于以上故障影响分析,SmartX 超融合虚拟机 HA 功能在设计时尽可能考虑更多故障场景,目前可覆盖以下 4 种常见故障场景,并可根据故障场景的特点触发合适的 HA 切换动作。
2.1.1 服务器节点宕机/不响应
当服务器节点发生宕机,原有的虚拟机已经被动关闭,此时系统会自动触发故障 HA,获取故障服务器上的虚拟机列表,并将受保护的虚拟机在集群中其他健康节点上重新启动虚拟机以恢复业务运行。
2.1.2 服务器节点存储网络故障
当服务器节点的存储网口全部故障,意味着该节点的硬盘设备和数据离线,无法和集群中其他健康节点进行通讯。此时网络心跳将发生超时,当网络中断时间持续 9 个检测周期(90s),系统会触发节点自我隔离,并主动暂停故障节点上的虚拟机(如果无法暂停就会直接关闭),后续将在其他健康节点重新启动这些虚拟机以恢复业务运行。
2.1.3 虚拟机业务网络故障
目前,SmartX 超融合新增了对虚拟机业务网络故障的检测,一旦发现节点上的业务网口全部故障(存储网口正常工作),系统会在 60s 内触发 HA,但虚拟机不会经历重新启动,后台将自动执行在线迁移,将故障节点上的虚拟机迁移到集群中其他的健康节点中。
2.1.4 虚拟机状态不一致
如遭遇机房停电,集群节点整体下线,这种场景下系统是没有条件触发 HA 的;当机房重新恢复电力,HA 功能会被重新触发,由于该场景下并不存在硬件故障,因此系统会优先在原节点重新启动虚拟机,恢复虚拟机正常运行。
2.2 虚拟机高可用开关
另外,针对特定的虚拟机,用户不希望自动触发 HA。对于这一需求,SmartX 超融合设计了虚拟机 HA 开关,每台虚拟机可以根据需要选择开启或禁用 HA 功能。对于不受 HA 保护的虚拟机,当节点发生故障时,虚拟机不会自动重启,会保持关闭状态,用户可以选择手动启动虚拟机。
3 SmartX 超融合虚拟机 HA 整体机制设计
3.1 虚拟机高可用触发机制
- 集群默认启动 HA 功能,自动选举出其中一个节点作为 HA Leader,集群其他节点均为 HA Follower。
- 集群中每个节点会有守护进程(VM Monitor)。
- HA Follower 通过 VM Monitor 定期(每 10s 一次)写入心跳信息。
- HA Leader 节点通过 VM Monitor 定期(每 10s 一次)读取心跳信息,并负责判断其他节点的状态。
高可用触发时间线:
*注:时间点以非 HA leader 节点故障为例。
3.2 虚拟机重建机制
当触发 HA 之后,理论上系统可以在集群中健康主机上随机选择位置重新启动虚拟机。但考虑到集群中并不是所有主机的硬件条件都是完全一致的,如业务对主机的硬件环境比较敏感时,切换主机可能会导致业务无法正常提供服务。因此,SmartX 提供了更细致的虚拟机重建机制。
3.2.1 虚拟机放置组功能
创建虚拟机放置组的实质是通过对虚拟机的放置和迁移设置约束和建立规则,以便虚拟机能够在适当的节点上运行。创建放置组规则后,在虚拟开机、迁移及触发 HA 后的重建过程中,将遵循放置组规则为虚拟机选择合适的主机。适用场景包括:
(1)业务高可用
多台虚拟机同属于单一业务,彼此之间应用级别的故障转移时,这些虚拟机不应该放置到同一主机,否则单一主机故障可能影响业务的连续性。在这种情况下,可以通过设置放置组策略,要求触发 HA 时将相关虚拟机安排在不同主机上重建。(如图 2 所示)
图 2
(2)业务对主机 CPU 敏感
如果虚拟机的 vCPU 是使用直通模式,触发 HA 后如果在配置其他不同型号 CPU 的主机上重建,那么虚拟机内部的 vCPU 型号也会发生变化。有一部分应用软件会绑定机器码,其中包括 CPU 信息,可能会导致许可失效。
如果虚拟机对 CPU 性能有特定需求,如特定的 CPU 主频或者 CPU 系列,在其他主机上重建有可能导致业务性能下降。
针对以上场景,可以通过设置放置组策略,确保虚拟机在触发 HA 后会在指定(拥有特定 CPU 资源)的主机上重建。(如图 3 所示)
图 3
(3)业务对网络有特殊要求
虚拟机需要访问特殊的网络,集群中只有某部分主机才拥有该网络或网口,HA 切换主机后有可能导致网络无法正常通讯。这种情况同样可以通过设置放置组策略,确保虚拟机在触发 HA 后会在指定(拥有特定网络资源)的主机上重建。
3.2.2 HA 优先级选项
当 HA 触发时,故障节点上所有开启 HA 的虚拟机将一起进入重建队列,其顺序无法保证承载重要业务的虚拟机得到优先恢复。此外,遭遇节点故障会导致集群总资源减少(包括 CPU、内存、存储资源等),如果集群剩余的资源比较紧张,无法承载所有需要重建的虚拟机,可能导致重要虚拟机无法重建。
针对这个场景,SmartX 超融合提供了虚拟机 HA 优先级选项,可以为虚拟机设置高、中、低 3 种优先级别,当触发 HA 后,系统可依照优先级顺序重建虚拟机,确保重要虚拟机优先重建完成。(如图 4 所示)
图 4
3.3 机架感知功能:提升虚拟机 HA 有效性
前面提到 SMTX OS 在不同服务器拥有多个数据副本,可容忍服务器硬件故障,并通过存活副本自动完成数据恢复。但如果这些服务器都放在同一个机柜,那么只要机柜的 PDU 共享电源发生故障,多台主机会将同时离线,那么多副本保护机制就可能失效。机架感知技术,就是通过感知服务器的存放拓扑(放置在不同机柜),数据的多个副本自动跟随放置在位于不同机柜的多台服务器当中。即使遭遇某一机柜电源故障,系统也可以从其他机柜上的服务器找到对应的数据副本,并触发数据恢复流程。
图 5
前面提到存储可用性是虚拟机高可用的关键,机架感知功能不仅可以提升集群的可用性,还增强了虚拟机高可用的有效性。
小结
整体而言,在故障发生初期,SMTX OS 超融合软件可准确识别故障场景类型,并根据故障类型执行对应高可用动作,尽可能减少 HA 切换影响;在触发 HA 切换后,系统会根据预设规则精准地将虚拟机安排到合适的主机上进行重建,并可根据业务重要性安排重建顺序。搭配机架感知功能,SmartX 超融合虚拟机 HA 机制可为业务虚拟机提供多场景、有效、准确的连续性保障。
欲了解更多 SmartX 超融合技术与特性,欢迎下载阅读系列电子书《超融合技术原理与特性解析(一)虚拟化与存储》、《SmartX 超融合技术原理与特性解析合集(二)管理与运维》。
相关文章:

超融合架构下,虚拟机高可用机制如何构建?
作者:SmartX 产品部 钟锦锌 虚拟机高可用(High Availability,简称 HA)是虚拟化/超融合平台最常用、关键的功能之一,可在服务器发生故障时通过重建业务虚拟机以降低故障对业务带来的影响。因此,为了充分保障…...

工厂模式详情
一.介绍工厂模式的用途与特点 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。定义工厂方法模式(Fatory Method Pattern)是指定义一个创建对象的接口,但让实现这个接口的类来决定实例…...

【Word】调整列表符号与后续文本的间距
1. 默认的列表格式: 2. 修改间距: ************************************************** 分割线 ************************************************************ 3. 效果...

匠心独运,B 端系统 UI 演绎华章之美
匠心独运,B 端系统 UI 演绎华章之美...

Java电商平台-开放API接口签名验证(小程序/APP)
说明:在实际的生鲜业务中,不可避免的需要对外提供api接口给外部进行调用. 这里就有一个接口安全的问题需要沟通了。下面是干货: 接口安全问题 请求身份是否合法? 请求参数是否被篡改? 请求是否唯一? AccessKey&am…...
Tale全局函数对象base
目录 1、 Tale全局函数对象base 1.1、 * tale alert删除 1.2、 * 成功弹框 1.3、 * 弹出成功,并在500毫秒后刷新页面 1.4、 * 警告弹框 1.5、 * 询问确认弹框,这里会传入then函数进来...

【启程Golang之旅】掌握Go语言数组基础概念与实际应用
欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…...

COMSOL中液晶材料光学特性模拟
前面我们根据FDTD官方文档设置了液晶指向的模型。COMSOL也可以根据相似的方法设置各项异性的周期性变化的材料。 该方法参考了luneburg_lens的COMSOL文档 在给出的文件中,可以发现定义-变量中可以使用默认坐标作为变量,即xyz。因此,折射率也可…...

虚拟现实环境下的远程教育和智能评估系统(五)
查阅相关VR眼动注意力联合教育学相关论文 1.Exploring Eye Gaze Visualization Techniques for Identifying Distracted Students in Educational VR(IEEE VR 2020) 摘要:我们提出了一种架构,使VR教学代理能够响应眼动追踪监控…...

【算法】模拟算法——Z字形变换(medium)
题解:模拟算法——Z字形变换(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接:LINK 2.题解 利用模拟,来解决问题。 首先创建出一个O(numRows*n)的数组来,并按照题目要求把每个字符按顺序填进去。 这里以numRows…...

上位机图像处理和嵌入式模块部署(f103 mcu获取唯一id)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于stm32f103系列mcu来说,一般每一颗原厂的mcu,都会对应一个唯一的id。那这个id可以用来做什么用呢?个人认为&…...

运筹学_3.运输问题(特殊的线性规划)
目录 前言3.1 平衡运输问题中初始基可行解确定运输问题平衡运输与非平衡运输平衡运输问题的数学模型单纯形法解决平衡运输问题,初始可行基的确认 3.2 平衡运输问题的最优解判别求检验数表上作业法 3.3 产销不平衡的运输问题运输问题中产大于销的问题运输问题中产小于…...
科研项目书写作学习(持续更新中...)
写好一个科研项目书也是科研中很重要的一部分,所以借这篇博客做一个积累。还是以模块化的方式吧,后面慢慢那再整合逻辑。可能写的也不是很好,慢慢提升吧~ 背景 科研项目书的背景怎么写?首先要突出问题的价值(也就是做此研究的动…...

男士内裤哪个品牌好一点?2024热门男士内裤推荐
男人的内裤保质期只取决于被别人看见的次数,如果某条内裤从未被别人看见过,那它永远都是你的新内裤。也就是说,只要穿着破内裤这尴尬的瞬间没被目击,男人就能永远和一条内裤在一起。 实际上如果长时间不更换男士内裤,…...

Llama模型家族之RLAIF 基于 AI 反馈的强化学习(六) RLAIF 代码实战
LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…...

计算机tcp/ip网络通信过程
目录 (1)同一网段两台计算机通信过程 (2)不同网段的两台计算机通信过程 (3)目的主机收到数据包后的解包过程 (1)同一网段两台计算机通信过程 如果两台计算机在同一个局域网中的同…...
42.开发中对String.format()的使用之空位补齐
用于空位补齐 Int x1; //对于传入的数字做处理,如果传入的数字不足三位,则使用数字0自动补齐 String numString.format(“%”3”d”,x); System.out.println(“num”num);//输出结果为:001 也可以简写成: String num2String…...

通用代码生成器应用场景四,跨编程语言翻译
通用代码生成器应用场景四,跨编程语言翻译 如果您有一个Java工程,想把它移植到Rust或Golang语言中去,希望尽可能加快研发速度。 如果您的系统是通用代码生成器开发的,保留了系统的SGS源文件或者SGS2的Excel模板,您可…...

β-烟酰胺单核苷酸(NMN)功能不断得到验证 市场规模呈增长态势
β-烟酰胺单核苷酸(NMN)功能不断得到验证 市场规模呈增长态势 β-烟酰胺单核苷酸(β-Nicotinamide mononucleotide,NMN)是一种生物活性分子,是一种辅酶Ⅰ(NAD)的前体,也是…...

深入理解 Go 语言中的字符串不可变性与底层实现
文章目录 前言1 字符串类型的数据结构组成2 为什么要这么设计数据结构?3 为什么说字符串类型不可修改?4 如何实现字符串的修改?5 为什么字符串修改的字面量用单引号?6 如何判断字符串的修改新建了一个字符串?7 字符串的…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...

C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...