第一章:揭秘AZ-104负载均衡器核心概念
Azure 负载均衡器是实现高可用性和可扩展性的关键网络服务,广泛应用于 AZ-104 认证所涵盖的 Azure 管理任务中。它通过将入站流量智能分发到多个后端实例,确保应用程序的稳定运行和高效响应。
负载均衡器的工作模式
Azure 负载均衡器支持两种主要类型:公共(面向互联网)和内部(私有网络)。无论哪种类型,其核心组件包括前端 IP 配置、后端地址池、负载均衡规则、探测健康状态的探针等。
- 前端 IP 配置:接收来自客户端的流量,可为公网或内网 IP
- 后端地址池:包含虚拟机或虚拟机规模集的 NIC IP 地址
- 负载均衡规则:定义如何将流量从前端端口映射到后端端口
- 健康探针:定期检查后端实例的可用性,自动剔除不健康的实例
配置健康探针示例
以下是一个使用 Azure CLI 创建 HTTP 健康探针的代码示例:
# 创建 HTTP 健康探针,每 5 秒检测一次,连续 2 次失败判定为不可用
az network lb probe create \
--resource-group MyResourceGroup \
--lb-name MyLoadBalancer \
--name MyHealthProbe \
--protocol http \
--port 80 \
--path '/health' \
--interval 5 \
--threshold 2
上述命令创建一个基于 HTTP 的健康检查,访问路径为
/health,适用于运行 Web 服务的应用实例。
负载均衡规则与流量分发策略
负载均衡器支持五元组哈希(源 IP、源端口、目标 IP、目标端口、协议)进行流量分发,确保同一会话始终路由到相同后端实例。此外,可通过启用“出站规则”统一管理 SNAT(源网络地址转换)连接。
| 组件 | 作用说明 |
|---|
| 前端 IP | 接收外部请求的入口点 |
| 后端池 | 承载实际工作负载的 VM 或实例集合 |
| 健康探针 | 决定哪些实例可以接收新流量 |
graph LR
A[客户端请求] --> B(负载均衡器前端IP)
B --> C{健康检查通过?}
C -->|是| D[分发至后端实例]
C -->|否| E[排除故障节点]
第二章:Azure负载均衡器类型与工作原理
2.1 理解公网与内部负载均衡器的适用场景
在构建现代云原生应用架构时,合理选择负载均衡器类型至关重要。公网负载均衡器用于将外部流量分发到后端服务,适用于面向互联网的应用入口。
公网负载均衡器典型场景
- 对外提供Web服务,如电商平台前端访问
- 移动App后端API的统一接入点
内部负载均衡器应用场景
apiVersion: v1
kind: Service
metadata:
name: internal-service
annotations:
cloud.google.com/load-balancer-type: "Internal" # 指定为内部负载均衡
该配置创建一个仅限VPC内访问的负载均衡器,常用于微服务间通信,提升安全性和网络性能。
| 类型 | 访问范围 | 安全性 |
|---|
| 公网 | 互联网可访问 | 需配合防火墙策略 |
| 内部 | 私有网络内访问 | 隔离性高 |
2.2 探究标准与基本SKU的关键差异
在电商系统架构中,SKU(库存保有单位)的分类直接影响商品管理效率。标准SKU通常包含完整属性组合,如颜色、尺寸、材质等,适用于精细化库存控制。
数据结构对比
- 基本SKU:仅标识商品主体,不区分变体,常用于物流与仓储基础单元。
- 标准SKU:由基本SKU派生,附加属性维度,支持多维筛选与精准追踪。
示例代码:SKU生成逻辑
// GenerateStandardSKU 根据基础信息与属性生成标准SKU
func GenerateStandardSKU(baseSKU string, attrs map[string]string) string {
hash := md5.Sum([]byte(fmt.Sprintf("%s-%v", baseSKU, attrs)))
return fmt.Sprintf("%s-%x", baseSKU, hash[:6])
}
上述函数通过MD5哈希合并基础SKU与属性映射,确保同一属性组合生成唯一标准SKU,避免重复上架问题。
关键差异总结
| 维度 | 基本SKU | 标准SKU |
|---|
| 粒度 | 粗粒度 | 细粒度 |
| 用途 | 仓储计量 | 销售与库存管理 |
2.3 负载均衡规则与入站NAT池工作机制
负载均衡规则定义了如何将外部请求分发到后端实例,通常与入站NAT池协同工作。入站NAT池预分配公网IP和端口范围,用于映射到内部虚拟机的私有IP和端口。
负载均衡规则核心参数
- 前端IP配置:绑定公网IP,接收外部流量;
- 协议与端口:指定TCP/UDP及监听端口;
- 后端池:包含实际处理请求的虚拟机实例;
- 健康探测:确保只将流量路由至健康的实例。
NAT池端口映射示例
{
"frontendIP": "203.0.113.10",
"protocol": "TCP",
"frontendPortRangeStart": 8000,
"frontendPortRangeEnd": 8999,
"backendPort": 80,
"backendPool": [ "10.0.0.4", "10.0.0.5" ]
}
该配置表示从8000-8999的公网端口映射到后端服务器的80端口,实现多实例共享同一公网IP的入站访问。
2.4 配置前端IP配置与后端池连接策略
在负载均衡架构中,前端IP配置决定了流量入口的可达性。通过绑定公网IP或私网IP,可灵活控制服务暴露范围。通常使用静态IP绑定以确保DNS解析稳定性。
后端池健康检查机制
为保障服务高可用,需配置合理的健康检查策略。以下为典型配置示例:
{
"intervalSeconds": 5,
"timeoutSeconds": 2,
"unhealthyThreshold": 3,
"healthyThreshold": 2,
"protocol": "HTTP",
"path": "/health"
}
该配置表示每5秒发起一次健康检查,超时2秒判定失败,连续3次失败则标记为不可用,恢复需连续2次成功。路径
/health应返回200状态码。
连接转发策略配置
支持轮询、最少连接、源IP哈希等调度算法。推荐在会话保持场景使用源IP哈希,避免频繁重登录。
- 轮询(Round Robin):适用于无状态服务
- 最少连接(Least Connections):动态负载更优
- 源IP哈希:保证会话一致性
2.5 实践:通过门户创建首个负载均衡器实例
在云平台门户中创建负载均衡器是实现应用高可用的关键第一步。登录控制台后,进入“网络”服务,选择“负载均衡器”并点击“创建实例”。
配置基础参数
填写实例名称、选择区域与虚拟私有云(VPC)。确保子网具备足够的IP地址空间,并开启公网访问以支持外部流量接入。
监听协议与后端服务器组
配置监听器时,选择HTTP或HTTPS协议,设置前端端口(如80)。后端服务器组需绑定至少两台云服务器实例,实现流量分发。
{
"LoadBalancerName": "web-lb",
"Protocol": "HTTP",
"FrontendPort": 80,
"BackendPort": 8080,
"VpcId": "vpc-123456"
}
上述JSON示例定义了负载均衡器的核心配置:前端接收80端口的HTTP请求,并转发至后端8080端口。VPC标识确保资源在同一网络内安全通信。
验证部署结果
创建完成后,系统分配一个公网IP。可通过浏览器访问该IP,确认请求被均匀分发到后端服务器。
第三章:高可用性网络架构设计原则
3.1 可用性集与可用区在负载均衡中的角色
在构建高可用的云架构时,可用性集(Availability Set)和可用区(Availability Zone)是确保服务持续运行的关键组件。它们通过物理资源的隔离与分布,降低单点故障对整体系统的影响。
可用性集的作用机制
可用性集将虚拟机分布在多个容错域和更新域中,确保在维护或硬件故障期间至少有一台实例保持运行。例如,在 Azure 中创建可用性集:
az vm availability-set create \
--name myAvailabilitySet \
--resource-group myResourceGroup \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
上述命令创建一个包含两个容错域和两个更新域的可用性集,提升虚拟机部署的冗余性。
可用区与负载均衡协同
相比可用性集,可用区提供物理位置上的隔离——每个可用区是独立的数据中心。结合负载均衡器,流量可跨区分配,实现区域级容灾。
| 特性 | 可用性集 | 可用区 |
|---|
| 故障隔离级别 | 机架级 | 数据中心级 |
| 地理分布 | 同一区域 | 同一区域内不同位置 |
| 适用场景 | 单数据中心高可用 | 区域级容灾 |
3.2 健康探测机制与故障转移逻辑解析
健康探测机制设计
为确保集群节点的高可用性,系统采用主动式健康探测机制。通过周期性发送心跳请求,检测目标节点的响应状态。探测协议支持HTTP/TCP两种模式,可根据服务类型灵活配置。
type HealthChecker struct {
Interval time.Duration // 探测间隔
Timeout time.Duration // 超时时间
Retries int // 重试次数
}
func (hc *HealthChecker) Check(target string) bool {
for i := 0; i < hc.Retries; i++ {
ctx, cancel := context.WithTimeout(context.Background(), hc.Timeout)
defer cancel()
if resp, err := http.GetWithContext(ctx, "http://"+target+"/health"); err == nil && resp.StatusCode == http.StatusOK {
return true
}
}
return false
}
上述代码实现了一个基础健康检查器,通过设定超时和重试策略避免误判。Interval决定探测频率,Timeout防止阻塞,Retries提升判断准确性。
故障转移触发逻辑
当连续多次探测失败后,系统将该节点标记为“不健康”,并触发故障转移流程。负载均衡器动态更新节点列表,流量自动切换至可用实例,保障服务连续性。
3.3 实践:构建跨区域容灾的负载均衡方案
在高可用架构中,跨区域容灾的负载均衡是保障服务连续性的关键环节。通过将流量智能调度至多个地理区域的后端集群,系统可在单点故障时自动切换。
全局负载均衡器配置
使用DNS级负载均衡(如云厂商提供的Global Load Balancer)实现跨区域流量分发:
{
"regions": ["us-east-1", "ap-southeast-1"],
"health_check_path": "/healthz",
"failover_policy": "geo_proximity"
}
上述配置定义了两个服务区域,并启用基于地理位置的故障转移策略。健康检查路径确保后端服务状态实时监控,一旦某区域服务不可用,流量自动导向最近健康节点。
多活数据中心同步机制
- 数据层采用异步复制,保证最终一致性
- 会话状态通过分布式缓存(如Redis Cluster)跨区共享
- 配置中心统一推送路由规则,确保策略一致
第四章:AZ-104考试重点配置实战
4.1 配置多IP前端实现多应用共存
在高可用架构中,通过为前端服务器绑定多个IP地址,可实现多个独立应用在同一物理机或虚拟机上共存运行,互不干扰。
网络配置示例
# 为网卡添加辅助IP
ip addr add 192.168.1.101/24 dev eth0
ip addr add 192.168.1.102/24 dev eth0
ip addr add 192.168.1.103/24 dev eth0
上述命令为
eth0网卡配置三个不同IP,每个IP可绑定一个Nginx虚拟主机或Docker容器,服务于不同应用。
应用场景与优势
- 隔离不同业务系统的访问入口,提升安全性
- 便于SSL证书按IP部署,避免域名冲突
- 支持基于IP的负载均衡和故障切换
结合反向代理,可实现基于IP的流量路由,增强系统灵活性。
4.2 实现VMSS与负载均衡器集成
在Azure环境中,虚拟机规模集(VMSS)需与负载均衡器集成以实现流量分发和高可用性。通过平台自动创建的标准负载均衡器,可将外部请求均匀分配至各实例。
配置后端地址池关联
VMSS实例通过网络配置文件自动加入负载均衡器的后端池。关键配置如下:
"loadBalancerBackendAddressPools": [
{
"id": "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.Network/loadBalancers/{lb-name}/backendAddressPools/backend-pool"
}
]
该配置确保所有从VMSS创建的NIC接口自动注册到指定后端池,实现动态成员管理。
健康探针与自动修复
负载均衡器通过HTTP或TCP探针检测实例健康状态。异常实例将被自动移出后端池,并触发VMSS自动修复策略替换故障节点,保障服务连续性。
4.3 使用NSG与路由表保障流量安全
在Azure虚拟网络中,网络安全组(NSG)与自定义路由表协同工作,实现精细化的流量控制与路径引导。
NSG规则配置示例
{
"priority": 100,
"sourceAddressPrefix": "10.0.1.0/24",
"destinationPortRange": "80",
"protocol": "Tcp",
"access": "Allow",
"direction": "Inbound"
}
该规则允许来自子网10.0.1.0/24的HTTP流量进入目标资源。优先级数值越低,规则越早执行,确保关键策略优先匹配。
路由表与子网关联
| 路由名称 | 目标地址前缀 | 下一跳类型 |
|---|
| Route-To-Firewall | 0.0.0.0/0 | Virtual Appliance |
通过将路由表绑定至子网,可强制所有出站流量经由防火墙设备,实现集中式安全检测与日志审计。
4.4 实践:通过PowerShell自动化部署LB资源
在Azure环境中,使用PowerShell可高效实现负载均衡器(Load Balancer)资源的自动化部署。通过脚本化方式定义前端IP、后端地址池、探测规则与负载均衡规则,提升部署一致性与可重复性。
部署流程概览
- 登录Azure账户并选择目标订阅
- 创建资源组与虚拟网络
- 配置公共IP用于负载均衡器前端
- 部署负载均衡器并关联健康探测与规则
核心PowerShell代码示例
# 创建公共IP
$publicIP = New-AzPublicIpAddress -Name "lb-public-ip" -ResourceGroupName "rg-demo" `
-Location "EastUS" -AllocationMethod Static -Sku Standard
# 创建前端IP配置
$frontendIP = New-AzLoadBalancerFrontendConfig -Name "frontend" -PublicIpAddress $publicIP
# 创建健康探测
$probe = New-AzLoadBalancerProbeConfig -Name "http-probe" -Protocol http -Port 80 `
-RequestPath "/" -IntervalInSeconds 15 -ProbeCount 2
# 创建负载均衡规则
$lbrule = New-AzLoadBalancerRuleConfig -Name "http-rule" -FrontendIpConfiguration $frontendIP `
-BackendAddressPool $backendPool -Probe $probe -Protocol Tcp -FrontendPort 80 -BackendPort 80
# 创建标准负载均衡器
New-AzLoadBalancer -Name "demo-lb" -ResourceGroupName "rg-demo" -Location "EastUS" `
-FrontendIpConfiguration $frontendIP -BackendAddressPool $backendPool `
-Probe $probe -LoadBalancingRule $lbrule -Sku Standard
上述脚本中,
New-AzPublicIpAddress 创建静态公网IP,确保LB入口稳定;
ProbeConfig 定义健康检查机制,自动隔离异常实例;
LoadBalancingRule 明确流量分发策略。整个过程实现基础设施即代码(IaC),便于版本控制与CI/CD集成。
第五章:5步完成高可用网络架构部署总结
需求分析与拓扑设计
在某金融企业核心系统升级中,首先明确高可用性指标需达到99.99%。基于此,采用双活数据中心架构,通过BGP实现跨站点路由冗余。网络拓扑包含核心层、汇聚层与接入层,核心交换机部署VRRP保障网关冗余。
设备选型与链路规划
关键设备选用支持堆叠与NSF/GR特性的高端交换机,如华为CE6850系列。所有上行链路配置LACP动态聚合,确保单链路故障不影响业务连续性。
冗余协议部署
核心层启用OSPF Graceful Restart机制,避免主备切换时路由震荡。以下为关键配置片段:
# 配置VRRP主备网关
interface Vlanif100
vrrp vrid 1 virtual-ip 192.168.100.1
vrrp vrid 1 priority 120
vrrp vrid 1 track interface GigabitEthernet1/0/1 reduced 30
负载均衡与故障切换测试
使用F5 BIG-IP部署服务器负载均衡,健康检查间隔设为3秒,超时时间9秒。模拟Web服务器宕机后,流量在4.2秒内自动迁移至备用节点。
| 测试项 | 预期结果 | 实测结果 |
|---|
| 链路故障收敛 | <500ms | 380ms |
| 设备主备切换 | <1s | 820ms |
监控与自动化维护
集成Prometheus + Grafana实现全链路监控,自定义告警规则检测接口错包率突增。通过Ansible定期备份配置,确保变更可追溯。