你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 虚拟桌面中的自动缩放计划和示例方案
使用自动缩放可以按照日程安排纵向扩展或纵向缩减主机池中的会话主机虚拟机 (VM),以优化部署成本。
注意
- Azure 虚拟桌面(经典)不支持自动缩放。
- 不能在同一主机池上使用自动缩放和使用 Azure 自动化来改变会话主机规模。 只能使用二者之一。
- Azure 和 Azure 政府在你可以创建主机池的那些区域中提供自动缩放功能。
- 对 Azure Stack HCI 和 Azure 虚拟桌面的自动缩放支持现为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
为获得最佳结果,建议将自动缩放与使用 Azure 虚拟桌面 Azure 资源管理器模板 (ARM) 或 Microsoft 中的第一方工具部署的 VM 一起使用。
缩放计划的工作方式
在创建计划之前,请记住以下事项:
可向一个或多个主机池类型相同的主机池分配一个缩放计划。 缩放计划的日程安排将应用于所有已分配的主机池。
每个主机池只能关联一个缩放计划。 如果向多个主机池分配单个缩放计划,则无法向另一个缩放计划分配这些主机池。
休眠适用于个人主机池。 有关详细信息,请查看虚拟机中的休眠。
缩放计划只能在其已配置的时区中操作。
缩放计划可以有一个或多个日程安排。 例如,工作日与周末的不同日程安排。
定义日程安排之前,请务必了解使用率模式。 将需要根据一天中的以下时间进行日程安排:
- 上升:一天的开始,使用率增加时。
- 高峰时段:预计一天中使用量最高的时间。
- 下降:使用率逐渐减少时。 这通常是在关闭 VM 时,以节省成本。
- 非高峰时间:预计一天中使用量最低的时间。
缩放计划将在启用后立即生效。
此外,请牢记以下限制:
不要将自动缩放与其他缩放 Microsoft 或第三方缩放工具结合使用。 确保为应用缩放计划的主机池禁用这些功能。
对于共用主机池,自动缩放将覆盖排出模式,因此在更新主机池中的 VM 时,请务必使用排除标记。
对于共用主机池,自动缩放将忽略主机池设置中的现有负载均衡算法,并转而根据日程安排配置应用负载均衡。
共用主机池的自动缩放方案示例
本部分提供了四种方案,它们展示了共用主机池的自动缩放的不同部分的工作方式。 在每个示例中,有一些表格会显示主机池的设置和动画视觉演示。
注意
若要详细了解各个参数术语的含义,请参阅自动缩放术语表。
场景 1:自动缩放何时启用虚拟机?
在此场景中,我们将演示当已用主机池容量超出容量阈值时,自动缩放可以在缩放计划安排的任何阶段启用会话主机虚拟机 (VM)。
例如,我们来看看下表中描述的主机池设置:
参数 | 值 |
---|---|
阶段 | 增加 |
会话主机总数 | 6 |
负载均衡算法 | 广度优先 |
容量阈值 | 30% |
主机的最小百分比 | 30% |
可用会话主机数 | 2 |
会话数上限 | 5 |
可用的主机池容量 | 10 |
用户会话 | 0 |
使用的主机池容量 | 0% |
在这个阶段的开始,自动缩放已启用两个会话主机以匹配主机最小百分比。 尽管 6 的 30% 不是一个整数,但自动缩放会舍入到最接近的整数。 如果有两个可用会话主机,每个主机的会话数上限为五个会话,这表示此主机池的可用主机池容量为 10。 当前没有任何用户会话,已用主机池容量为 0%。
当一天开始时,假设有三个用户登录并启动用户会话。 由于负载均衡算法是广度优先,他们的用户会话被平均分配到两个可用的会话主机上。 可用主机池的容量仍为 10,但有了这三个新用户会话,已用主机池容量现在为 30%。 但是,自动缩放只有在已用主机池容量大于容量阈值时才会启用虚拟机 (VM)。 在本例中,容量阈值为 30%,因此自动缩放还不会启用任何 VM。
此时,主机池的参数如下所示:
参数 | 值 |
---|---|
阶段 | 增加 |
会话主机总数 | 6 |
负载均衡算法 | 广度优先 |
容量阈值 | 30% |
主机的最小百分比 | 30% |
可用会话主机数 | 2 |
会话数上限 | 5 |
可用的主机池容量 | 10 |
用户会话 | 3 |
使用的主机池容量 | 30% |
当另一个用户登录并启动会话时,现在总共有四个用户会话分布在两个会话主机上。 已用主机池容量现在是 40%,大于容量阈值。 因此,自动缩放会启用另一个会话主机,使已用主机池容量小于或等于容量阈值 (30%)。
综上所述,当已用主机池容量超出容量阈值时,参数如下所示:
参数 | 值 |
---|---|
阶段 | 增加 |
会话主机总数 | 6 |
负载均衡算法 | 广度优先 |
容量阈值 | 30% |
主机的最小百分比 | 30% |
可用会话主机数 | 2 |
会话数上限 | 5 |
可用的主机池容量 | 10 |
用户会话 | 4 |
使用的主机池容量 | 40% |
下面是自动缩放功能启用了另一个会话主机后的参数:
参数 | 值 |
---|---|
阶段 | 增加 |
会话主机总数 | 6 |
负载均衡算法 | 广度优先 |
容量阈值 | 30% |
主机的最小百分比 | 30% |
可用会话主机数 | 3 |
会话数上限 | 5 |
可用的主机池容量 | 15 |
用户会话 | 4 |
使用的主机池容量 | 27% |
启用另一个会话主机意味着主机池中现在有三个可用的会话主机。 会话数上限仍为 5,可用的主机池容量已增加到 15。 由于可用主机池容量已增加,已用主机池容量已降至 27%,这低于 30% 的容量阈值。
当又有一个用户登录时,现在有五个用户会话分布在三个可用的会话主机上。 已用主机池容量现在是 33%,这超过了 30% 的容量阈值。 超出容量阈值将激活自动缩放以启用另一个会话主机。
由于我们的示例处于增加阶段,新用户可能会不断登录。 随着更多的用户登录,这个模式变得更加清晰:
用户会话总数 | 可用会话主机数 | 可用的主机池容量 | 容量阈值 | 使用的主机池容量 | 自动缩放是否会启用另一个会话主机? |
---|---|---|---|---|---|
5 | 3 | 15 | 30% | 33% | 是 |
5 | 4 | 20 | 30% | 25% | 否 |
6 | 4 | 20 | 30% | 30% | 否 |
7 | 4 | 20 | 30% | 35% | 是 |
7 | 5 | 25 | 30% | 28% | 否 |
如表中所示,只有在已用主机池容量超过容量阈值时,自动缩放才会启用新的会话主机。 如果已用主机池容量等于或低于容量阈值,自动缩放就不会启用新的会话主机。
下面的动画直观地概括了我们刚刚在场景 1 中经历的情形。
场景 2:自动缩放何时关闭虚拟机?
在此场景中,我们将展示当以下所有情况均符合时,自动缩放会关闭会话主机:
- 已用主机池容量低于容量阈值。
- 自动缩放可以在不超过容量阈值的情况下关闭会话主机。
- 自动缩放只会关闭没有用户会话的会话主机(除非缩放计划已进入缩减阶段,并且用户已启用强制注销设置)。
- 共用自动缩放不会在启动阶段关闭会话主机,这样是为了避免不良的用户体验。
对于此场景,主机池在开始时如下所示:
参数 | 值 |
---|---|
阶段 | Peak |
会话主机总数 | 6 |
负载均衡算法 | 广度优先 |
容量阈值 | 30% |
主机的最小百分比 | 30% |
可用会话主机数 | 5 |
会话数上限 | 5 |
可用的主机池容量 | 25 |
用户会话 | 7 |
使用的主机池容量 | 28% |
由于我们正处于高峰期,用户数预计会保持相对稳定。 但是,为了使已用资源量保持稳定,同时保持高效,自动缩放将根据需要启用和关闭会话主机。
假设在高峰时段有七个用户登录。 如果用户会话总数为 7,将使已用主机池容量达到 28%。 由于在已用主机池容量不超过容量阈值的情况下,自动缩放无法关闭会话主机,因此自动功能目前不会关闭任何会话主机。
如果七个用户中的两个在午餐时间退出登录,那么五个会话主机上剩下五个用户会话。 会话数上限仍为 5,可用主机池容量为 25。 只有五个用户意味着已用主机池容量现在为 20%。 自动缩放现在必须检查它是否能在已用主机池容量未超过容量阈值的情况下关闭一个会话主机。
如果自动缩放关闭了一个会话主机,可用主机池容量将为 20。 如果有五个用户,已用主机池容量为 25%。 由于 25% 小于容量阈值 30%,自动缩放将选择没有用户会话的会话主机,将其置于排出模式然后关闭。
自动缩放关闭其中一个没有用户会话的会话主机后,剩下四个可用会话主机。 主机池的会话数上限仍为 5,可用主机池容量为 20。 现在有五个用户会话,已用主机池容量为 25%,仍低于容量阈值。
但是,如果另一个用户在午餐时间退出登录,现在有四个用户会话分布在主机池中的四个会话主机上。 会话数上限仍为 5,因此可用主机池容量为 20,已用主机池容量为 20%。 关闭另一个会话主机将剩下三个会话主机,可用主机池容量为 15,这会使已用主机池容量跃升至 27% 左右。 尽管 27% 低于容量阈值,但没有用户会话数为零的会话主机。 自动缩放将选择用户会话最少的会话主机,将其置于排出模式,等待所有用户会话退出登录,然后再将其关闭。 如果在任何时候,已用主机池容量达到了自动缩放无法再关闭会话主机的程度,它将使会话主机退出排出模式。
下面的动画直观地概括了我们刚刚在场景 2 中经历的情形。
场景 3:自动缩放何时强制用户退出登录?
只有在缩放计划安排的缩减阶段启用了“强制注销”设置时,自动缩放才会强制用户退出登录。 在缩放计划安排的任何其他阶段,强制注销设置不会使用户退出登录。
例如,我们来看看具有以下参数的主机池:
参数 | 值 |
---|---|
阶段 | 缩减 |
会话主机总数 | 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 |
使用的主机池容量 | 30% |
由于会话数上限仍为 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 虚拟桌面主机池创建自动缩放缩放。
- 若要查看与自动缩放关联的术语,请参阅自动缩放术语表。
- 有关自动缩放的常见问题解答,请参阅自动缩放常见问题解答。