首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL Server Always On 跨內部部署與 Azure 混合部署:Listener 重建關鍵步驟

     編輯:程式設計綜合問答

問題情境

內部部署已建立 Always On 可用性群組(兩節點),並透過 VPN 連通 Azure。將 Azure SQL VM 加入 Windows 叢集與可用性群組時,新增跨網段副本失敗。

根本原因

現有可用性群組已設定 Listener(僅含內部部署子網 IP)。直接新增跨子網節點時,Listener 無法自動擴充至新子網 IP,導致叢集資源衝突。

解決方案:Listener 重建三步驟

  1. 刪除現有 Listener
    -- 在 SSMS 中:可用性群組 → 可用性群組接聽程式 → 右鍵刪除
    -- 或 T-SQL
    ALTER AVAILABILITY GROUP [AG_Name] REMOVE LISTENER 'Listener_Name';
  2. 新增跨子網副本
    • 在 Azure VM 安裝 SQL Server、加入 Windows 叢集
    • 於可用性群組屬性 → 「副本」頁籤 → 「新增副本」
    • 指定 Azure 節點、同步模式(建議非同步)、自動容錯移轉關閉
  3. 重建 Listener 並包含雙子網 IP
    -- 建立新 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,用戶端無法解析雲端副本

驗證清單

  • ☐ 兩子網 IP 均在 Listener DNS 記錄中(nslookup Listener_Name 應回傳兩 IP)
  • ☐ 內部部署用戶端連線字串使用 Listener 名稱,可正常連線 Primary
  • ☐ Azure 用戶端同樣使用 Listener 名稱,流量正確路由至雲端副本
  • ☐ 容錯移轉測試:強制切換至 Azure 節點,驗證 Listener IP 切換正常
  • ☐ 防火牆/NSG 開放 1433、5022(端點)、健康檢查埠

最佳實務補充

項目建議
同步模式跨區域建議非同步認可,避免延遲影響主節點效能
容錯移轉跨區域關閉自動容錯移轉,改為人工決策
備份策略在次要副本(Azure)執行備份,減輕主節點負載
監控部署 Extended Events / DMV 監控同步延遲、重做佇列

結語

Always On 跨內部部署與 Azure 混合部署的核心關鍵在於 Listener 必須包含所有子網 IP。遵循「刪除舊 Listener → 新增副本 → 重建雙 IP Listener」流程,即可順利完成混合雲高可用性架構部署。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved