我想在每天的19 PM〜11 AM将主机池负载平衡方法从广度优先更改为深度优先,以减少VM的成本。
例如: 主机池负载平衡方法:呼吸优先,11:00 AM〜17:00 PM 主机池负载平衡方法:深度优先,下午17:00到上午11:00
有人知道这件事吗? 参考:SET-Hostpool
我想在每天的19 PM〜11 AM将主机池负载平衡方法从广度优先更改为深度优先,以减少VM的成本。
例如: 主机池负载平衡方法:呼吸优先,11:00 AM〜17:00 PM 主机池负载平衡方法:深度优先,下午17:00到上午11:00
有人知道这件事吗? 参考:SET-Hostpool
您可以使用Azure自动运行手册来执行此操作,请按照以下步骤操作。
1。导航至Azure门户create an automation account,然后创建一个powershell runbook。
2。导航到自动化帐户-> Modules
-> Browse Gallery
->搜索Powershell模块Microsoft.RDInfra.RDPowerShell
并将其导入,在导入后,如下图所示。>
3。在将Create Azure Run As account
设置为Yes
的情况下创建自动化帐户时,它将在您的Azure AD租户中创建一个AD应用程序以及一个服务主体,其名称将类似于{{ 1}}。在azure Runbook中,您无法使用交互方式登录虚拟桌面,因此该选项是使用服务主体(以帐户身份运行)登录。
在登录之前,您需要创建一个角色分配,以便服务主体可以登录到Virtual Desktop,只需遵循此link。
automationaccountname_fc2Wgay6EkHrpgrpMSbF1V8uc6LVDkz9tgb8T6YUhaQ=
要在上面的脚本中找到Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com"
Get-RdsTenant
$myTenantName = "<Windows Virtual Desktop Tenant Name>"
New-RdsRoleAssignment -RoleDefinitionName "RDS Owner" -ApplicationId <service-principal-appid> -TenantName $myTenantName
,请在门户中导航至ApplicationId
-> Azure Active Directory
-> App registrations
->查找“运行方式”的AD应用帐户->像下面一样获得All applications
。
4。导航到在步骤1中创建的powershell Runbook,使用如下脚本,它将主机池设置为使用广度优先负载平衡。
ApplicationId
然后保存runbook1,并创建另一个runbook2,使用下面的脚本,它将主机池设置为使用深度优先负载平衡。
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Windows Virtual Desktop..."
Add-RdsAccount `
-DeploymentUrl "https://rdbroker.wvd.microsoft.com" `
-AadTenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
Set-RdsHostPool -TenantName "<contoso>" -Name "<contosoHostPool>" -BreadthFirstLoadBalancer
5。在runbook1中导航到$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Windows Virtual Desktop..."
Add-RdsAccount `
-DeploymentUrl "https://rdbroker.wvd.microsoft.com" `
-AadTenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
Set-RdsHostPool -TenantName "<contoso>" -Name "<contosoHostPool>" -DepthFirstLoadBalancer -MaxSessionLimit 10
,有关如何使用它的更多详细信息,请参阅此doc。例如,在您的情况下,只需将其设置如下。然后runbook1将每天在Schedule
运行。在runbook2中,这是相同的逻辑,然后runbook2将每天在11:00 AM
上运行。配置完计划后,将两个运行手册分层。