全局负载均衡器可确保服务在多个 Azure 区域中全局可用。 如果一个区域出现故障,则会将流量路由到下一个最近的正常运行的区域负载均衡器。
与其他部署方法相比,使用 ARM 模板需要的步骤更少。
Azure 资源管理器模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 你可以在不编写用于创建部署的编程命令序列的情况下,描述预期部署。
如果你的环境满足先决条件,并且你熟悉如何使用 ARM 模板,请选择“部署到 Azure”按钮。 模板将在 Azure 门户中打开。
本教程中,您将学习如何:
- 所有教程都包含一个列表,其中汇总了要完成的步骤
- 每个项目符号点都与一个 H2 键对齐
- 在教程中使用这些绿色复选框
先决条件
- 具有活动订阅的 Azure 帐户。 创建试用版订阅并访问 Azure 门户。
查看模板
在本部分中,你将查看用于部署全局负载均衡器的模板和参数。 本快速入门中使用的模板来自 Azure 快速入门模板。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "6587483520975479408"
}
},
"parameters": {
"adminUsername": {
"type": "string",
"metadata": {
"description": "Admin username"
}
},
"adminPassword": {
"type": "securestring",
"metadata": {
"description": "Admin password"
}
},
"vmNamePrefix": {
"type": "string",
"defaultValue": "BackendVM",
"metadata": {
"description": "Prefix to use for VM names"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"vmSize": {
"type": "string",
"defaultValue": "Standard_D2s_v3",
"metadata": {
"description": "Size of the virtual machines"
}
}
},
"variables": {
"availabilitySetName": "AvSet",
"storageAccountType": "Standard_LRS",
"storageAccountName": "[uniqueString(resourceGroup().id)]",
"virtualNetworkName": "vNet",
"subnetName": "backendSubnet",
"loadBalancerName": "ilb",
"networkInterfaceName": "nic",
"subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]",
"numberOfInstances": 2
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('storageAccountType')]"
},
"kind": "StorageV2"
},
{
"type": "Microsoft.Compute/availabilitySets",
"apiVersion": "2023-09-01",
"name": "[variables('availabilitySetName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Aligned"
},
"properties": {
"platformUpdateDomainCount": 2,
"platformFaultDomainCount": 2
}
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2023-09-01",
"name": "[variables('virtualNetworkName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
},
"subnets": [
{
"name": "[variables('subnetName')]",
"properties": {
"addressPrefix": "10.0.2.0/24"
}
}
]
}
},
{
"copy": {
"name": "networkInterface",
"count": "[length(range(0, variables('numberOfInstances')))]"
},
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2023-09-01",
"name": "[format('{0}{1}', variables('networkInterfaceName'), range(0, variables('numberOfInstances'))[copyIndex()])]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnetRef')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), 'BackendPool1')]"
}
]
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName'))]",
"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]"
]
},
{
"type": "Microsoft.Network/loadBalancers",
"apiVersion": "2023-09-01",
"name": "[variables('loadBalancerName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {
"frontendIPConfigurations": [
{
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAddress": "10.0.2.6",
"privateIPAllocationMethod": "Static"
},
"name": "LoadBalancerFrontend"
}
],
"backendAddressPools": [
{
"name": "BackendPool1"
}
],
"loadBalancingRules": [
{
"properties": {
"frontendIPConfiguration": {
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerName'), 'LoadBalancerFrontend')]"
},
"backendAddressPool": {
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), 'BackendPool1')]"
},
"probe": {
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerName'), 'lbprobe')]"
},
"protocol": "Tcp",
"frontendPort": 80,
"backendPort": 80,
"idleTimeoutInMinutes": 15
},
"name": "lbrule"
}
],
"probes": [
{
"properties": {
"protocol": "Tcp",
"port": 80,
"intervalInSeconds": 15,
"numberOfProbes": 2
},
"name": "lbprobe"
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]"
]
},
{
"copy": {
"name": "vm",
"count": "[length(range(0, variables('numberOfInstances')))]"
},
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-09-01",
"name": "[format('{0}{1}', parameters('vmNamePrefix'), range(0, variables('numberOfInstances'))[copyIndex()])]",
"location": "[parameters('location')]",
"properties": {
"availabilitySet": {
"id": "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]"
},
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[format('{0}{1}', parameters('vmNamePrefix'), range(0, variables('numberOfInstances'))[copyIndex()])]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2019-Datacenter",
"version": "latest"
},
"osDisk": {
"createOption": "FromImage"
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}', variables('networkInterfaceName'), range(0, variables('numberOfInstances'))[range(0, variables('numberOfInstances'))[copyIndex()]]))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints.blob]"
}
}
},
"dependsOn": [
"[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]",
"[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}', variables('networkInterfaceName'), range(0, variables('numberOfInstances'))[range(0, variables('numberOfInstances'))[copyIndex()]]))]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
]
}
],
"outputs": {
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[variables('loadBalancerName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName'))]"
}
}
}
注释
创建标准负载均衡器时,还必须创建一个作为该标准负载均衡器的前端配置的新标准公共 IP 地址。 此外,负载均衡器和公共 IP SKU 必须匹配。 在本例中,我们将创建两个标准公共 IP 地址,一个用于区域级别负载均衡器,另一个用于全局负载均衡器。
该模板中已定义了多个 Azure 资源:
Microsoft.Network/loadBalancers:区域和全局负载均衡器。
Microsoft.Network/publicIPAddresses:用于负载均衡器、堡垒主机以及每个虚拟机。
Microsoft.Network/virtualNetworks:负载均衡器和虚拟机的虚拟网络。
Microsoft.Compute/virtualMachines (2):虚拟机。
Microsoft.Network/networkInterfaces (2):虚拟机的网络接口。
Microsoft.Compute/virtualMachine/extensions (2):用于配置 Internet Information Server (IIS) 和网页。
重要
无论出站数据使用情况如何,按小时定价都从部署 Bastion 的时间开始算起。 有关详细信息,请参阅定价和 SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。
若要查找与 Azure 负载均衡器相关的更多模板,请参阅 Azure 快速入门模板。
部署模板
登录到 Azure 门户。
在搜索栏中输入并选择“部署自定义模板”
在“自定义部署”页的“快速入门模板”文本框中输入 load-balancer-cross-region,然后选择 quickstarts/microsoft.network/load-balancer-cross-region。
选择“选择模板”并输入以下信息:
名称 价值 订阅 选择订阅 资源组 选择你的资源组,或新建一个资源组 区域 选择资源的部署区域 项目名称 输入用于创建唯一资源名称的项目名称 LocationCR 为跨区域负载均衡器选择部署区域 Location-r1 为区域负载均衡器和 VM 选择部署区域 Location-r2 选择区域负载均衡器和 VM 所在的部署区域 管理员用户名 输入虚拟机的用户名 管理员密码 输入虚拟机的密码 选择“查看 + 创建”运行模版验证。
如果没有错误,请查看模板的条款,然后选择“创建”。
验证部署
如有必要,登录到 Azure 门户。
从左侧窗格中选择“资源组”。
选择部署中使用的资源组。 默认资源组名称是追加了 -rg 的项目名称。 例如 crlb-learn-arm-rg。
选择全局负载均衡器。 其默认名称是追加了 -cr 的项目名称。 例如,crlb-learn-arm-cr。
仅复制公共 IP 地址的 IP 地址部分,然后将其粘贴到浏览器的地址栏中。 该页面会解析为默认的 IIS Windows Server 网页。
清理资源
不再需要它们时,请删除:
- 资源组
- 负载均衡器
- 相关资源
- 请访问 Azure 门户,选择包含负载均衡器的资源组,然后选择“删除资源组”。
- 选择“对所选虚拟机和虚拟机规模集应用强制删除”,输入资源组的名称,然后选择 **删除 > 删除**。
后续步骤
在本教程中,你将:
- 已创建跨区域负载均衡器\
- 已创建区域负载均衡器
- 已创建三个虚拟机并将它们链接到了区域负载均衡器
- 已将全局负载均衡器配置为配合区域负载均衡器使用
- 测试了全局负载均衡器。
详细了解跨区域负载均衡器的详细信息。
继续阅读下一篇文章,以了解如何创建...