将启动/停止 VM v2 部署到 Azure 订阅
按顺序执行本文中的步骤以安装启动/停止VMs v2功能。 完成设置过程后,请配置计划,以根据自己的要求对其进行自定义。
权限和策略注意事项
在部署之前和部署期间,请注意以下事项:
该解决方案允许对启动/停止 v2 部署具有适当的基于角色的访问控制 (RBAC) 权限的用户添加、删除和管理启动/停止 VM v2 实例范围内的虚拟机计划。 此行为是设计使然。 实际上,这意味着对虚拟机没有显式权限的用户,在拥有修改管理虚拟机的启动/停止 v2 解决方案的权限时,仍然可以在该虚拟机上创建启动、停止和自动停止操作。
任何有权访问启动/停止 v2 解决方案的用户都可以发现启动/停止 v2 应用程序所用的 Application Insights 实例中存储的成本、节省、操作历史记录和其他数据。
管理启动/停止 v2 解决方案时,应考虑用户的启动/停止 v2 解决方案权限,特别是当用户无权直接修改目标虚拟机时。
将 Start/Stop v2 解决方案部署到新的或现有的资源组时,名为 SolutionName 且值 StartStopV2 的标记会添加到资源组及其由 Start/Stop v2 部署的资源中。 这些资源上的任何其他标记均已移除。 如果有一个 Azure 策略拒绝根据资源标记进行管理操作,则必须允许仅包含此标记的资源进行管理操作。
部署功能
部署从启动/停止 VMs v2 GitHub 组织发起。 尽管此功能旨在跨订阅中单个部署的所有资源组管理订阅中的所有 VM,但你可以根据所在组织的操作模型或要求来安装其他实例。 还可以配置此功能,以跨多个订阅集中管理 VM。
为了简化管理和删除操作,建议将启动/停止 VM v2 部署到专用资源组。
注意
此解决方案目前不支持指定现有存储帐户或 Application Insights 资源。
注意
函数应用和存储帐户的命名格式已更改。 为保证全局唯一性,现在会将唯一的随机字符串追加到这些资源的名称之后。
打开浏览器并导航到启动/停止 VM v2 GitHub 组织。
根据你在其中创建 Azure VM 的 Azure 云环境选择部署选项。
根据提示登录到 Azure 门户。
从下拉列表框中选择相应的计划。 在选择区域冗余计划 (Start/StopV2-AZ) 时,必须在以下某一个区域中创建部署:
- 中国北部
- 中国北部 2
- 中国北部 3
- 中国东部 2
选择“创建”,这样就会在 Azure 门户中打开“自定义 Azure 资源管理器部署”页面。
输入以下值:
名称 值 区域 为新资源选择一个附近的区域。 资源组名称 为将要包含启动/停止 VM 的单项资源的资源组指定名称。 资源组区域 为资源组指定区域。 例如“中国北部 2”。 Azure 函数应用名称 键入在 URL 路径中有效的名称。 将对你键入的名称进行验证,以确保其在 Azure Functions 中是唯一的。 Application Insights 名称 为将要包含启动/停止 VM 的分析数据的 Application Insights 实例指定名称。 Application Insights 区域 为 Application Insights 实例指定区域。 存储帐户名称 为存储启动/停止 VM 执行遥测数据的 Azure 存储帐户指定名称。 电子邮件地址 指定一个或多个电子邮件地址以接收状态通知,用逗号 (,) 分隔。 选择页面底部的“查看 + 创建”。
选择“创建”以开始部署。
选择屏幕顶部的铃铛图标(通知)可查看部署状态。 此时会看到“部署正在进行”。 等待部署完成。
从通知窗格选择“转到资源组”。 将看到类似于以下的屏幕:
注意
我们正在收集操作和检测信号遥测数据,以便在你联系支持团队进行任何故障排除时为你提供更好的帮助。 我们还正在收集虚拟机事件历史记录,用于验证服务在虚拟机上的运行时间,以及虚拟机的暂停时间,以确定服务效果。
启用多个订阅
启动/停止部署完成后,请执行以下步骤,以使启动/停止 VM v2 在多个订阅之间执行操作。
复制在部署过程中指定的 Azure 函数应用名称的值。
在 Azure 门户中,导航到二级订阅。
选择“访问控制 (IAM)”。
选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。
分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色。
设置 值 角色 参与者 将访问权限分配到 用户、组或服务主体 成员 <你的 Azure 函数应用名称>
配置计划概述
若要管理自动化方法以控制 VM 的启动和停止,请根据需要配置一个或多个包含的逻辑应用。
“计划”- 启动操作和停止操作基于你针对 Azure 资源管理器 VM 和经典 VM 指定的计划。 ststv2_vms_Scheduled_start 和 ststv2_vms_Scheduled_stop 分别用于配置计划的启动和计划的停止 。
“序列”- 启动操作和停止操作基于针对具有预定义排序标记的 VM 的计划。 仅支持两个命名标记,即 sequencestart 和 sequencestop 。 ststv2_vms_Sequenced_start 和 ststv2_vms_Sequenced_stop 分别用于配置排序启动和排序停止 。
注意
此方案仅支持 Azure 资源管理器 VM。
AutoStop - 此功能仅用于基于 Azure 资源管理器和经典 VM 的 CPU 使用率对它们执行停止操作。 该功能也可以是基于计划的执行操作,可在 VM 上创建警报,并根据条件触发警报,以执行停止操作。ststv2_vms_AutoStop 用于配置自动停止功能。
如果需要其他计划,可以使用 Azure 门户中的“克隆”选项来复制所提供的其中一个逻辑应用。
计划启动和停止方案
执行以下步骤,为 Azure 资源管理器和经典 VM 配置已计划的启动和停止操作。 例如,可以配置 ststv2_vms_Scheduled_start 计划,在上午上班时启动 VM,并根据 ststv2_vms_Scheduled_stop 计划,在晚上下班时停止订阅中的所有 VM。
支持将逻辑应用配置为仅启动 VM。
对于每个方案,可以针对一个或多个订阅、单个或多个资源组执行操作,并在包含或排除列表中指定一个或多个 VM。 不能在同一逻辑应用中同时指定。
登录 Azure 门户并导航到“逻辑应用”。
在逻辑应用列表中,若要配置计划的启动,请选择 ststv2_vms_Scheduled_start。 若要配置计划的停止,请选择 ststv2_vms_Scheduled_stop。
从左侧窗格中选择“逻辑应用设计器”。
“逻辑应用设计器”出现后,在“设计器”窗格中,选择“定期”以配置逻辑应用计划。 若要了解具体的定期选项,请参阅计划定期任务。
在“设计器”窗格中,选择“函数-尝试”以配置目标设置。 在请求正文中,若要跨订阅中的所有资源组管理 VM,请修改请求正文,如以下示例中所示。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "Subscriptions": [ "/subscriptions/12345678-1234-5678-1234-123456781234/" ] } }
在
subscriptions
数组中指定多个订阅,每个值用逗号分隔,如以下示例中所示。"Subscriptions": [ "/subscriptions/12345678-1234-5678-1234-123456781234/", "/subscriptions/11111111-0000-1111-2222-444444444444/" ]
在请求正文中,若要管理特定资源组的 VM,请修改请求正文,如以下示例中所示。 指定的每个资源路径必须用逗号分隔。 如果需要,可以指定一个或多个资源组。
此示例还演示了如何排除虚拟机。 可以通过指定 VM 资源路径或按通配符来排除 VM。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "Subscriptions": [ "/subscriptions/12345678-1234-5678-1234-123456781234/", "/subscriptions/11111111-0000-1111-2222-444444444444/" ], "ResourceGroups": [ "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/", "/subscriptions/11111111-0000-1111-2222-444444444444/resourceGroups/rg2/" ], "ExcludedVMLists": [ "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] } }
此处将对所有 VM 执行操作,但两个订阅中名称以 Az 和 Bz 开头的 VM 除外。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [“Az*”,“Bz*”], "Subscriptions": [ "/subscriptions/12345678-1234-5678-1234-123456781234/", "/subscriptions/11111111-0000-1111-2222-444444444444/" ] } }
在请求正文中,若要管理订阅中一组特定的 VM,请修改请求正文,如以下示例中所示。 指定的每个资源路径必须用逗号分隔。 如果需要,可以指定一个 VM。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg3/providers/Microsoft.Compute/virtualMachines/vm2", "/subscriptions/11111111-0000-1111-2222-444444444444/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm30" ] } }
在逻辑应用的“概述”窗格中,选择“启用”。
顺序启动和停止方案
在分布式应用程序体系结构中,如果某环境在多个 Azure 资源管理器 VM 上包含两个或更多组件,则支持按顺序启动和停止组件的序列非常重要。 在配置此方案前,请确保已按照概述页面中的说明将 sequencestart 和 sequencestop 标记应用到目标 VM 。
在逻辑应用列表中,若要配置顺序启动,请选择 ststv2_vms_Sequenced_start。 若要配置顺序停止,请选择 ststv2_vms_Sequenced_stop。
从左侧窗格中选择“逻辑应用设计器”。
“逻辑应用设计器”出现后,在“设计器”窗格中,选择“定期”以配置逻辑应用计划。 若要了解具体的定期选项,请参阅计划定期任务。
在设计器窗格中,选择“Function-Try”配置目标设置,然后选择顶部菜单中的“</> 代码视图”按钮以编辑 Function-Try 元素的代码。 在请求正文中,若要跨订阅中的所有资源组管理 VM,请修改请求正文,如以下示例中所示。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "Subscriptions": [ "/subscriptions/12345678-1234-5678-1234-123456781234/" ] }, "Sequenced": true }
在
subscriptions
数组中指定多个订阅,每个值用逗号分隔,如以下示例中所示。"Subscriptions": [ "/subscriptions/12345678-1234-5678-1234-123456781234/", "/subscriptions/11111111-0000-1111-2222-444444444444/" ]
在请求正文中,若要管理特定资源组的 VM,请修改请求正文,如以下示例中所示。 指定的每个资源路径必须用逗号分隔。 如果需要,可以指定一个资源组。
此示例还演示了如何根据使用通配符的计划启动/停止示例按资源路径排除虚拟机。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "Subscriptions":[ "/subscriptions/12345678-1234-5678-1234-123456781234/", "/subscriptions/11111111-0000-1111-2222-444444444444/" ], "ResourceGroups": [ "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/", "/subscriptions/11111111-0000-1111-2222-444444444444/resourceGroups/rg2/" ], "ExcludedVMLists": [ "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] }, "Sequenced": true }
在请求正文中,若要管理订阅中一组特定的 VM,请修改请求正文,如以下示例中所示。 指定的每个资源路径必须用逗号分隔。 如果需要,可以指定一个 VM。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm2", "/subscriptions/11111111-0000-1111-2222-444444444444/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm30" ] }, "Sequenced": true }
自动停止方案
启动/停止 VM v2 可评估在非高峰时段(如下班之后)未使用的计算机并在处理器利用率小于指定百分比时自动关闭它们,从而管理订阅中运行 Azure 资源管理器和经典 VM 的成本。
请求正文中的以下指标警报属性支持自定义:
- AutoStop_MetricName
- AutoStop_Condition
- AutoStop_Threshold
- AutoStop_Description
- AutoStop_Frequency
- AutoStop_Severity
- AutoStop_Threshold
- AutoStop_TimeAggregationOperator
- AutoStop_TimeWindow
若要详细了解 Azure Monitor 指标警报的工作方式以及配置方式,请参阅 Azure Monitor 中的指标警报。
在逻辑应用列表中,若要配置自动停止,请选择 ststv2_vms_AutoStop。
从左侧窗格中选择“逻辑应用设计器”。
“逻辑应用设计器”出现后,在“设计器”窗格中,选择“定期”以配置逻辑应用计划。 若要了解具体的定期选项,请参阅计划定期任务。
在“设计器”窗格中,选择“函数-尝试”以配置目标设置。 在请求正文中,若要跨订阅中的所有资源组管理 VM,请修改请求正文,如以下示例中所示。
{ "Action": "stop", "EnableClassic": false, "AutoStop_MetricName": "Percentage CPU", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "RequestScopes":{ "Subscriptions":[ "/subscriptions/12345678-1111-2222-3333-1234567891234/", "/subscriptions/12345678-2222-4444-5555-1234567891234/" ], "ExcludedVMLists":[] } }
在请求正文中,若要管理特定资源组的 VM,请修改请求正文,如以下示例中所示。 指定的每个资源路径必须用逗号分隔。 如果需要,可以指定一个资源组。
{ "Action": "stop", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_MetricName": "Percentage CPU", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "ResourceGroups": [ "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/vmrg1/", "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroupsvmrg2/", "/subscriptions/12345678-2222-4444-5555-1234567891234/resourceGroups/VMHostingRG/" ] } }
在请求正文中,若要管理订阅中一组特定的 VM,请修改请求正文,如以下示例中所示。 指定的每个资源路径必须用逗号分隔。 如果需要,可以指定一个 VM。
{ "Action": "stop", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_MetricName": "Percentage CPU", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/rg3/providers/Microsoft.ClassicCompute/virtualMachines/Clasyvm11", "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] } }
VM 标记
还可以通过设置 VM 本身的标记,在启动和停止操作中包括或排除特定的 VM。 若要添加标记,请导航到特定 VM,从左侧菜单中选择“标记”,然后添加一个名为 ssv2excludevm
的标记。 若要从启动或停止操作中排除此 VM,请将此新标记的值设置为 true
。 若要在操作中包含 VM,请将值设置为 false
。 这样就能排除特定 VM,而无需更新负载配置中的 ExcludedVMLists
。