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