SQL Database 建立容錯移轉群組

  • 666
  • 0

在高可用性的程式架構上,至少需要針對應用程式和資料庫各建立一組服務,並且搭配負載平衡來分散流量,並且可以在其中一台伺服器無法運作時轉移到可用的服務上,本文就針對資料庫部分說明在 Azure 上面建立 SQL Database 的容錯移轉群組來建置高可用性架構。

前言

在高可用性的程式架構上,至少需要針對應用程式和資料庫各建立一組服務,並且搭配負載平衡來分散流量,並且可以在其中一台伺服器無法運作時轉移到可用的服務上,本文就針對資料庫部分說明在 Azure 上面建立 SQL Database 的容錯移轉群組來建置高可用性架構。

實做

首先點選服務可以再選單找到容錯移轉群組,此時就來新增一個群組

因為我們沒有事先建立次要伺服器,所以先來建立一個。讀寫容錯移轉原則是設定當主要伺服器無法正常連線的時候要自動切換伺服器或是手動,寬限期則是主要伺服器無法連線多久才會觸發自動移轉的機制,最小單位是一小時,如果服務服務中斷這麼久,這邊建議可以搭配別的機制或服務隨時監控系統是否正常,在不正常的時候有警示機制,收到的時候可以請相關人員儘速來手動切換,當然也可以做到更自動化,但是可容許的時間就要注意不要設定太短,避免因為稍微異常就持續的切換伺服器,反而使得系統無法正常運作。

這邊輸入相關的登入資訊,有一點需要注意的是資料中心需要和主要伺服器不同才可以建立成容錯移轉群組,比如說主要是東亞,次要就可以選擇東南亞或是日本。

接下來選擇要加入容錯移轉的資料庫

都設定完成之後就可以建立群組了,這邊會根據資料庫數量和大小時間會有所不同,因為產生複寫的資料庫,需要一點時間複製資料庫過去另一台伺服器。

點進去之後可以看到已經建立好一台伺服器並且有複寫的機制,再往下可以取得相關的連線資訊,就可以針對程式調整連線資訊,當伺服器異常時候,程式就不需要調整連線字串了。

手動切換移轉

需要手動切換的時候點選群組之後可以在上面看到容錯移轉的功能,點下去之後就可以發現主要伺服器和次要伺服器已經交換 (主要和次要的資料中心已不同),交換的過程會有短暫的時間無法正常連線,而因為 DNS 關係可能也需要一點時間才會生效,程式也需要重新連線才會跟新的伺服器連線,才有辦法存取。

結論

複寫出來的伺服器為 Read-Only,因此也可以設計成讀寫分離的架構來分散系統的負擔,如此也可以增加服務的高可用性,針對資料查詢都由複寫出來的機器來負擔。架構設計上可以透過雲端的彈性,快速的建置服務,本文介紹的也僅是最簡單的應用方式,針對系統可以接受的 Down Time 範圍和成本考量上,可以設計出更多的情境來達到高可用性。

參考資料

  1. 執行異地分散式資料庫
  2. 在 Azure 入口網站中設定主動式異地複寫和容錯移轉 (Azure SQL Database)