[玩转系统] 如何使用 PowerShell 快速构建 Azure 规模集
作者:精品下载站 日期:2024-12-14 20:52:47 浏览:11 分类:玩电脑
如何使用 PowerShell 快速构建 Azure 规模集
Azure 虚拟机规模集是 Azure 中 VM 的一项便捷的高可用性功能。使用 Azure PowerShell,您可以使用 PowerShell 构建 Azure 规模集来自动执行任务,这是一个巨大的增值。
执行 Azure VM 规模集部署是开箱即用的自动缩放和高可用性的好方法。 Azure VM 规模集具有许多内置功能,例如自动扩展以满足需求、跨可用区部署等等。
当您需要部署 Azure 虚拟机规模集时,您有几个选项,例如使用 Azure 门户、AZ CLI 或 PowerShell。在本文中,我们将深入了解如何构建一些 Azure PowerShell 代码来创建规模集并配置它们。
本文的大部分代码是由我的朋友 Josh Duffney 在学习 AZ-103 认证时创建的。我选择围绕它编写一个教程,因为我发现该代码非常有用。了解 Josh 在他的博客上所做的事情。
教程概述
在本文/教程中,您将了解如何使用 PowerShell 围绕 Azure VM 规模集执行许多常见操作:
- 创建 Azure VM 规模集
- 创建网络安全组 (NSG)
- 将 NSG 分配给规模集的子网
- 将 IIS 和示例应用程序部署到规模集
- 将其他 VM 添加到规模集
- 允许所有规模集实例的入站 RDP
- 拆除规模集
通过以这种方式分解操作,您将能够全面了解如何管理 Azure VM 规模集的整个生命周期。
先决条件
要遵循本教程,您应该在开始之前满足一些先决条件。在尝试执行本教程中的步骤之前,请确保满足所有这些要求。
- Azure 订阅。如果您还没有,可以免费获取 Azure。
- 已设置 Azure Cloud Shell 并登录。为了避免安装任何依赖项,您将看到的所有示例都将在 Azure Cloud Shell 内运行。
- 假设 Azure 全局管理员权限。显然,懒惰在这里发挥了很大的作用。您不必成为全局管理员,但您知道我的意思。
如果您没有任何 Azure 积分,按照本教程操作将产生一些费用。然而,它们应该是最小的。完成后别忘了清理!
使用 PowerShell 创建 Azure 规模集的选项
您的第一个任务是使用 New-AzVmss cmdlet 创建 Azure VM 规模集。为了管理高可用性和冗余,规模集由不同类型的资源组成,例如虚拟网络、负载均衡器、公共 IP 地址和 VM 实例本身。 New-AzVMss
cmdlet 负责处理所有这些事情。
使用 New-AzVmss
cmdlet 创建 VM 规模集时,有两个选项。您可以使用简单的参数集来快速创建预设比例集并为您假设大部分配置,也可以单独提供每个配置选项。
使用 PowerShell 创建 Azure VM 规模集
在本教程中,您将重点关注分别指定每个资源,但如果您想创建一个简单的规模集,则只需使用两个参数即可实现: 凭据
和VMScaleSetName
。 Credential
参数是每个虚拟机实例的本地管理员帐户的 PSCredential 对象。
您可以查看下面的示例,了解如何使用 PowerShell 创建规模集所需的一切。
$vmssName = 'vmssScaleSet-simple'
$vmPassword = ConvertTo-SecureString '<somepassword>' -AsPlainText -Force
$vmCred = New-Object System.Management.Automation.PSCredential('<somelocaladminaccountname>', $vmPassword)
## Create a VMSS using the default settings
New-AzVmss -Credential $vmCred -VMScaleSetName $vmssName
开始后,您将看到一个进度指示器,如下所示。
完成后,简单的路线将帮助您:
- 资源组
- 虚拟网络
- 负载均衡器
- 公共IP
- 具有两个 Windows 实例的 VMSS
您可以通过下面的 Azure 门户查看 vmssScaleSet-simple 资源组的外观。
创建 Azure VM 规模集:更好的方法
在本教程中,您不会采取简单的方法。你需要了解这些东西是如何工作的!本文的其余部分将基于规模集构建,您可以自行定义规模集的每个资源,以使用 PowerShell 创建 Azure 规模集。
上面介绍的简单参数集涵盖了创建包括资源组在内的所有内容,但您自己则不然。如果使用 New-AzVmss
cmdlet 指定每个资源支持规模集,则必须自行创建资源组。没什么大不了的。
要使用 Azure PowerShell 创建资源组,请使用 New-AzResourceGroup
cmdlet 提供资源组的名称和区域/位置。
以下示例在 eastus 区域创建一个名为 vmssPractice 的资源组。
PS Azure:\> New-AzResourceGroup -Name vmssPractice -Location eastus
ResourceGroupName : vmssPractice
Location : eastus
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/1427e7fb-a488-4ec5-be44-30ac10ca2e95/resourceGroups/vmssPractice
创建资源后,您可以再次调用 New-AzVmss
cmdlet。但这一次,您自己定义每个资源名称。为此,您会注意到下面有用于命名构建规模集的每个资源(例如子网、负载均衡器等)的选项。
升级政策
请注意,下面您使用的是 UpgradePolicyMode
参数。在本教程的后面部分,您将修改比例集,这很重要。升级策略决定在规模集模型发生更改时如何使虚拟机保持最新状态。
规模集模型是规模集在 Azure 中的表示方式。它是规模集外观的架构。每个规模集中都有一个规模集实例,表示当前运行时状态或规模集现在的样子。
升级策略的三种模式是:
- 自动 - 虚拟机可能会以随机顺序重新启动,甚至同时暂时关闭所有虚拟机。
- 滚动 - 规模集将更新分批部署到实例,并在批次之间设置可选的暂停时间。
- 手动 - 启动更新时现有虚拟机不会发生任何变化。
由于本教程只是一个示例,因此将 UpgradePolicyMode
设置为 Automatic
以确保您稍后执行此操作时虚拟机实例会自动更新。
$vmPassword = ConvertTo-SecureString '<somepassword>' -AsPlainText -Force
$vmCred = New-Object System.Management.Automation.PSCredential('<somelocaladminusername>', $vmPassword)
$params = @{
ResourceGroupName = 'vmssPractice'
Location = 'eastus'
VmScaleSetName = 'vmssScaleSet'
SubnetName = 'vmssSubnet'
PublicIpAddressName = 'vmssPublicIpAddress'
LoadBalancerName = 'vmssLoadBalancer'
UpgradePolicyMode = 'Automatic'
Credential = $vmCred
}
New-AzVmss @params
即使升级策略设置为自动,并不意味着规模集会在模型更新时自动更新。这只是定义了更新时虚拟机如何重新启动。请参阅此博文了解更多信息。
创建规模集和相关资源需要几分钟时间。
使用 PowerShell 完成 Azure 规模集的第一步。
设置网络
现在已经创建了规模集和所有相关资源,是时候执行一些常见的维护操作以使用 PowerShell 构建 Azure 规模集了。按原样,该规模集对 Internet 完全开放。你需要将其锁定。为此,您首先需要创建一个网络安全组 (NSG)。
设置网络安全组 (NSG)
要为规模集创建 NSG,您将:
- 使用
Get-AzVmss
获取规模集模型。 - 创建一个表示您要配置的规则的配置对象。
- 使用新创建的规则创建 NSG。
首先,使用 Get-AzVmss
cmdlet 查找新创建的规模集模型,如下所示。
$vmss = Get-AzVmss -ResourceGroupName vmssPractice -VMScaleSetName vmssScaleSet
Get-AzVmss
cmdlet 实际上并不查询规模集本身。相反,它查询规模集的模型。要查询规模集的实时视图,可以使用InstanceView
参数。
创建网络安全规则
接下来,您需要创建网络安全规则,作为使用 PowerShell 创建 Azure 规模集的先决条件。网络安全规则代表最终将应用于 NSG 的所有防火墙规则。将安全规则视为类似于 Windows 防火墙规则的规则。
若要创建网络安全规则,请使用 New-AzNetworkSecurityRuleConfig
cmdlet。由于您最终将向此规模集部署 IIS Web 服务,因此需要允许 HTTP 流量到达负载均衡器。您可以查看下面的示例来了解如何执行此操作。
下面的示例创建一个名为 allowHTTP 的规则,允许所有通过端口 80 进入的 TCP 流量访问负载均衡器。输出将保存到 $nsgRule 变量以传递到下一个命令。
$nsgRuleParams = @{
Name = 'allowHTTP'
Protocol = 'Tcp'
Direction = 'Inbound'
Priority = 200
SourceAddressPrefix = '*'
SourcePortRange = '*'
DestinationAddressPrefix = '*'
DestinationPortRange = 80
Access = 'Allow'
}
$nsgRule = New-AzNetworkSecurityRuleConfig @nsgRuleParams
创建网络安全组
创建规则后,您现在可以使用 New-AzNetworkSecurityGroup
cmdlet 创建 NSG 并应用规则,如下所示。
$nsgParams = @{
ResourceGroupName = 'vmssPractice'
Location = 'eastus'
Name = 'vmssNSG'
SecurityRules = $nsgRule
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
将 NSG 分配给子网
创建规模集时,会使用它创建虚拟网络。创建 NSG 后,现在可以将该 NSG 分配到虚拟网络中的子网,以使用 PowerShell 创建 Azure 规模集。为此需要三个步骤:
- 获取创建的虚拟网络
- 将 NSG 添加到虚拟网络的子网配置
- 将更改应用到虚拟网络
首先,使用 Get-AzVirtualNetwork
查找虚拟网络。
$vnet = Get-AzVirtualNetwork -ResourceGroupName vmssPractice -Name vmssScaleSet
接下来,创建一个子网配置对象,使用 Set-AzVirtualNetworkSubnetConfig
cmdlet 将 NSG“附加”到子网。由于虚拟网络可以有多个子网,因此下面您将确保仅选择第一个子网。
$subnet = $vnet.Subnets[0]
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = 'vmssSubnet'
AddressPrefix = $subnet.AddressPrefix
NetworkSecurityGroup = $nsg
}
$subnetConfig = Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
最后,使用 Set-AzVirtualNetwork
cmdlet 将新的子网更改应用到虚拟网络。
Set-AzVirtualNetwork -VirtualNetwork $vnet
您距离使用 PowerShell 创建 Azure 规模集又近了一步!
更新规模集模型
此时,规模集模型尚不知道已添加到 vNet 的 NSG。您现在必须更新它以反映此更改。为此,请使用 Update-AzVmss
cmdlet 通过 PowerShell 更新 Azure 规模集。此 cmdlet 有一个名为 VirtualMachineScaleSet
的参数,它表示包含更新信息的规模集模型。
通过提供资源组名称、规模集名称和更新的规模集模型,您现在可以使 VM 实例了解新添加的 NSG,如下所示。
$vmss = Get-AzVmss -ResourceGroupName vmssPractice -VMScaleSetName vmssScaleSet
Update-AzVmss -ResourceGroupName vmssPractice -Name vmssScaleSet -VirtualMachineScaleSet $vmss
部署示例应用程序
使用 PowerShell 创建 Azure 规模集只是手段的最终目的。在生产环境中,您将使用规模集来运行 Web 服务等工作负载。现在让我们将 IIS 安装到我们的规模集并创建一个简单的默认网页。
您可以在此处找到存储在 Microsoft GitHub 存储库中的简单示例 PowerShell 脚本。这个名为 automate-iis.ps1 的 PowerShell 脚本仅包含两行来安装 IIS 并创建默认网页,如下所示。
Add-WindowsFeature Web-Server
Set-Content -Path "C:\inetpub\wwwroot\Default.htm" -Value "Hello World from host $($env:computername) !"
要调用此脚本,请为 VM 规模集设置 Azure 自定义脚本扩展。您将使用 Add-AzVmssExtension
cmdlet 来执行此操作,该 cmdlet 会从 GitHub 下载 automate-iis.ps1 PowerShell 脚本并运行它。
您可以在下面查看如何执行此操作的示例。
$publicSettings = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}
$vmss = Get-AzVmss -ResourceGroupName vmssPractice -VMScaleSetName vmssScaleSet
$extParams = @{
VirtualMachineScaleSet = $vmss
Name = 'CustomScript'
Publisher = 'Microsoft.Compute'
Type = 'CustomScriptExtension'
TypeHandlerVersion = 1.8
Setting = $publicSettings
}
Add-AzVmssExtension @extParams
要使用 PowerShell 更新 Azure 规模集的所有 VM 实例,请再次更新规模集。
Update-AzVmss -ResourceGroupName vmssPractice -Name vmssScaleSet -VirtualMachineScaleSet $vmss
如果您查看 Azure 门户,您现在会看到规模集正在更新,如下面的屏幕截图所示。
更新完成后,您现在应该已安装 IIS 并在所有 VM 实例上设置默认网页。
验证应用程序部署
要验证更新是否已发生,请首先找到规模集的公共 DNS 名称,如下所示。
(Get-AzPublicIpAddress -Name vmssPublicIpAddress).DnsSettings.Fqdn
现在在浏览器中导航至http://。如果一切顺利,您应该会看到下面的网页。
扩展虚拟机集
假设您出色的 Web 应用程序正在获得大量流量,并且您需要向规模集添加更多实例。这样做只需要更新之前查询的规模集对象的单个属性。
通过将 SKU 容量设置为您需要的实例数量并将更新发送到规模集,规模集的实例数量很快就会增加。
$vmss.sku.capacity = 3
Update-AzVmss -ResourceGroupName vmssPractice -Name vmssScaleSet -VirtualMachineScaleSet $vmss
这会预配一个新的 VM 实例并将其添加到规模集。该过程可能需要几分钟。要有耐心!
把它撕下来
由于这只是一个有关使用 PowerShell 创建 Azure 规模集的教程,现在让我们来分解一下您已完成的工作。由于规模集及其包含的所有内容都位于单个资源组中,因此您现在只需删除该资源组即可。这将清理本文中配置的所有资源。
Remove-AzResourceGroup -ResourceGroupName vmssPractice
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag