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

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

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

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

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

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

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

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