本文分兩部分:部分1 和 部分2。部分1 介紹 AWS,部分2 介紹阿里雲和OpenStack雲。
2. 阿里雲
2.1 阿里雲各產品的HA和DR能力
阿里雲為全世界多個地域提供雲計算服務,每個地域(Region)都包含多個可用區(Avzone)。 同一個地域下的可用區都被設計為相互之間網絡延遲很小(3ms 以內)以及故障隔離的單元。
SLB: 當前提供的負載均衡實例大多是多可用區實例,主備實例在同城不同可用區機房,當主實例機房出現故障,能及時進行切換,來實現容災和服務的高可用性。

RDS:
- 雙機高可用版RDS:也就是RDS單可用區版本,是指RDS實例的主備節點處於相同的可用區。如果ECS和RDS部署在相同的可用區,網絡延時更小。在主實例出現故障時候可以進行主備切換,具有高可用和容災特性。兩個實例運行在同一個可用區下的兩台物理服務器上,可用區內機櫃、空調、 電路、網絡都有冗余。通過半同步的數據復制方式和高效的 HA 切換機制,RDS 為用戶提供了高於物理服務器極限的數據庫可用性。

- 多可用區RDS:
為了提供比單可用區實例更高的可用性,RDS 支持多可用區實例(也叫做同城雙機房或者同城容災實例 )。多可用區實例將主備實例部署在不同的可用區,當一個可用區(A) 出現故障時流量可以在短時間內切換到另一個可用區(B)。 整個切換過程對用戶透明,應 用代碼無需變更。
注意:發生容災切換時應用到數據庫的連接會斷開,需要應用重新連接 RDS。只有部分地域有多可用區RDS。


- 跨域容災實例:RDS 多可用區實例的容災能力局限在同地域的不同可用區之間。為了提供更高的可用性, RDS 還支持跨地域的數據容災。 用戶可以將地域 A 的 RDS 實例 A’通過數據傳輸(Data Transmission)異步復制到地域 B 的 RDS 實例 B’(實例 B’是一個完整獨立的 RDS 實 例,擁有獨 立 的連接地址、賬號和權限)。
因此,為了支持跨域容災,RDS之間還可以用DTS同步和遷移數據,即分別在可用區A和B購買雙機高可用RDS,然后創建DTS同步。
配置了跨域容災實例后,當實例 A’所在地域發生短期不可恢復的重大故障時,用戶在另外一個地域的實例 B’隨時可以進行容災切換。切換完成后,用戶通過修改應用程序中的數 據庫連接配置,可以將應用請求轉到實例 B’上,進而獲得高於地域極限的數據庫可用性。


RDS 數據復制方式有以下三種方式:
- 異步復制(Async):應用發起更新(含增加、刪除、修改操作)請求,Master 完成相應操作后立即 響應應用,Master 向 Slave 異步復制數據。因此異步復制方式下, Slave 不可用不影響主庫上的操 作,而 Master 不可用有較小概率會引起數據不一致。
- 強同步復制(Sync):應用發起更新(含增加、刪除、修改操作)請求,Master 完成操作后向 Slave 復制數據,Slave 接收到數據后向 Master 返回成功信息,Master 接到 Slave 的反饋后再響應 應用。Master 向 Slave 復制數據是同步進行的,因此 Slave 不可用會影響 Master 上的操作,而 Master 不可用不會引起數據不一致。
- 半同步復制(Semi-Sync):正常情況下數據復制方式采用強同步復制方式,當 Master 向 Slave 復 制數據出現異常的時候(Slave 不可用或者雙節點間的網絡異常),Master 會暫停對應用的響應,直 到復制方式超時退化成異步復制。如果允許應用在此時更新數據,則 Master 不可用會引起數據不一 致。當雙節點間的數據復制恢復正常(Slave 恢復或者網絡恢復),異步復制會恢復成強同步復制。 恢復成強同步復制的時間取決於半同步復制的實現方式,阿里雲數據庫 MySQL5.5 版和 MySQL5.6 版有所不同。
2.2 阿里雲的容災部署架構
2.2.1 基礎容災架構
在阿里雲平台上,對於中小型企業,業務量不是特別大,對異地容災要求不是特別強烈,則可采用以下高可用方案,可以在同一地域下選擇購買雲產品。建議在VPC網絡環境下,選擇同一可用區或者同地域不同可用區的雲產品。

2.2.2 同城容災架構
對中大型用戶來說,希望業務系統要求具備同城容災的能力,可以考慮在同城不同可用區之間對原有應用架構做一套完整的備份。如果某個可以去出現像IDC機房斷電或者火災等故障時,可以通過前端切換DNS來及時恢復業務。

備注:我認為從Intenet到右邊方框的線條應該為為虛線,因為右邊的環境在正常情況下不提供服務,而只有在左邊環境不可用后切換到右邊環境。
2.2.3 跨城市容災
對於一些大型企業在業務安全全性、服務可用性和數據可靠性方面既要求具備同城容災又要求具備異地容災時,可以采用這種容災架構方式既可以解決單機房故障也可以應對像地震等災難性故障。
不同地域之間可以采用阿里雲的高速通道進行私網通信,保障數據庫之間的數據實時同步,將數據傳輸延遲降到最低。故障發生時可以通過前端DNS實現秒級切換,及時恢復業務。

說明:圖上華東的兩個環境可以同時運行,因為都是采用可用區A里面的 RDS-Master,當可用區A不可用時,會切換到使用可用區B 中的 RDS-Standy;當華東整個區域不可用時,會切換到華南區域中的環境。
3. OpenStack雲
3.1 OpenStack 中的有關概念

要在OpenStack環境中實現AWS那樣的AZ架構還是非常不容易的,主要困難包括但不限於:
- 網絡層:AZ IDC之間的大二層物理網絡,SDN 網絡,跨區域網絡等
- 存儲層:對象存儲跨區域復制;數據備份到對象存儲,現在的cinder backup 功能還是很弱;其它各種備份功能;
- 平台層:跨IDC的OpenStack部署架構,跨AZ的虛機遷移,大規模節點納管,CMP實現等
在實際實現中,看到較多的案例都是每個IDC內搭建一個OpenStack region,然后在region 內實現以機架為單元的可用區。
3.2 容災
3.2.1 容災架構

3.2.2 容災場景
根據AWS 上容災的四個場景,對OpenStack 雲容災做下總結:
| 容災場景 | OpenStack 雲 | 不足和問題 |
| 備份&恢復 | 1. 將虛機的系統盤打包為自有鏡像,保存到對象存儲中 2. 對磁盤做快照 3. 對磁盤做備份 |
1. 如果對象存儲不能跨區域復制的話,那么無法跨區域拷貝自有鏡像 2. 磁盤備份的效率比較低,而且受限於對象存儲的跨區域復制能力 |
| Pilot Light(Cold Standny) | 在另一個region上創建數據庫實例,並設置數據同步機制 | 1. 數據同步方式是采用同步的還是異步的,如何處理數據不一致 2. 恢復是需要回復應用環境,但受限於跨區域的應用系統鏡像拷貝能力,很多情況下需要手工搭建應用環境 |
| 溫備 (Warm Standby) | 在另一個region 上創建完整的但規格較小的熱備環境,但不提供服務 | 1. 跨數據中心的流量切換手段。如果是公網,可以借助公有雲的智能DNS;如果是內網,則需要搭建跨數據中心的負載均衡。 2. 數據同步問題同上 3. 虛機鏡像問題同上 |
| 熱備 (Hot Standby) | 在另一個region 上創建完整但規格較小的運行環境,承擔少部分生產流量 | 1. 跨region 流量分流手段。如果是公網,可以借助公有雲的智能DNS;如果是內網,則需要搭建跨數據中心的負載均衡。 2. 數據同步問題同上 3. 虛機鏡像問題同上 |
參考鏈接:
