內部部署已建立 Always On 可用性群組(兩節點),並透過 VPN 連通 Azure。將 Azure SQL VM 加入 Windows 叢集與可用性群組時,新增跨網段副本失敗。
現有可用性群組已設定 Listener(僅含內部部署子網 IP)。直接新增跨子網節點時,Listener 無法自動擴充至新子網 IP,導致叢集資源衝突。
-- 在 SSMS 中:可用性群組 → 可用性群組接聽程式 → 右鍵刪除
-- 或 T-SQL
ALTER AVAILABILITY GROUP [AG_Name] REMOVE LISTENER 'Listener_Name';
-- 建立新 Listener,指定兩個子網 IP
-- 內部部署子網:10.0.1.x / Azure 子網:10.1.1.x
CREATE AVAILABILITY GROUP [AG_Name]
ADD LISTENER 'Listener_Name' (
WITH IP (('10.0.1.100', '255.255.255.0'), ('10.1.1.100', '255.255.255.0')),
PORT = 1433
);
┌─────────────────────┐ VPN / ExpressRoute ┌─────────────────────┐
│ 內部部署資料中心 │ ◄────────────────────────► │ Azure 雲端 │
│ ┌───────────────┐ │ │ ┌───────────────┐ │
│ │ SQL Node 1 │ │ │ │ SQL Node 3 │ │
│ │ (Primary) │ │ │ │ (Async Replica)│ │
│ └───────────────┘ │ │ └───────────────┘ │
│ ┌───────────────┐ │ │ │
│ │ SQL Node 2 │ │ │ Listener IP: │
│ │ (Sync Replica)│ │ │ - 10.0.1.100 (On-prem)│
│ └───────────────┘ │ │ - 10.1.1.100 (Azure) │
│ │ │ │ │
│ Listener (舊) │ │ │
│ - 10.0.1.100 │ │ │
└────────┼────────────┘ └────────────────────┘
│
▼ 問題:Listener 無 Azure IP,用戶端無法解析雲端副本
nslookup Listener_Name 應回傳兩 IP)| 項目 | 建議 |
|---|---|
| 同步模式 | 跨區域建議非同步認可,避免延遲影響主節點效能 |
| 容錯移轉 | 跨區域關閉自動容錯移轉,改為人工決策 |
| 備份策略 | 在次要副本(Azure)執行備份,減輕主節點負載 |
| 監控 | 部署 Extended Events / DMV 監控同步延遲、重做佇列 |
Always On 跨內部部署與 Azure 混合部署的核心關鍵在於 Listener 必須包含所有子網 IP。遵循「刪除舊 Listener → 新增副本 → 重建雙 IP Listener」流程,即可順利完成混合雲高可用性架構部署。