第一章:Azure负载均衡器概述
Azure 负载均衡器是微软 Azure 提供的一项高可用性网络服务,用于在多个虚拟机实例之间分配入站或出站流量,以确保应用程序的可伸缩性和可靠性。它工作在 OSI 模型的第 4 层(传输层),支持 TCP 和 UDP 协议,能够有效处理大量并发连接。
核心功能与应用场景
- 通过健康探针自动检测后端实例状态,实现故障转移
- 支持公共和内部两种负载均衡器类型,适应不同网络架构需求
- 提供高吞吐量和低延迟的流量分发能力,适用于 Web 服务器、微服务等场景
基本配置示例
以下是一个创建公共标准负载均衡器的 Azure CLI 示例:
# 创建资源组
az group create --name MyResourceGroup --location eastus
# 创建公共 IP 地址
az network public-ip create --resource-group MyResourceGroup --name MyPublicIP --sku Standard
# 创建负载均衡器
az network lb create \
--resource-group MyResourceGroup \
--name MyLoadBalancer \
--public-ip-address MyPublicIP \
--frontend-ip-name MyFrontendPool \
--backend-pool-name MyBackendPool \
--sku Standard
上述命令将创建一个标准层级的公共负载均衡器,并初始化前端 IP 配置和后端地址池。其中
--sku Standard 指定使用标准 SKU,提供更高的可用性和跨区域支持。
负载均衡器类型对比
| 特性 | 公共负载均衡器 | 内部负载均衡器 |
|---|
| 访问方式 | 通过公网 IP 接收入站流量 | 仅限虚拟网络内部访问 |
| 典型用途 | 对外提供 Web 服务 | 内部微服务通信 |
| IP 类型 | 公共 IP | 私有 IP |
graph TD
A[客户端请求] --> B{负载均衡器}
B --> C[VM 实例 1]
B --> D[VM 实例 2]
B --> E[VM 实例 3]
C --> F[响应返回]
D --> F
E --> F
第二章:基础配置与核心组件详解
2.1 负载均衡器工作原理与SLA保障机制
负载均衡器作为分布式系统的核心组件,负责将客户端请求合理分发至后端服务器集群,提升系统可用性与响应效率。其核心机制包括流量调度算法、健康检查和故障隔离。
调度算法与实现示例
常见的调度策略有轮询、加权轮询与最小连接数。以下为基于Go语言的简单轮询实现:
type RoundRobin struct {
servers []string
index int
}
func (r *RoundRobin) Next() string {
server := r.servers[r.index%len(r.servers)]
r.index++
return server
}
该代码通过取模运算实现请求的均匀分发,
index递增确保每次选择下一个节点,适用于服务节点性能相近的场景。
SLA保障机制
为保障服务等级协议(SLA),负载均衡器需集成:
- 实时健康检查:定期探测后端服务状态
- 自动熔断:异常节点自动下线
- 会话保持:确保用户请求一致性
结合动态权重调整与超时重试策略,可有效降低延迟波动,提升系统整体稳定性。
2.2 公共和内部负载均衡器的部署场景对比
在云架构设计中,公共与内部负载均衡器服务于不同的网络边界需求。公共负载均衡器面向互联网,用于分发外部用户请求,通常配置公网IP并结合SSL终止来保障安全接入。
典型应用场景
- 公共LB:Web应用对外服务、API网关入口
- 内部LB:微服务间通信、数据库读写分离集群
配置差异示例(以AWS为例)
{
"Scheme": "internal", // internal 或 internet-facing
"Subnets": ["subnet-123", "subnet-456"],
"SecurityGroups": ["sg-789"]
}
该配置中,
Scheme值为
internal时仅限VPC内访问,适用于后端服务;若为
internet-facing,则需关联弹性IP供外网访问。
核心特性对比
| 特性 | 公共LB | 内部LB |
|---|
| 网络可达性 | 互联网可访问 | VPC内部访问 |
| 安全性控制 | 依赖WAF、安全组严格规则 | 基于私有子网和ACL隔离 |
2.3 前端IP配置与后端池连接实践
在负载均衡架构中,前端IP配置是流量入口的关键环节。通过为负载均衡器绑定公网IP,可实现外部请求的统一接入。
前端IP配置示例
{
"frontend": {
"ip": "203.0.113.10",
"port": 80,
"protocol": "HTTP"
}
}
上述配置定义了监听在203.0.113.10:80的HTTP服务入口,所有到达该IP的请求将被转发至后端服务器池。
后端服务器池定义
- 192.168.1.101:8080(权重:5)
- 192.168.1.102:8080(权重:3)
- 192.168.1.103:8080(权重:4)
负载均衡器依据权重分配流量,确保高可用性与性能优化。通过健康检查机制,自动剔除不可用节点,保障服务连续性。
2.4 配置健康探针与负载分发规则
在微服务架构中,确保服务实例的可用性与流量合理分发至关重要。健康探针用于检测容器运行状态,而负载分发规则决定了请求如何被路由。
健康探针配置
Kubernetes 支持三种探针:liveness、readiness 和 startupProbe。以下是一个典型的探针配置示例:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
该配置表示容器启动后30秒开始,每隔10秒通过HTTP请求
/healthz检查服务存活状态,超时为5秒。若探测失败,Kubelet将重启容器。
负载分发策略
服务流量可通过Service的
spec.type和Ingress规则控制。支持轮询、最少连接、IP哈希等算法。例如,在Ingress Nginx中通过注解设置:
nginx.ingress.kubernetes.io/load-balance: round-robinnginx.ingress.kubernetes.io/upstream-hash-by: $remote_addr
2.5 使用Azure门户快速创建标准负载均衡器
在Azure门户中创建标准负载均衡器可通过图形化界面高效完成,适用于需要高可用性和可扩展性的生产环境。
创建流程概览
- 登录Azure门户,搜索“负载均衡器”并选择“创建”。
- 选择类型为“公共”或“内部”,并指定SKU为“标准”。
- 配置前端IP、后端池、运行状况探针和负载均衡规则。
关键配置示例
{
"frontendIP": {
"name": "FrontendIP",
"publicIPAddress": "myPublicIP"
},
"backendPool": {
"name": "BackendPool",
"vmInstances": ["VM1", "VM2"]
}
}
上述配置定义了前端IP关联的公网地址及后端虚拟机实例集合。frontendIP用于接收外部流量,backendPool中的VM将分担请求负载。
应用场景与优势
标准负载均衡器支持跨可用性区域部署,提供更高容错能力。结合运行状况探针,可自动隔离故障实例,确保服务连续性。
第三章:高可用性与网络性能优化
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 TCP重传与空闲超时设置调优
TCP连接的稳定性依赖于合理的重传机制和空闲超时配置。不当的参数可能导致延迟升高或连接过早断开。
核心参数说明
tcp_retries1:指定在标记为“应答不足”前的最小重试次数,默认为3tcp_retries2:触发连接终止前的最大重传次数,默认为15tcp_keepalive_time:连接空闲后,开启保活探测前等待时间(秒)
典型内核调优配置
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 8
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
上述配置将空闲连接探测提前至20分钟,每15秒发送一次探测,最多3次未响应则断开。降低
tcp_retries2可加快异常连接释放,避免资源堆积。
适用场景对比
| 场景 | 推荐重试次数 | 空闲超时(s) |
|---|
| 高延迟网络 | 8~10 | 1800 |
| 长连接服务 | 6~8 | 1200 |
| 短连接密集型 | 3~5 | 600 |
3.3 结合NSG和路由表实现安全流量控制
在Azure网络架构中,网络安全组(NSG)与自定义路由表协同工作,可实现精细化的流量控制策略。NSG负责过滤进出虚拟机的流量,而路由表则决定数据包的转发路径。
核心组件协同机制
- NSG通过规则集控制入站和出站流量,支持按IP、端口、协议进行细粒度控制
- 路由表定义子网级别的数据流路径,可引导流量经过防火墙等中间设备
典型配置示例
{
"nsgRules": [
{
"name": "Allow-HTTP",
"direction": "Inbound",
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "80",
"access": "Allow",
"priority": 100
}
],
"routes": [
{
"name": "ToFirewall",
"addressPrefix": "0.0.0.0/0",
"nextHopType": "VirtualAppliance",
"nextHopIpAddress": "10.0.1.4"
}
]
}
上述配置中,NSG允许HTTP流量进入,同时路由表将所有出站流量重定向至IP为10.0.1.4的虚拟防火墙设备,实现流量 inspection。
第四章:高级功能与混合架构集成
4.1 配置出站规则与SNAT端口管理
在云网络环境中,出站规则决定了私有子网中实例访问外部网络的行为。其中,SNAT(源网络地址转换)是实现私网IP对外通信的关键机制。
SNAT规则配置示例
{
"snatPool": [
{
"sourceAddress": "192.168.10.0/24",
"translatedAddress": "203.0.113.10",
"portOverloading": "Enabled",
"protocol": "TCP"
}
]
}
上述配置将来自
192.168.10.0/24网段的流量映射到公网IP
203.0.113.10,并启用端口过载以支持多连接复用。
端口分配策略
- 静态端口分配:每个私有IP独占一组端口,适用于高并发场景
- 动态端口池:按需分配SNAT端口,提升公网IP利用率
- 端口块预分配:批量分配端口块,降低运行时开销
4.2 跨区域负载均衡与流量管理器协同
在大规模分布式系统中,跨区域负载均衡需与全局流量管理器协同工作,以实现低延迟和高可用性。流量管理器通过健康探测动态感知各区域服务状态,并结合DNS策略将请求导向最优区域。
健康检查配置示例
{
"healthCheck": {
"path": "/healthz",
"intervalInSeconds": 30,
"timeoutInSeconds": 10,
"unhealthyThreshold": 3
}
}
该配置定义了每30秒对后端节点的
/healthz路径发起一次健康探测,超时时间为10秒,连续3次失败则标记为不可用,确保故障区域被快速隔离。
流量调度策略对比
| 策略类型 | 适用场景 | 优先级 |
|---|
| 地理定位 | 区域低延迟访问 | 高 |
| 加权轮询 | 灰度发布 | 中 |
4.3 与虚拟机规模集(VMSS)深度集成
Azure 容器实例(ACI)虽以轻量著称,但在需要弹性伸缩和持久化管理的场景中,与虚拟机规模集(VMSS)的集成显得尤为重要。通过将 ACI 作为临时扩展实例与 VMSS 配合使用,可在负载高峰时无缝补充计算能力。
自动扩缩容策略配置
可借助 Azure 自动化工具定义基于指标的扩缩规则:
{
"apiVersion": "2021-04-01",
"type": "Microsoft.Insights/autoscalesettings",
"name": "vmss-autoscale",
"location": "eastus",
"properties": {
"profiles": [
{
"name": "Auto created scale condition",
"capacity": { "minimum": "2", "maximum": "10", "default": "2" },
"rules": [
{
"metricTrigger": {
"metricName": "Percentage CPU",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT5M",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": 75
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT1M"
}
}
]
}
]
}
}
上述 JSON 定义了当 CPU 使用率持续 5 分钟超过 75% 时,VMSS 实例数增加 1 台,冷却时间为 1 分钟,确保资源平稳增长。
混合部署架构优势
- VMSS 提供稳定、可控的长期运行实例
- ACI 承担突发任务或短期批处理作业
- 统一通过 Azure API 管理生命周期,提升运维效率
4.4 混合云场景下ILB和ER的联动配置
在混合云架构中,内部负载均衡(ILB)与外部路由(ER)的协同工作是保障跨云服务稳定通信的关键。通过合理配置ILB与ER,可实现私有云与公有云资源间的高效流量调度。
配置逻辑说明
首先,在VPC内部署ILB以接收来自ER的流量。ER负责将本地数据中心的请求路由至云上VPC,并指向ILB作为后端入口。
{
"LoadBalancer": {
"Type": "Internal",
"Subnet": "subnet-123456",
"Listeners": [
{
"Protocol": "TCP",
"Port": 80,
"TargetGroup": "tg-ilb-backend"
}
]
},
"RouteTable": {
"DestinationCidr": "10.0.0.0/16",
"Target": "ilb-endpoint",
"RouteType": "Private"
}
}
上述配置定义了ILB监听器及路由规则,确保ER传入的流量被正确导向内部服务集群。
网络连通性保障
- 启用VPC对等连接或云专线,确保ER与ILB所在网络互通
- 配置安全组策略,仅允许可信IP通过ER访问ILB
- 启用健康检查机制,自动隔离异常后端实例
第五章:AZ-104考试要点与实战经验总结
核心考试域覆盖
AZ-104考试重点涵盖四大领域:Azure管理(15-20%)、虚拟网络(30-35%)、计算资源(25-30%)和存储(15-20%)。考生需熟练掌握资源组生命周期、VNet对等互连配置及NSG规则优先级应用。
典型故障排查场景
在一次生产环境中,虚拟机无法访问外部API。通过以下命令检查有效路由和网络安全组:
# 查看网络接口的有效路由
az network nic show-effective-route-table --resource-group Prod-RG --name vm-web-nic
# 检查NSG应用的规则
az network nic list-effective-nsg --resource-group Prod-RG --name vm-web-nic
自动化部署实践
使用ARM模板批量部署Web服务器时,建议采用参数化设计。关键参数包括location、vmSize和adminPassword。部署前务必在Azure Cloud Shell中验证模板语法:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"type": "string",
"defaultValue": "Standard_B2s"
}
}
}
权限与RBAC最佳实践
- 遵循最小权限原则,避免直接分配Owner角色
- 使用Azure Policy强制标签合规性,例如要求所有资源包含CostCenter标签
- 定期审查Azure AD登录日志,识别异常访问模式
高可用架构设计案例
某电商系统采用跨区域复制+流量管理器实现全局高可用。关键组件分布如下:
| 组件 | 主区域(East US) | 备用区域(West Europe) |
|---|
| 虚拟机规模集 | 启用自动扩展 | 热备实例运行 |
| 数据库 | Azure SQL 主节点 | 异步副本 |
| DNS路由 | Traffic Manager(优先级模式) | 自动故障转移 |