Openstack负载平衡(第2部分)

上一篇文章中,我们讨论了如何尝试使用Watcher并提出了测试报告。 我们会定期进行此类测试,以平衡大型公司或运营商云的功能以及其他关键功能。

要解决的问题的高度复杂性可能需要几篇文章来描述我们的项目。 今天,我们发布了有关平衡云中虚拟机的系列文章的第二篇。

一些术语


VmWare引入了DRS(分布式资源调度程序)实用程序,以平衡其虚拟化环境的负载。

searchvmware.techtarget.com/definition/VMware-DRS所写
“ VMware DRS(分布式资源调度程序)是一种实用程序,可在虚拟环境中平衡计算负载与可用资源。 该实用程序是称为VMware Infrastructure的虚拟化程序包的一部分。

用户使用VMware DRS定义在虚拟机(VM)之间分配物理资源的规则。 可以将该实用程序配置为手动或自动控制。 可以轻松地添加,删除或重组VMware资源池。 如果需要,可以在不同业务部门之间隔离资源池。 如果一个或多个虚拟机的工作负荷发生巨大变化,则VMware DRS会在物理服务器之间重新分配虚拟机。 如果减少了总体工作量,则某些物理服务器可能会暂时关闭并且工作量会得到合并。”

为什么需要平衡?



我们认为,DRS是云不可或缺的功能,尽管这并不意味着DRS应该随时随地使用。 根据云的用途和需求,对DRS和平衡方法可能会有不同的要求。 也许在某些情况下根本不需要平衡。 甚至有害。

为了更好地了解DRS客户的需求和需求,并考虑其目标。 云可以分为公共云和私有云。 这是这些云与客户目标之间的主要区别。

私有云/大型企业客户公有云/中小企业,人
运营商的主要标准和目标提供可靠的服务或产品在竞争激烈的市场中降低服务成本
服务要求系统各个层面和所有要素的可靠性

保证性能

将虚拟机划分为几类

信息和物理数据安全

SLA和24/7支持
最大程度的服务便利

相对简单的服务

客户对数据负责

不需要VM优先级

标准服务级别的信息安全,客户责任

可能有故障

没有SLA,质量无法保证

邮件支持

备份是可选的
客户特征应用范围非常广泛。

公司中继承的旧版应用程序。

每个客户端的复杂自定义体系结构。

相似性规则。

软件无需停止在7x24模式下即可工作。

即时备份工具。

可预测的客户循环负载。
典型应用-网络平衡,Apache,WEB,VPN,SQL

可以暂时停止应用程序

允许在云中任意分发VM

客户端备份

统计上的平均负载可为大量客户预测。
对建筑的启示土工聚类

集中式或分布式存储

保留的IBS
计算节点上的本地数据存储
平衡目标负载均衡

最大的应用响应速度

最小平衡延迟时间

仅在明确需要时进行平衡

得出预防性维护设备的结论
降低服务成本和运营商成本

在低负载的情况下禁用一些资源

节约能源

降低员工成本


我们为自己得出以下结论:


对于提供给大型企业客户的私有云 ,可以在以下限制条件下应用DRS:

  • 信息安全和计费相似性规则,以实现平衡;
  • 发生事故时是否有足够的资源;
  • 虚拟机数据驻留在集中式或分布式存储系统上;
  • 管理,备份和平衡程序的时间多样性;
  • 仅在客户端主机的总数之内进行平衡;
  • 仅在严重失衡之间进行平衡,才能最有效,最安全地迁移VM(毕竟迁移可能会失败);
  • 平衡相对“安静”的虚拟机(“嘈杂”虚拟机的迁移可能需要很长时间);
  • 考虑“成本”的平衡-存储系统和网络上的负载(具有针对大型客户的自定义体系结构);
  • 平衡考虑到每个VM的个人行为;
  • 下班后(晚上,周末,节假日)保持平衡是可取的。

对于为小型客户提供服务的公共云 ,可以使用具有高级功能的DRS进行更多使用:

  • 缺乏信息安全限制和相似性规则;
  • 云内的平衡;
  • 在任何合理时间保持平衡;
  • 平衡任何虚拟机;
  • 平衡“嘈杂的”虚拟机(以免干扰其余虚拟机);
  • 虚拟机数据通常位于本地驱动器上;
  • 考虑平均存储和网络性能(云架构是统一的);
  • 根据通用规则和数据中心行为的可用统计信息进行平衡。

问题复杂度


平衡的困难在于DRS必须在许多不确定因素下工作:

  • 每个客户信息系统的用户行为;
  • 信息系统服务器运行的算法;
  • DBMS服务器行为
  • 加载计算资源,存储,网络;
  • 彼此之间在争夺云资源方面的服务器交互。

随着时间的流逝,大量虚拟应用程序服务器和数据库在云资源上的负载不断增加,其后果可能会发生,并且在不可预测的时间之后会产生不可预测的影响。 即使是用于控制相对简单的过程(例如,用于控制发动机,家用热水系统),自动控制系统也需要使用复杂的比例积分微分反馈算法。



我们的任务要复杂许多数量级,并且存在即使没有发生用户外部影响的情况,系统也无法在合理的时间内将负载平衡到既定值的风险。



我们发展的历史


为了解决这个问题,我们决定不从头开始,而是以现有经验为基础,并开始与该领域的专家进行互动。 幸运的是,我们对问题的理解是完全吻合的。

第一阶段


我们使用了基于神经网络技术的系统,并尝试在此基础上优化我们的资源。

这个阶段的兴趣是测试新技术,其重要性是应用非标准方法来解决问题,而在其他条件相同的情况下,标准方法实际上已经用尽了。

我们启动了系统,然后我们真正达到了平衡。 云的规模无法让我们获得开发人员宣布的乐观结果,但是很明显,平衡是可行的。

而且,我们有相当严重的局限性:

  • 要训​​练神经网络,虚拟机需要运行数周或数月而无需进行重大更改。
  • 该算法被设计为基于对早期“历史”数据的分析进行优化。
  • 为了训练神经网络,需要足够大量的数据和计算资源。
  • 优化和平衡很少能完成-每隔几个小时一次,这显然是不够的。

第二阶段


由于我们对事务状态不满意,因此我们决定修改系统,以回答主要问题 -我们是为谁做的?

首先是企业客户。 因此,我们需要一个高效运行的系统,并具有那些只能简化实施的公司限制。

第二个问题是“运营”一词的含义是什么? 经过短暂的辩论,我们认为可以在5-10分钟的响应时间基础上进行构建,以使短期跳跃不会使系统引起共振。

第三个问题是要选择平衡服务器数量的多少?
这个问题是由自己决定的。 通常,客户端不会使服务器聚合变得很大,这与本文中将聚合限制为30至40台服务器的建议是一致的。

另外,通过分割服务器池,我们简化了平衡算法的任务。

第四个问题是,神经网络在长期的学习过程和难得的平衡中适合我们多少? 我们决定放弃它,转而使用更简单的运算算法,以便在几秒钟内获得结果。



可以找到使用这种算法的系统描述及其缺点

我们实施并启动了该系统,并获得了令人鼓舞的结果-现在,它可以定期分析云负载并就移动虚拟机提出建议,这些建议在很大程度上是正确的。 即使到现在,我们仍然可以通过提高现有虚拟机的质量来实现为新虚拟机释放10-15%的资源。



当RAM或CPU检测到不平衡时,系统会向Tionics调度程序发出命令以执行所需虚拟机的实时迁移。 从监视系统可以看出,虚拟机从一个(上)主机移至另一(下)主机,并释放了上层主机上的内存(以黄色圆圈突出显示),分别占用了下层主机上的内存(以白色圆圈突出显示)。

现在,我们试图更准确地评估当前算法的有效性,并试图找出其中可能存在的错误。

第三阶段


您似乎可以对此保持冷静,等待有效的证明并结束本主题。
但是以下明显的优化机会正在推动我们迈入新的阶段。

  1. 例如, 此处此处的统计数据表明,两处理器和四处理器系统的性能明显低于单处理器的系统。 这意味着与单处理器处理器相比,所有用户从多处理器系统中购买的CPU,RAM,SSD,LAN,FC所获得的收益要低得多。
  2. 资源规划人员自己可以处理严重的错误, 这是有关此主题的文章之一
  3. 英特尔和AMD提供的用于监视RAM和缓存的技术使您能够研究虚拟机的行为,并将其放置为使嘈杂的邻居不会干扰安静的虚拟机。
  4. 扩展参数集(网络,存储,虚拟机优先级,迁移成本,迁移准备情况)。

合计


我们改进平衡算法的工作结果是一个明确的结论,即由于采用了现代算法,可以实现数据中心资源(25-30%)的显着优化并提高客户服务质量。

当然,基于神经网络的算法是一个有趣的解决方案,需要进一步开发,并且由于存在限制,因此不适用于解决私有云的体积特征问题。 同时,在较大规模的公共云中,该算法显示了良好的结果。

在以下文章中,我们将告诉您有关处理器,调度程序和高级平衡功能的更多信息。

Source: https://habr.com/ru/post/zh-CN465715/


All Articles