容災方案設計參考:AWS災難恢復白皮書
最近在做一個容災方案,了解到AWS有一個容災的白皮書。
于是,今天粗略把 AWS 的容災白皮書讀了一遍,白皮書中介紹了基于 AWS 的幾種容災方案。這些方案不僅僅適用于基于 AWS 的系統(tǒng),也適用于通用系統(tǒng)。現(xiàn)將其關(guān)鍵點摘要下來,感興趣的同學可以讀一遍原文。
容災兩個術(shù)語
白皮書中提到了兩個關(guān)于容災的術(shù)語( industry terms)
- Recovery Time Objective
- Recovery Point Objective
恕我孤陋寡聞,之前也參與過容災的設計,但是關(guān)于這兩個術(shù)語還是***次知道。這兩個術(shù)語在維基百科有定義,不確定是 AWS 開發(fā)者添加的詞條還是很早就存在。話說我司每個產(chǎn)品也都有容災方案,但是還沒有人能總結(jié)出這么精準的 industry terms。所以說亞馬遜作為這個領域的leader還是有道理的。
1. RTO 恢復耗時
主站點故障后,備站點恢復到達到OLA(operational level agreement )所耗費的時間。
用另外一句話就是主站點故障后,備站點恢復到正常提供服務狀態(tài)所需要的時間。
站在用戶視角,RTO是系統(tǒng)服務中斷時間。
舉個例子,如果主站點在12:00 故障了,系統(tǒng)容災的RTO時8小時,那么系統(tǒng)必須在20:00前恢復并正常提供服務。
2. RPO 恢復時間點
主站點故障后,備站點能夠恢復到過去哪個時間點的數(shù)據(jù)。
換句話說,備站點恢復后,與主站點相比,有多少數(shù)據(jù)丟失。
站在用戶視角,RPO時數(shù)據(jù)丟失的量。
舉個例子,如果主站點在12:00故障了,系統(tǒng)容災的RPO是1小時,那么系統(tǒng)恢復后,其數(shù)據(jù)必須是到11:00的。也就是說允許丟失12:00~11:00 之間的數(shù)據(jù)。
所以以后在評判或設計一個容災方案時候,先問這兩個問題:
- RTO 值是多少
- RPO 值是多少
如果回答不上來,那么這個方案肯定是沒想明白的。
容災方案
白皮書中將容災方案按照RTO以及成本排序,稱為容災方案圖譜。

Backup and Restore
備份恢復是最常見的一種容災手段,將主站點數(shù)據(jù)備份到與主站點隔離的存儲設備。當生產(chǎn)環(huán)境故障后,能夠在備站點將數(shù)據(jù)恢復。
AWS提供了一系列的高可靠存儲服務:
- Amazon S3,簡單對象存儲,11個9可靠性
- Amazon Glacier,如果覺得S3太貴的話
- Amazon VTS,虛擬磁帶存儲,如果要保存巨大且時間長的數(shù)據(jù)的話
使用Amazon的這些存儲服務,加上備份恢復工具,就可以實現(xiàn)一個容災系統(tǒng)。
備份示意圖
恢復示意圖

#p#
Pilot Light
Pilot Light 是一個裝置,這個是一個類似點火器的裝置,如煤氣灶的點火器,通過點火器可以把煤氣灶點燃,然后就可以做飯了:)
Pilot Light用到容災系統(tǒng)中,要表達的意思是,在備站點部署一個服務,通過這個服務可以將整個系統(tǒng)運行起來。
準備
備站點安裝數(shù)據(jù)庫服務,并建立與主站點之間的數(shù)據(jù)復制關(guān)系
主站點的操作系統(tǒng)或文件做成 AMI ,在備站點恢復時候直接加載為EC2
定期測試備站點的恢復[5]

恢復
- 使用 AMI 創(chuàng)建 EC2
- 根據(jù)情況加大數(shù)據(jù)服務器的配置
- 增加額外的數(shù)據(jù)服務器(如果有需要)
- 配置系統(tǒng)(一些配置不是通過 AMI 導入就可以生效的)
- 將 DNS 映射為備站點IP地址

Warm Standby
Warm Standby 是在備站點復制了主站點,但是它們還是有差別的:
- 備站點服務運行但是不對外提供服務
- 備站點的服務器配置是最小配置(These servers can be running on a minimum-sized fleet of Amazon EC2 instances on the smallest sizes possible) ( fleet of Amazon EC2 好霸氣~~)
準備
- 備站點安裝數(shù)據(jù)庫服務并同步數(shù)據(jù)
- 備站點申請最小配置的EC2安裝并app
- 定時執(zhí)行app的升級和補丁,保持與主站點一致

恢復
- 增加EC2數(shù)量(橫向擴展)(擴成與主站點一致)
- 增加EC2配置(縱向擴展)(擴成與主站點一致)
- 增加數(shù)據(jù)庫實例數(shù)(擴成與主站點一致)
切換 DNS 映射到備站點

#p#
Multi Site
Multi Site 指的是 active-active 的容災方案。主備站點同時對外提供服務,由DNS根據(jù)負載決定將請求轉(zhuǎn)發(fā)到哪個站點。
準備
- 將主站點系統(tǒng)復制到備站點,服務器和配置都相同
- 在DNS上配置路由策略

恢復
- 手動切換(DNS上切換)
- 或者配置DNS failover
Fail Back
當主站點故障修復后,我們還需要將服務切換到主站點,這個過程稱為 fail back 。
不同的容災方案,fail back的方法不一樣。
Backup and Restore
- 凍結(jié)備站點的修改操作
- 備份數(shù)據(jù)
- 恢復到主站點
- 切換DNS指向主站點
- 解凍
Pilot light, warm standby, and multi-site
- 凍結(jié)備站點的修改操作
- 將數(shù)據(jù)復制方向改為從主向備
- 切換DNS指向主站點
- 解凍