多雲與負載均衡 DNS
High Contrast
Dark Mode
Light Mode
Sepia
Forest
3 min read652 words

多雲與負載均衡 DNS

當業務規模增長,單台服務器不夠用,就需要 DNS 層面的負載均衡和高可用架構。

DNS 負載均衡原理

多個 A 記錄指向不同服務器:
A    example.com    192.0.2.1    (服務器 1)
A    example.com    192.0.2.2    (服務器 2)
A    example.com    192.0.2.3    (服務器 3)
DNS 循環返回(Round Robin):
用戶 1 的查詢 → 返回 192.0.2.1
用戶 2 的查詢 → 返回 192.0.2.2
用戶 3 的查詢 → 返回 192.0.2.3
用戶 4 的查詢 → 返回 192.0.2.1(循環)

優點: 簡單,不需要專用設備 缺點: 不感知服務器健康狀態(即使服務器宕機,仍可能被分配)


帶健康檢查的 DNS 負載均衡

更高級的 DNS 服務(Cloudflare、Route 53、NS1)支持健康檢查:

正常狀態:
A    example.com    192.0.2.1    (健康 ✅)
A    example.com    192.0.2.2    (健康 ✅)
服務器 1 宕機後:
DNS 服務商的健康檢查發現 192.0.2.1 無響應
自動從 DNS 響應中移除這條記錄
所有流量自動切換到 192.0.2.2

Cloudflare Load Balancing

費用: $5/月起(需要付費計劃)

路徑: Traffic → Load Balancing → Create Load Balancer

設置步驟: 1. 創建 Origin Pool(服務器組) 2. 為每個服務器設置健康檢查(HTTP/HTTPS 端點) 3. 創建 Load Balancer,指向 Origin Pool 4. 設置故障切換規則(當主要 Pool 不健康時,切換到備用 Pool)


AWS Route 53 路由策略

Route 53 提供多種路由策略:

策略 說明 用途
Simple 固定 IP 單服務器
Weighted 按權重分配流量 A/B 測試、灰度發布
Failover 主備切換 高可用
Latency 路由到延遲最低的區域 全球部署
Geolocation 按用戶地理位置路由 內容本地化
Multivalue 多個健康的 IP 基礎負載均衡

Weighted Routing 用於灰度發布:

A    example.com    Weight=90    192.0.2.1    (舊版本,90% 流量)
A    example.com    Weight=10    192.0.2.2    (新版本,10% 流量)
驗證新版本沒問題後,逐步調整比例:
70/30 → 50/50 → 10/90 → 0/100

主備切換(Failover)

設置一個主服務器和一個備用服務器,主服務器宕機時自動切換:

Cloudflare 設置方法:

  1. 創建 Origin Pool 1(主):服務器 A
  2. 創建 Origin Pool 2(備):服務器 B 或靜態頁面
  3. Load Balancer 設置: - Priority 1:Pool 1(主) - Priority 2:Pool 2(備,只在主不健康時啟用)

最簡單的備用方案:

主服務器宕機時,顯示一個靜態的維護頁面(存放在 Cloudflare Pages 或 S3),而非直接報錯。


TTL 策略對切換速度的影響

TTL 設置 DNS 緩存時間 故障後恢復時間
86400(24h) 最多 24 小時 很慢,不適合需要快速切換的場景
3600(1h) 最多 1 小時 一般
300(5min) 最多 5 分鐘 適合需要快速響應的服務
60(1min) 最多 1 分鐘 接近實時切換

代價: TTL 越低,DNS 服務器收到的查詢越多(無法從緩存返回),對 DNS 服務器負載更高。

建議: - 生產環境穩定記錄:TTL = 3600 - 需要快速切換的記錄:TTL = 300 - 計劃維護前降低:TTL = 60


下一節地理路由與多區域部署——讓全球用戶都連接到最近的服務器。