利用DNS服務平滑切換網路服務
Categories:
假設服務域名為example.domain, 原伺服器 IP 位址為A, 由於伺服器遷移或 IP 更換, 新伺服器 IP 位址為B, 為了保證使用者無感知, 可以透過 DNS 服務平滑切換網路服務.
- 原服務狀態,
example.domain解析到 IP 位址A - 過渡狀態,
example.domain解析到 IP 位址A和B - 新服務狀態,
example.domain解析到 IP 位址B, 移除 IP 位址A
說明: 當使用者獲得兩個解析位址時, 客戶端會選擇其中一個位址進行連線, 當連線失敗時, 會嘗試其它位址, 以此保證服務的可用性.
由於 DNS 解析存在快取, 為了保證平滑切換, 需要在過渡狀態保持一段時間, 以確保所有快取失效.
我這裡需要遷移的是 dns 服務, 可以在過渡狀態中設定DNS重寫, 加快遷移過程.
A 服務重寫規則:

B 服務重寫規則:

原遷移過程拓展為:
- 原服務狀態,
example.domain解析到 IP 位址A - 過渡狀態,
example.domain在dns A服務中重寫到A和B, 在dns B服務中重寫到B - 新服務狀態,
example.domain解析到 IP 位址B, 移除 IP 位址A
當使用者仍在使用dns A服務時, 可以獲得兩個位址, 有一半的機率會選擇dns A服務.
另外一半的機率會切換到dns B服務, dns B服務故障時切換回dns A. dns B服務未故障時, 將只會獲得一個位址, 因而使用者會停留在dns B服務中.
這樣我們可以逐步的減少dns A服務的資源消耗, 而不是直接停止, 實現更平滑的遷移.