AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 398666
Accepted
John
John
Asked: 2012-06-15 01:59:57 +0800 CST2012-06-15 01:59:57 +0800 CST 2012-06-15 01:59:57 +0800 CST

如何控制 vmware HA 中的准入策略?

  • 772

简单的问题,我有 3 台主机运行 4.1 Essentials Plus 和 vmware HA。我尝试创建多个虚拟机,以填充每台服务器 90% 的内存容量。我知道 vmware 在虚拟机中有非常复杂的内存管理,但我不明白 vCenter 如何允许我什至在超过临界内存级别的虚拟机上启动,而主机故障转移仍然可以处理。

是不是因为虚拟机没有使用内存,所以还是认为是空闲的,所以虚拟机才能开机?但是,如果所有 VM 在主机故障前都真正使用 RAM,将会发生什么情况——它们在故障后无法迁移到其他主机。

XenServer 中的默认行为是,它会自动计算群集内可以使用的最大内存级别,以便主机故障仍然受到保护。Vmware 做同样的事情?

准入策略已启用。已启用 VMware 高可用性。

vmware-vcenter vmware-esxi
  • 1 1 个回答
  • 1165 Views

1 个回答

  • Voted
  1. Best Answer
    Shane Madden
    2012-06-17T14:49:09+08:002012-06-17T14:49:09+08:00

    HA 的准入控制使用一种称为“插槽”的东西来计算在配置的主机数量发生故障时是否有可用空间容纳所有 VM。插槽计算允许您继续启动 VM,即使集群中的内存资源开始看起来很糟糕。


    准入控制和插槽

    “插槽”机制旨在提供一种通用方法,将集群分解为虚拟机大小的估计块,然后确保在配置的主机数量丢失的情况下,每个运行的虚拟机仍有可用插槽。

    计算插槽大小

    插槽大小计算中发生的第一件事。它正在寻找的是reserved resources,或者更具体地说,就保留资源而言,是集群中最大的 VM。它这样做的原因是确保集群中的每个资源槽都能够提供足够的资源来满足最大 VM 上的资源预留,这样在发生HA 故障转移。

    对于 CPU,将找到 VM 上的最高预留并将其用作插槽大小。如果没有预留,则使用集群das.vmCpuMinMHz设置中配置的最小值;4.1 中默认为 256Mhz,但在 5.0 中降至 32Mhz。

    对于内存,使用内存预留加上VM 的内存开销 - 因此,如果没有预留,您的插槽大小将是最高 VM 的内存开销数或集群das.vmMemoryMinMB设置之间的较大数字,如果已配置(文档目前说默认值为 256MB;那不是真的,在 4.1+ 中默认值为 0)。

    这些数字结合在一起可以为您提供集群的插槽大小。

    假设您没有保留,您的插槽大小可能是最小值 - CPU 为 256Mhz,内存插槽大小将是开销最大的 VM 的内存开销大小。

    在频谱的另一端,如果您有一个具有大量内存预留但没有 CPU 预留的 VM,以及另一个具有大量内存预留的 VM,则您的插槽大小将根据每个预留的大数量来计算 - 每个两个资源中的插槽都将非常大,这将非常有限——在您达到相关的资源使用水平之前很久,您将被准入控制阻止启动虚拟机。

    为了解决这个特定问题,您可以手动为每个资源设置插槽大小的上限:

    • das.slotCpuInMHz设置插槽计算的 CPU 部分的最大大小
    • das.slotMemInMB设置内存的最大值

    如果您使用这些,则这些数字上的 VM 将被分配多个插槽,以便在故障转移后它们仍然可以保证保留资源价值。

    计数插槽和强制限制

    确定插槽大小后,将计算集群中每个主机上的插槽数。

    较低的资源决定了它们的限制 - 因此,如果主机在 CPU 资源方面可以容纳 100 倍的 CPU 插槽大小,但只能容纳 30 倍的内存限制,则主机有 30 个插槽。

    该数字是为集群中的每个主机添加的。那是配置的准入控制限制开始的时候。如果您将集群配置为容忍 1 个主机故障,那么它会丢弃计算中插槽最多的主机;如果设置了 2 个主机故障,则丢弃插槽数最高的两个主机。它假定您将失去最大的主机。

    完成后,集群中剩余主机上的插槽数将相加 - 这就是在阻止您启动 VM 之前允许运行 VM 的插槽数。

    集群摘要选项卡中的“高级运行时信息”链接将告诉您插槽的设置。

    运行时信息

    (忽略 vCPU 计数;它不再用于插槽计算)


    那样有用吗?

    我知道你在想什么。

    “等一下,我的 VM 有几个 RAM apeice!它们到底怎么能在像 256MB 这样的任意小尺寸的‘插槽’中运行? ”

    它们应该以资源预留指定的最低级别运行;如果他们没有保留,那么他们不一定会运行良好。

    如果在资源使用率已经相当高的情况下出现 HA 故障,那么当额外的 VM 被添加到负载上时,您可能会遇到严重的资源争用。

    如果 CPU 资源处于争用状态,那仅意味着所有正在运行的 VM 的可用 CPU 时间有效减少。在某些情况下,这可能会产生相当严重的影响——当存在 CPU 时间争用时,在具有多个 vCPU 的机器上使用的虚拟对称多处理可能会真正开始受到影响。

    如果内存是有争议的资源……好吧,那就是它变得有趣的时候。

    ESX(i) 有多种技术来处理内存争用。这里有一篇关于它们的深入文档,但总而言之,管理程序采用以下方法:

    • 透明页面共享
      • 在来宾 VM 中查找重复的内存页面。如果有多个运行相同的操作系统,则很有可能存在重复。多余的副本被丢弃,所有读取内存的尝试都指向一个副本。
      • 这会一直运行,按照Mem.ShareScanTime设置确定的时间表 - 默认为每小时一次。
    • 热气球
      • 在来宾 VM 中作为 VMware Tools 的一部分运行的代理会从虚拟机管理程序收到通知,告知它需要一些内存。在 VM 中运行的代理程序开始尝试通过向来宾操作系统请求内存来从来宾系统取回内存,从而使代理程序使用的空内存“气球”膨胀。这迫使客户操作系统采取措施释放内存,包括从内存中清除文件系统缓存或将内存页面交换到它自己的交换空间。一旦内存页面被成功抓取到气球中,它就会通知主机可以回收内存。
      • 这是主机在遇到内存争用时将采取的第一个操作。
    • 内存压缩
      • VM 内存页面被压缩,但仍存储在主内存中。这意味着访问该内存页面仍然会受到惩罚,但它仍然比从交换中拉出更快。
      • 这用作交换前的最后一个“好”选项。
    • 管理程序交换
      • 您可能已经注意到,启动 VM 时,会在数据存储上创建一个与 VM 内存大小相等的交换文件。这种保留有效地使得,如果绝对必要,整个 VM 的主内存可能驻留在磁盘上。如果发生这种情况,性能显然会很糟糕——但这个选项是最后的选择。但是,整个内存页面都被移动到数据存储中的交换文件中;访问时,需要从磁盘中检索它们。

    它们的最小插槽大小与 VM 的内存开销有关,这绝非偶然。这是因为开销数实际上是运行 VM 绝对必需的唯一内存 - 尽管如果 VM 的整个内存最终都处于交换状态,“运行”这个词可能太强了。

    因此,准入控制并不是要确保您的所有 VM 在 HA 故障转移后都运行良好,而是要确保您的所有 VM 都可以运行。


    所以我该怎么做?

    准入控制会尝试在 HA 故障转移时实施最低级别的服务。但是,这只有在您实际定义了最低服务水平时才会发生;许多环境不需要或不需要保留。

    如果您要使用准入控制,我建议调查您的插槽大小并将它们推向对您有意义的值;如果您不需要它们只是为了影响准入控制,请不要开始创建保留。

    如果由于集群中缺少任何预留而将您的插槽大小设置为或接近最小值,则将其调整为更适合您环境的“正常”VM 大小。在集群的高级设置中设置如下内容:

    das.vmCpuMinMHz = 500
    das.vmMemoryMinMB = 2048
    

    如果由于少量高预留 VM 而将插槽大小设置得太高,则将其适当下调。

    das.slotCpuInMHz = 1000
    das.slotCpuInMHz = 4096
    

    确保准入控制为插槽大小提供的值对您的环境有意义 - 您绝对不希望从交换空间运行一半的 VM,因为准入控制认为您不关心它们的服务级别!

    • 6

相关问题

  • 调度 VMWare 转换器

  • 将 VMDK 转换为 VHD 后启动虚拟机时出现问题

  • VMware 基础架构与 Tomcat 冲突

  • 在实验室管理器中为测试环境、Windows 机器实现可靠的还原

  • 虚拟机上的 DRBD / 心跳

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve