重要
针对具有会话主机配置的池化主机池的动态自动缩放目前处于预览阶段。 有关适用于 Beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Azure 预览版补充使用条款 。
自动缩放允许你根据计划对主机池中的会话主机虚拟机 (VM) 进行扩容或缩容,以优化部署成本。
注释
- 不能在同一主机池上使用自动缩放和使用 Azure 自动化来改变会话主机规模。 你必须使用其中一个。
- 电源管理自动缩放功能在可创建主机池的相同区域中可用。
为获得最佳效果,我们建议对您使用 Azure 虚拟桌面 Azure 资源管理器 (ARM) 模板或 Microsoft 提供的第一方工具部署的 VM 使用自动缩放。
缩放计划的工作方式
缩放计划定义了主机池中会话主机的缩放时间安排。 可以将一个缩放计划分配到多个主机池。 只能为每个主机池分配一个缩放计划。 创建缩放计划时,可以从两种不同的缩放方法中进行选择:
电源管理自动缩放:打开和关闭会话主机以调整主机池中的可用容量。 如果要将缩放计划应用于采用标准管理的主机池,则可以使用此选项。
动态自动缩放(预览):打开和关闭会话主机并创建和删除会话主机,以调整到主机池中的可用容量。 动态自动缩放只能用于具有会话主机配置的共用主机池。
在创建计划之前,请记住以下事项:
可向一个或多个主机池类型相同的主机池分配一个缩放计划。 缩放计划的日程安排将应用于所有已分配的主机池。
每个主机池只能关联一个缩放计划。 如果向多个主机池分配单个缩放计划,则无法向另一个缩放计划分配这些主机池。
休眠适用于个人主机池。 有关详细信息,请查看虚拟机中的休眠。
缩放计划只能在其已配置的时区中操作。
一个扩缩计划可以包含一个或多个计划任务。 例如,工作日与周末的不同日程安排。
在制定计划安排之前,请务必了解使用模式。 将需要根据一天中的以下时间进行日程安排:
- 上升时段:一天开始的时候,使用量开始增加。
- 高峰时段:预计一天中使用量最高的时间。
- 下降阶段:当使用量逐渐减少时。 这通常是在关闭 VM 时,以节省成本。
- 非高峰时间:预计一天中使用量最低的时间。
该缩放计划将在您启用后立即生效。
此外,请牢记以下限制:
不要将自动缩放与 Microsoft 或第三方提供的其他缩放工具一起使用。 确保对要应用缩放计划的主机池禁用这些功能。
对于合并主机池,自动缩放会覆盖排空模式,因此在更新主机池中的虚拟机时,请务必使用排除标签。
对于共用主机池,自动缩放将忽略主机池设置中的现有负载均衡算法,并转而根据日程安排配置应用负载均衡。
共用主机池的自动缩放方案示例
本部分提供了四种方案,它们展示了共用主机池的自动缩放的不同部分的工作方式。 在每个示例中,有一些表格会显示主机池的设置和动画视觉演示。
注释
若要详细了解各个参数术语的含义,请参阅自动缩放术语表。
场景 1:自动缩放何时启动虚拟机?
在此场景中,我们将演示当已用主机池容量超出容量阈值时,自动缩放可以在缩放计划安排的任何阶段启用会话主机虚拟机 (VM)。
例如,我们来看看下表中描述的主机池设置:
| 参数 | 价值 |
|---|---|
| 阶段 | 提升 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 百分之三十 |
| 主机的最小百分比 | 百分之三十 |
| 可用会话主机数 | 2 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 10 |
| 用户会话 | 0 |
| 使用的主机池容量 | 0% |
在此阶段开始时,自动缩放已开启两台会话主机,以满足主机最低百分比要求。 尽管 6 的 30% 不是一个整数,但自动缩放会舍入到最接近的整数。 如果有两个可用会话主机,每个主机的会话数上限为五个会话,这表示此主机池的可用主机池容量为 10。 当前没有任何用户会话,已用主机池容量为 0%。
当一天开始时,假设有三个用户登录并启动用户会话。 由于负载均衡算法是广度优先,他们的用户会话被平均分配到两个可用的会话主机上。 可用主机池的容量仍为 10,但有了这三个新用户会话,已用主机池容量现在为 30%。 但是,自动缩放只有在已使用的主机池容量大于容量阈值时才会启动虚拟机 (VM)。 在本例中,容量阈值为 30%,因此自动缩放还不会启用任何 VM。
此时,主机池的参数如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 提升 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 百分之三十 |
| 主机的最小百分比 | 百分之三十 |
| 可用会话主机数 | 2 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 10 |
| 用户会话 | 3 |
| 使用的主机池容量 | 百分之三十 |
当另一个用户登录并启动会话时,现在总共有四个用户会话分布在两个会话主机之间。 已用主机池容量现在是 40%,大于容量阈值。 因此,自动缩放会启用另一个会话主机,使已用主机池容量小于或等于容量阈值 (30%)。
综上所述,当已用主机池容量超出容量阈值时,参数如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 提升 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 百分之三十 |
| 主机的最小百分比 | 百分之三十 |
| 可用会话主机数 | 2 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 10 |
| 用户会话 | 4 |
| 使用的主机池容量 | 40% |
下面是自动缩放功能启用了另一个会话主机后的参数:
| 参数 | 价值 |
|---|---|
| 阶段 | 提升 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 百分之三十 |
| 主机的最小百分比 | 百分之三十 |
| 可用会话主机数 | 3 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 15 |
| 用户会话 | 4 |
| 使用的主机池容量 | 27% |
启用另一个会话主机意味着主机池中现在有三个可用的会话主机。 会话数上限仍为 5,可用的主机池容量已增加到 15。 由于可用主机池容量已增加,已用主机池容量已降至 27%,这低于 30% 的容量阈值。
当又有一个用户登录时,现在有五个用户会话分布在三个可用的会话主机上。 已用主机池容量现在是 33%,这超过了 30% 的容量阈值。 超出容量阈值将激活自动缩放以启用另一个会话主机。
由于我们的示例处于增加阶段,新用户可能会不断登录。 随着更多的用户登录,这个模式变得更加清晰:
| 用户会话总数 | 可用会话主机数 | 可用的主机池容量 | 容量阈值 | 使用的主机池容量 | 自动缩放是否会启用另一个会话主机? |
|---|---|---|---|---|---|
| 5 | 3 | 15 | 百分之三十 | 33% | 是的 |
| 5 | 4 | 20 | 百分之三十 | 25% | 否 |
| 6 | 4 | 20 | 百分之三十 | 百分之三十 | 否 |
| 7 | 4 | 20 | 百分之三十 | 35% | 是的 |
| 7 | 5 | 二十五 | 百分之三十 | 28% | 否 |
如表中所示,只有在已用主机池容量超过容量阈值时,自动缩放才会启用新的会话主机。 如果已用主机池容量等于或低于容量阈值,自动缩放就不会启用新的会话主机。
下面的动画直观地概括了我们刚刚在场景 1 中经历的情形。
场景 2:自动缩放功能何时会关闭虚拟机?
在此场景中,我们将说明在以下所有条件都满足时,自动缩放会关闭会话主机:
- 已用主机池容量低于容量阈值。
- 自动缩放可以在不超过容量阈值的情况下关闭会话主机。
- 自动缩放只会关闭没有任何用户会话的会话主机(除非缩放计划处于缩减阶段,并且已启用强制注销设置)。
- 为了避免产生不良用户体验,共用自动缩放不会在扩容阶段关闭会话主机。
在此场景中,主机池的初始状态如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 峰值 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 百分之三十 |
| 主机的最小百分比 | 百分之三十 |
| 可用会话主机数 | 5 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 二十五 |
| 用户会话 | 7 |
| 使用的主机池容量 | 28% |
由于我们正处于高峰期,用户数预计会保持相对稳定。 但是,为了使已用资源量保持稳定,同时保持高效,自动缩放将根据需要启用和关闭会话主机。
假设在高峰时段有七个用户登录。 如果用户会话总数为 7,将使已用主机池容量达到 28%。 由于只有在已用主机池容量超过容量阈值的情况下,自动缩放才能关闭会话主机,因此自动缩放暂时不会关闭任何会话主机。
如果七个用户中有两个在午休时退出登录,这样就只剩下分布在五台会话主机上的五个用户会话。 会话数上限仍为 5,可用主机池容量为 25。 只有五个用户意味着已用主机池容量现在为 20%。 现在,自动缩放必须检查是否可以在不使已使用的主机池容量超过容量阈值的情况下关闭某个会话主机。
如果自动缩放关闭了一个会话主机,可用主机池容量将为 20。 如果有五个用户,已用主机池容量为 25%。 由于 25% 小于 30% 的容量阈值,自动缩放将选择一台没有用户会话的会话主机,将其置于排空模式,然后将其关机。
自动缩放关闭其中一个没有用户会话的会话主机后,剩下四个可用会话主机。 主机池的会话数上限仍为 5,可用主机池容量为 20。 现在有五个用户会话,已用主机池容量为 25%,仍低于容量阈值。
但是,如果另一个用户退出登录并去吃午饭,此时有四个用户会话分布在主机池中的四台会话主机上。 会话数上限仍为 5,因此可用主机池容量为 20,已用主机池容量为 20%。 关闭另一个会话主机将剩下三个会话主机,可用主机池容量为 15,这会使已用主机池容量跃升至 27% 左右。 尽管 27% 低于容量阈值,但没有用户会话数为零的会话主机。
下面的动画直观地概括了我们刚刚在场景 2 中经历的情形。
场景 3:自动缩放如何在缩减阶段整合用户会话?
只有在缩放计划时间表的缩减阶段启用了 强制注销 设置时,自动缩放才会强制将用户注销。 在缩放计划时间表的任何其他阶段,强制注销设置都不会将用户注销。
了解合并逻辑
在缩减阶段,无论你是启用了“强制注销用户”,还是配置了“在 VM 没有活动会话时停止 VM”,自动缩放都会使用相同的 会话整合逻辑。在这两种情况下:
- 自动缩放假设所有已断开连接的用户都可能立即重新连接。
- 它计算所需的最小主机数: 必需主机 = (活动会话总数 + 断开连接) / (最大会话限制 x 容量阈值 %) 。
- 它使足够的会话主机保持运行状态,以适应所有可能的重新连接,而不会超过容量阈值。
- 它会解除分配多余的主机。
这两个设置之间的差异:
- “在没有活动会话时停止 VM”:自动缩放会等待用户主动退出登录,然后整合并解除分配无会话的主机。
- “强制注销用户”:自动缩放会在等待时间到期后主动注销用户,然后解除分配主机。
此方案演示强制注销,但合并计算适用于这两种配置。
示例方案
例如,我们来看看具有以下参数的主机池:
| 参数 | 价值 |
|---|---|
| 阶段 | 缩减 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 深度优先 |
| 容量阈值 | 75% |
| 主机最小百分比 | 10% |
| 可用会话主机数 | 4 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 20 |
| 用户会话 | 4 |
| 使用的主机池容量 | 20% |
在缩减阶段,主机池管理员已将容量阈值设置为 75%,将主机的最小百分比设置为 10%。 如果此阶段的容量阈值较高且主机最小百分比较低,就减少了在工作日结束时启用新的会话主机的需要。
在此场景中,假设此主机池中的四个可用会话主机上目前有四个用户。 可用主机池容量为 20,这意味着已用主机池容量为 20%。 基于此信息,自动缩放检测到它可以在没有超出容量阈值 75% 的情况下关闭两个会话主机。 但是,由于主机池中的所有会话主机上都有用户会话,如果要关闭两个会话主机,自动缩放需要强制用户退出登录。
当你启用强制注销设置后,自动缩放将选择用户会话数最少的会话主机,然后将这些会话主机置于排出模式。 然后,自动缩放会向所选会话主机中的用户发送通知,告知他们将在一定时间后被强制从会话中退出登录。 一旦过了这个时间,如果用户还没有结束他们的会话,自动缩放将强制结束他们的会话。 在此场景中,由于主机池中每个会话主机上的用户会话数都相同,自动缩放将随机选择两个会话主机,强制其所有用户退出登录,然后关闭会话主机。
自动缩放关闭两个会话主机后,可用主机池容量现在为 10。 现在,只剩下两个用户会话,已用主机池容量为 20%,如下表所示。
| 参数 | 价值 |
|---|---|
| 阶段 | 逐步缩减 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 深度优先 |
| 容量阈值 | 75% |
| 主机的最小百分比 | 10% |
| 可用会话主机数 | 2 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 10 |
| 用户会话 | 2 |
| 使用的主机池容量 | 20% |
现在,假设两个被强制退出登录的用户想要继续处理工作并重新登录。 可用主机池容量仍为 10,已用主机池容量现在是 40%,这低于容量阈值 75%。 然而,自动缩放无法关闭更多会话主机,因为那样会只剩下一个可用会话主机,并且可用主机池容量为 5。 如果有四个用户,这会使已用主机池容量达到 80%,高于容量阈值。
现在参数如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 逐步缩减 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 深度优先 |
| 容量阈值 | 75% |
| 主机的最低百分比 | 10% |
| 可用会话主机数 | 2 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 10 |
| 用户会话 | 4 |
| 使用的主机池容量 | 40% |
如果此时又有一个用户退出登录,那就只剩下三个用户会话,分布在两个可用的会话主机上。 换句话说,主机池现在如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 逐步缩减 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 深度优先 |
| 容量阈值 | 75% |
| 主机的最低百分比 | 10% |
| 可用会话主机数 | 2 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 10 |
| 用户会话 | 3 |
| 使用的主机池容量 | 百分之三十 |
由于会话数上限仍为 5,可用主机池容量为 10,已用主机池容量现在为 30%。 自动缩放现在可以在不超出容量阈值的情况下关闭一台会话主机。
自动缩放通过选择用户会话数量最少的会话主机来将其关闭。 然后,自动缩放功能会将该会话主机置于清空模式,向用户发送通知,告知会话主机将被关闭,然后在设定的一段时间后,强制将任何剩余用户注销,并将其关闭。
关闭会话主机后,主机池中现在还剩下一台可用会话主机,会话数上限为 5,从而导致可用主机池容量为 5。
由于自动扩缩容在关闭所选定的会话主机时强制一名用户注销,因此现在只剩下两个用户会话,主机池已用容量为 40%。
回顾一下,主机池现在的样子如下:
| 参数 | 价值 |
|---|---|
| 阶段 | 逐步缩减 |
| 会话主机总数 | 6 |
| 会话数上限 | 5 |
| 负载均衡算法 | 深度优先 |
| 容量阈值 | 75% |
| 主机的最低百分比 | 10% |
| 可用的主机池容量 | 5 |
| 用户会话 | 2 |
| 可用会话主机数 | 1 |
| 使用的主机池容量 | 40% |
然后,假设被强制退出登录的用户又重新登录,主机池会如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 逐步缩减 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 深度优先 |
| 容量阈值 | 75% |
| 主机的最低百分比 | 10% |
| 可用会话主机数 | 1 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 5 |
| 用户会话 | 3 |
| 使用的主机池容量 | 60% |
现在主机池中有三个用户会话。 但是,主机池容量仍为 5,这意味着已用主机池容量为 60%,低于容量阈值。 由于关闭仅剩的会话主机会使主机池的可用容量降为零,低于主机数 10% 的最低比例,因此自动缩放将确保在缩减阶段始终至少有一个可用的会话主机。
下面的动画直观地概括了我们刚刚在场景 3 中经历的情形。
场景 4:排除标记是如何工作的?
当虚拟机的标记名称与缩放计划的排除标记匹配时,自动缩放不会启用、关闭或更改其排出模式设置。 排除标记适用于缩放计划安排的所有阶段。
下面是我们开始时使用的示例主机池:
| 参数 | 价值 |
|---|---|
| 阶段 | 非高峰时段 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 75% |
| 主机的最小百分比 | 10% |
| 可用会话主机数 | 1 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 5 |
| 用户会话 | 3 |
| 使用的主机池容量 | 60% |
在此示例场景中,主机池管理员将缩放计划排除标记应用到六个会话主机中的五个。 当新用户登录时,用户会话总数将提高到四个。 只有一个可用的会话主机,主机池的会话数上限仍为 5,因此可用主机池容量为 5。 已用主机池容量为 80%。 但是,即使已用主机池容量大于容量阈值,自动缩放也不会启用任何其他会话主机,因为除了当前正在运行的那一个会话主机,其他所有会话主机都已附上了排除标记。
现在的主机池如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 非高峰时段 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 75% |
| 主机的最小百分比 | 10% |
| 可用会话主机数 | 1 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 5 |
| 用户会话 | 4 |
| 使用的主机池容量 | 80% |
接下来,假设所有四个用户均已退出登录,可用会话主机上没有任何用户会话。 由于主机池中没有用户会话,因此使用的主机池容量为 0%。 自动缩放将使这个单一的会话主机保持启用状态,即使它没有任何用户,因为在非高峰阶段,自动缩放的主机最小百分比设置决定了它在此阶段需要至少保留一个可用的会话主机。
总结一下,主机池现在如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 非高峰时段 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 75% |
| 主机的最小百分比 | 10% |
| 可用会话主机数 | 1 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 5 |
| 用户会话 | 0 |
| 使用的主机池容量 | 0% |
如果管理员将排除标记名称应用到最后一个未标记的会话主机虚拟机并将其关闭,这意味着即使有其他用户尝试登录,自动缩放也无法启用 VM 来容纳他们的用户会话。 这些用户将看到“无可用资源”错误。
但是,无法重新启动 VM 意味着主机池将无法满足最低主机占比要求。 为了解决所导致的任何潜在问题,管理员删除了两个 VM 上的排除标记。 自动缩放只会启用其中一个 VM,因为它只需一个 VM 就能满足 10% 的最低要求。
这样,最终主机池将如下所示:
| 参数 | 价值 |
|---|---|
| 阶段 | 非高峰时段 |
| 会话主机总数 | 6 |
| 负载均衡算法 | 广度优先 |
| 容量阈值 | 75% |
| 主机的最小百分比 | 19% |
| 可用会话主机数 | 1 |
| 会话数上限 | 5 |
| 可用的主机池容量 | 5 |
| 用户会话 | 0 |
| 使用的主机池容量 | 0% |
下面的动画直观地概括了我们刚刚在场景 4 中经历的情形。
后续步骤
- 若要了解如何为自动缩放创建缩放计划,请参阅为 Azure 虚拟桌面主机池创建自动缩放设置。
- 若要查看与自动缩放关联的术语,请参阅自动缩放术语表。
- 有关自动缩放的常见问题解答,请参阅自动缩放常见问题解答。