Azure 负载均衡器 #

什么是 Azure 负载均衡器? #

Azure 负载均衡器是第 4 层(传输层)负载均衡器,用于在多个后端实例间分发网络流量。

text
┌─────────────────────────────────────────────────────────────┐
│                    负载均衡器概览                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  特点                                                        │
│  ├── 第 4 层负载均衡                                        │
│  ├── 高可用性                                               │
│  ├── 自动扩展                                               │
│  ├── 健康探测                                               │
│  └── 多种分发算法                                           │
│                                                             │
│  SKU 类型                                                    │
│  ├── 基本 (Basic): 免费但功能有限                           │
│  └── 标准 (Standard): 推荐,功能完整                        │
│                                                             │
│  类型                                                        │
│  ├── 公共: 分发来自互联网的流量                             │
│  └── 内部: 分发 VNet 内部流量                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

SKU 对比 #

基本 vs 标准 #

text
┌─────────────────────────────────────────────────────────────┐
│                    SKU 对比                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能              基本 SKU         标准 SKU                │
│  ─────────────────────────────────────────────────────────  │
│  SLA               无               99.99%                  │
│  后端池            可用性集         VM/VMSS/IP              │
│  健康探测          基本             高级                     │
│  可用区            不支持           支持                     │
│  HA 端口           不支持           支持                     │
│  出站规则          不支持           支持                     │
│  监控              基本             Azure Monitor           │
│  成本              免费             按使用计费               │
│                                                             │
│  推荐:使用标准 SKU                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建负载均衡器 #

使用 Azure CLI #

bash
# 创建资源组
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 myFrontEnd \
  --backend-pool-name myBackEndPool \
  --sku Standard

创建健康探测 #

bash
# 创建健康探测
az network lb probe create \
  --resource-group myResourceGroup \
  --lb-name myLoadBalancer \
  --name myHealthProbe \
  --protocol tcp \
  --port 80 \
  --interval 5 \
  --threshold 2

创建负载均衡规则 #

bash
# 创建负载均衡规则
az network lb rule create \
  --resource-group myResourceGroup \
  --lb-name myLoadBalancer \
  --name myHTTPRule \
  --protocol tcp \
  --frontend-port 80 \
  --backend-port 80 \
  --frontend-ip-name myFrontEnd \
  --backend-pool-name myBackEndPool \
  --probe-name myHealthProbe

添加后端实例 #

bash
# 创建网络接口并添加到后端池
az network nic create \
  --resource-group myResourceGroup \
  --name myNic1 \
  --vnet-name myVNet \
  --subnet mySubnet \
  --network-security-group myNSG

# 将 NIC 添加到后端池
az network nic ip-config address-pool add \
  --resource-group myResourceGroup \
  --nic-name myNic1 \
  --ip-config-name ipconfig1 \
  --lb-name myLoadBalancer \
  --address-pool myBackEndPool

健康探测 #

探测类型 #

text
┌─────────────────────────────────────────────────────────────┐
│                    健康探测类型                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  TCP 探测                                                    │
│  ├── 检查端口是否开放                                       │
│  ├── 简单快速                                               │
│  └── 适合非 HTTP 服务                                       │
│                                                             │
│  HTTP 探测                                                   │
│  ├── 发送 HTTP GET 请求                                     │
│  ├── 检查响应状态码                                         │
│  └── 适合 Web 应用                                          │
│                                                             │
│  HTTPS 探测                                                  │
│  ├── 发送 HTTPS GET 请求                                    │
│  ├── 支持证书验证                                           │
│  └── 适合安全 Web 应用                                      │
│                                                             │
│  探测参数                                                    │
│  ├── interval: 探测间隔 (秒)                                │
│  ├── threshold: 不健康阈值                                  │
│  └── port: 探测端口                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

配置 HTTP 探测 #

bash
# 创建 HTTP 健康探测
az network lb probe create \
  --resource-group myResourceGroup \
  --lb-name myLoadBalancer \
  --name myHTTPProbe \
  --protocol http \
  --port 80 \
  --path /health \
  --interval 15 \
  --threshold 3

负载均衡规则 #

规则类型 #

text
┌─────────────────────────────────────────────────────────────┐
│                    规则类型                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  负载均衡规则                                                │
│  ├── 定义流量分发方式                                       │
│  ├── 前端端口 → 后端端口                                    │
│  └── 支持多种协议                                           │
│                                                             │
│  入站 NAT 规则                                               │
│  ├── 端口转发                                               │
│  ├── 前端端口 → 特定后端实例                                │
│  └── 用于管理访问                                           │
│                                                             │
│  出站规则                                                    │
│  ├── 控制出站流量                                           │
│  ├── SNAT 配置                                              │
│  └── 仅标准 SKU                                             │
│                                                             │
│  HA 端口                                                     │
│  ├── 所有端口负载均衡                                       │
│  ├── 仅标准 SKU                                             │
│  └── 用于网络虚拟设备                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建 NAT 规则 #

bash
# 创建入站 NAT 规则
az network lb inbound-nat-rule create \
  --resource-group myResourceGroup \
  --lb-name myLoadBalancer \
  --name mySSHRule \
  --protocol tcp \
  --frontend-port 22 \
  --backend-port 22 \
  --frontend-ip-name myFrontEnd

创建出站规则 #

bash
# 创建出站规则
az network lb outbound-rule create \
  --resource-group myResourceGroup \
  --lb-name myLoadBalancer \
  --name myOutboundRule \
  --frontend-ip-configs myFrontEnd \
  --protocol All \
  --idle-timeout 15

分发算法 #

哈希分发 #

text
┌─────────────────────────────────────────────────────────────┐
│                    分发算法                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  五元组哈希                                                  │
│  ├── 源 IP                                                  │
│  ├── 源端口                                                 │
│  ├── 目标 IP                                                │
│  ├── 目标端口                                               │
│  └── 协议                                                   │
│                                                             │
│  会话持久性                                                  │
│  ├── None: 无持久性                                         │
│  ├── Client IP: 同一客户端 IP                               │
│  └── Client IP and Protocol: 同一客户端 IP 和协议           │
│                                                             │
│  浮动 IP (Direct Server Return)                             │
│  ├── 后端直接响应客户端                                     │
│  ├── 降低负载均衡器负载                                     │
│  └── 用于 SQL AlwaysOn                                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

配置会话持久性 #

bash
# 创建带会话持久性的规则
az network lb rule create \
  --resource-group myResourceGroup \
  --lb-name myLoadBalancer \
  --name myRule \
  --protocol tcp \
  --frontend-port 80 \
  --backend-port 80 \
  --frontend-ip-name myFrontEnd \
  --backend-pool-name myBackEndPool \
  --probe-name myHealthProbe \
  --persistent-session ClientIP

内部负载均衡器 #

创建内部 LB #

bash
# 创建内部负载均衡器
az network lb create \
  --resource-group myResourceGroup \
  --name myInternalLB \
  --vnet-name myVNet \
  --subnet mySubnet \
  --frontend-ip-name myFrontEnd \
  --backend-pool-name myBackEndPool \
  --sku Standard

# 内部 LB 使用私有 IP
az network lb frontend-ip create \
  --resource-group myResourceGroup \
  --lb-name myInternalLB \
  --name myFrontEnd \
  --vnet-name myVNet \
  --subnet mySubnet \
  --private-ip-address 10.0.1.100

跨区域负载均衡 #

全局负载均衡 #

text
┌─────────────────────────────────────────────────────────────┐
│                    跨区域负载均衡                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  架构:                                                      │
│                                                             │
│                    ┌─────────────┐                          │
│                    │  全局 LB    │                          │
│                    └──────┬──────┘                          │
│                           │                                 │
│           ┌───────────────┼───────────────┐                │
│           ▼               ▼               ▼                │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │ 区域 LB 1   │  │ 区域 LB 2   │  │ 区域 LB 3   │        │
│  │ (East US)   │  │ (West US)   │  │ (Europe)    │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
│                                                             │
│  优势:                                                      │
│  ├── 全球流量分发                                           │
│  ├── 区域故障转移                                           │
│  └── 低延迟访问                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

最佳实践 #

设计建议 #

text
┌─────────────────────────────────────────────────────────────┐
│                    设计最佳实践                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 使用标准 SKU                                             │
│     └── 获得完整功能和 SLA                                  │
│                                                             │
│  2. 配置健康探测                                             │
│     └── 及时检测不健康实例                                  │
│                                                             │
│  3. 使用可用区                                               │
│     └── 提高可用性                                          │
│                                                             │
│  4. 合理设置探测间隔                                         │
│     └── 平衡响应速度和负载                                  │
│                                                             │
│  5. 监控指标                                                 │
│     └── 使用 Azure Monitor                                  │
│                                                             │
│  6. 配置出站规则                                             │
│     └── 控制出站连接                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

安全建议 #

text
┌─────────────────────────────────────────────────────────────┐
│                    安全最佳实践                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 使用 NSG 限制流量                                        │
│     └── 仅开放必要端口                                      │
│                                                             │
│  2. 使用内部 LB 隔离内部服务                                 │
│     └── 避免公网暴露                                        │
│                                                             │
│  3. 配置健康探测路径                                         │
│     └── 使用专用健康检查端点                                │
│                                                             │
│  4. 监控异常流量                                             │
│     └── 设置警报                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

下一步 #

现在你已经掌握了负载均衡器的使用,接下来学习 应用程序网关 了解第 7 层负载均衡!

最后更新:2026-03-29