动态资源平衡:主流虚拟化 DRS 机制分析与 SmartX 超融合的实现优化

本文主要是介绍动态资源平衡:主流虚拟化 DRS 机制分析与 SmartX 超融合的实现优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

资源的动态调度是虚拟化软件(或超融合软件)中的一项重要功能,主要指在虚拟化集群中,通过动态改变虚拟机的分布,达到优化集群可用性的目标。这一功能以 VMware vSphere 发布的 Distributed Resource Scheduler(DRS)最为人们所熟知,它凭借简单易用的特点,在用户中迅速流行,甚至成为此类功能的代名词。

作为国内领先的专业超融合厂商,SmartX 在最新发布的超融合软件版本 SMTX OS 5.1(以下简称 SMTX OS)中,也新增了对 DRS 功能的支持。不同于 VMware 6.x 及其他市场常见的虚拟化平台 DRS 实现机制,SMTX OS 优化了 DRS 评价体系,可充分适应基于容器的“敏态”应用环境,有效提升业务运行与日常管理效率。

本文,我们将深入解读目前主流虚拟化平台 DRS 实现机制与 SmartX 虚拟化平台上 DRS 功能的优化与创新,通过对比分析,帮助读者进一步了解 DRS 及其不同实现机制对集群运行带来的影响。

主流虚拟化软件 DRS 机制:更适合“稳态”业务场景

目前用户较为熟悉的 DRS 机制是 VMware 6.x 引入的实现方式(7.0 后有新机制)。该功能的初衷即通过动态改变虚拟机的放置,实现主机资源负载平衡。同时,它还可与其他虚拟化特性进行结合,衍生出丰富的应用场景:

  • 通过资源平衡提升虚拟机 SLA。
  • 业务低谷时,通过集中放置,减少主机使用,降低能源消耗。
  • 创建业务负载时,自动进行资源评估并完成初始化放置。
  • 自动完成负载均衡,最大化发挥主机性能。
  • 当主机进行维护时,自动化完成迁移,降低运维复杂度。
  • 修正亲和性约束。

市场中其他主流的虚拟化平台的 DRS 机制大都与 VMware 6.x 类似,以主机资源负载平衡为调度目标。该功能的运作机制大致可分为两个部分:

  • 评价体系:周期性收集当前集群中的主机/虚拟机的资源使用情况,根据 DRS 的评价体系判断集群是否处于资源争抢或者分布不平衡的状态。
  • 虚拟机迁移:DRS 算法基于集群当前状态进一步生成迁移建议,并根据设定的策略自动或手动触发一系列虚拟机迁移操作,最终实现集群均衡的目标。

由于 DRS 的评价体系负责定义集群是否属于均衡状态并执行迁移操作,它的实现是整个功能的重中之重。在 VMware 6.x 中,DRS 的评价体系主要关注集群状态,检查主机是否需要重新平衡。因为集群中经常会出现某台主机的资源消耗过多,而另一台主机消耗的资源较少的情况,DRS 每隔一段时间会对集群执行一次检查,如果 DRS 评价体系认为集群当前的状态可以改善,那么它将执行虚拟机热迁移(将负载高的主机上的部分虚拟机迁移到负载低的主机上)来实现集群重新平衡。

这种 DRS 评价体系的核心是平衡主机之间的 CPU、内存利用率,目前常见的虚拟化软件大都是采用类似的评价体系 。该评价体系对于传统“稳态”业务是有效的。在“稳态”业务场景下,通常单个虚拟机里面只会部署单个应用,它对 CPU、内存的占用是相对稳定的,甚至对应的虚拟机数量也是相对固定的;由于每个虚拟机的资源消耗相对固定,通过调整虚拟机的位置去重新平衡主机的负载是比较有效的。

但随着基于容器的”敏态“业务越来越流行,工作负载的形态已经发生了变化:虚拟机上可能运行着多个业务容器,容器的数量也是随时变化的,对资源的占用自然也有较大的波动,而且这是该类型应用的一个常态。如果还是基于上述这种传统的 DRS 评价体系,那么就有可能出现这样的情况:某个时刻虚拟机启动更多数量的容器后,触发 DRS 平衡被迁移到其他主机,然而过了一段时间又由于资源占用下降再次触发迁移——虚拟机可能会不断地执行一些无用的迁移,并对应用运行带来较大的干扰。面对应用负载的变化,传统的 DRS 评价体系未必适用,用户或许需要一种更适应容器环境的新型评价体系。

SMTX OS 5.1 DRS 功能:新型评价体系更灵活高效 

SmartX 最近发布了新版本超融合软件 SMTX OS 5.1,新增了对 DRS 功能的支持。SmartX 研发团队在 DRS 功能设计之初就意识到,基于主机资源利用率的 DRS 评价体系无法完全满足新型应用负载的需求。为此,研发团队设计了一种新型评价体系,综合评估虚拟机的响应能力与主机资源利用率这两个因素。


DRS 评价体系

SMTX OS 5.1 DRS 的运作逻辑是:

  • 周期性为虚拟机和主机分别进行评分。
  • 根据虚拟机状态进行评分,虚拟机因为资源争抢导致响应能力受损的程度越高,虚拟机的评分就越低,反之评分越高。
  • 根据主机的资源利用率进行评分,主机空闲度越高,评分越高;主机越繁忙则评分越低。
  • 评分最低的虚拟机会优先迁移到评分最高的主机(同时考虑迁移收益),依次类推直到主机之间达到平衡状态。

虚拟机评分

虚拟机的评分会针对虚拟机的 CPU、内存和存储 3 种资源的使用情况进行评分,其中 CPU 和内存的评分占比 80%,而存储评分占 20%。当前 DRS 版本暂不支持虚拟机网络相关评分。 

  • 虚拟机 CPU 评分:系统通过监控虚拟机 CPU 的 Steal Time,以相应的公式计算出虚拟机 CPU 分数。虚拟机 CPU 资源争抢越严重,虚拟机 CPU 分数就越低。
  • 虚拟机内存评分:当内存没有超分的时候,虚拟机内存评分应为 100%,因为内存资源没有争抢的现象发生。在内存超分的场景下,系统会监控虚拟机使用共享内存的程度,使用比例越高,证明资源争抢越严重,得分越低。
  • 虚拟机存储评分:SMTX OS 拥有 I/O 本地化功能,虚拟机读取数据时会优先访问本地宿主机的副本以缩短 I/O 延时,提升性能。系统会根据虚拟机所在节点拥有虚拟机的副本数据块比例进行评分,如虚拟机运行的宿主机拥有它的一个完整副本的所有数据块,那么它的存储评分就是 100%;如果只拥有部分副本,意味着虚拟机访问数据的时候需要跨网络读取,那么虚拟机的存储评分就会降低。

主机评分

主机评分与虚拟机评分类似,同样会考察 CPU、内存和存储三者的情况,进行综合评价。

  • 主机 CPU 评分:系统会收集主机的 CPU 空闲时间,空闲时间越多,得分也就越高。反之,主机 CPU 越繁忙得分越低。
  • 主机内存评分:系统收集主机可用内存占比,并根据主机是否存在内存超分进行评分,在没有超分的情况下,可用内存越多,评分越高。
  • 主机存储评分:由于 SMTX OS 内置的存储引擎可支持存储容量的自动均衡,因此主机存储评分并不是以主机本地存储容量使用率进行评价的。主机存储评分主要关注主机拥有虚拟机副本的数据块比例,拥有比例越高,得分越高。

收益评价

对于虚拟机的动态调整,单纯参考虚拟机和主机的评分仍然是不够的,因为不是所有情况都需要虚拟机迁移到分数更高的主机上,还需要考虑到迁移的成本——只有当迁移带来的收益大于成本,DRS 才建议或执行迁移动作。例如,某个虚拟机的内存比较大,迁移时需要传输比较多的数据,虽然迁移后会使得负载更为平衡(但差距不大),这个时候收益可能小于成本,那么 DRS 便不会建议虚拟机进行迁移。


DRS 建议与迁移

DRS 建议敏感度

SMTX OS 的 DRS 功能为用户提供了 3 种敏感度设置,便于用户根据业务情况选择合适的虚拟机迁移建议生成条件。

DRS机制01.png

DRS 自动化级别

同时,SMTX OS 的 DRS 功能支持手动迁移和自动迁移两种虚拟机迁移方式。

  • 手动迁移:DRS 只会给出迁移建议,但不会自动执行迁移。该模式采取保守的调度策略,可以让用户充分评估 DRS 考察范围之外的因素(如:某个业务十分重要,不希望在非预期的时间执行迁移),再决定是否执行迁移。与此同时,用户需要定期关注迁移建议,并决定执行建议或放弃建议。
  • 自动迁移:DRS 会根据生成的迁移建议自动执行虚拟机迁移操作,直到符合预设 DRS 阈值。该模式采取自动化调度策略,用户不需要人工接入迁移,后台会自动完成平衡,对于大规模虚拟机集群,可以大幅降低运维的压力。

DRS机制02.png


SMTX OS DRS 优势与价值

得益于新型的评价体系和运维友好的操作设置,SMTX OS DRS 功能可以充分满足云环境下的资源调度需求,帮助用户在优化集群性能的同时提升运维管理效率。相比主流传统 DRS 功能,SMTX OS DRS 能为用户带来以下具体收益:

  • 更丰富的应用场景:采用以虚拟机响应能力为核心的 DRS 评价体系,使得 DRS 适用范围更广。
  • 更智能的调度机制:评价体系更加全面,充分结合超融合架构特点,将存储性能因素纳入评价体系,同时引入收益评价,减少不必要的迁移动作,进一步优化决策、降低开销。
  • 更简单的运维管理:敏感度与自动化设置在降低运维难度的同时,给予了运维人员更大的使用灵活性。

除了对 DRS 机制的优化,SMTX OS 5.1 版本中还新增了 GPU 直通与 vGPU、USB 跨节点访问、大页内存分配等创新性虚拟化与存储能力。搭配新发布的容器管理与服务软件 SMTX Kubernetes 服务 1.0 和跨虚拟化与容器平台的软件定义负载均衡、可观测平台等产品组件,SmartX HCI 5.1 全面提升虚拟化、分布式存储、分布式防火墙、系统运维、灾备、迁移等基础设施能力,助力客户以一套架构平稳实现基础架构云化、国产化替代和容器化转型目标。欲深入了解 SmartX HCI 5.1 新增功能与产品组件,请阅读:

  • GPU 直通 & vGPU:超融合为 GPU 应用场景提供高性能支持
  • SmartX HCI 5.1 发布:是超融合,更是虚拟化与容器生产级统一架构
  • 照亮虚拟网络流量“盲区”:超融合网络流量可视化功能解读
  • SmartX 发布 SKS 1.0 ,一站式构建生产级 K8s 集群
  • 从物理机/云平台迁移至超融合?SMTX CloudMove 帮你实现

您还可扫描下方二维码,或点击链接获取《SmartX 超融合技术原理与特性解析合集(含 VMware 对比详情)》,了解 SMTX OS 更多技术特性和测试数据。

这篇关于动态资源平衡:主流虚拟化 DRS 机制分析与 SmartX 超融合的实现优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/206824

相关文章

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统