與其他公有云比較,Azure有一個(gè)最大特點(diǎn)是Region成對(Peer)建設(shè),例如中國區(qū)的北一和東一,北二和東二,global的香港(EastAsia)和新加坡(SoutheastChina)。
Azure利用Peer的兩個(gè)Region,可以實(shí)現(xiàn)數(shù)據(jù)的底層復(fù)制,無需用戶干預(yù),達(dá)到數(shù)據(jù)異地容災(zāi)的目的。這個(gè)配置的優(yōu)勢在于,對業(yè)務(wù)應(yīng)用透明,用戶無需從應(yīng)用層進(jìn)行數(shù)據(jù)容災(zāi),簡化了容災(zāi)數(shù)據(jù)管理。
1
Azure數(shù)據(jù)異地容災(zāi)方式
Azure提供的異地容災(zāi)方式是GRS或RA-GRS。通常情況下,為了避免數(shù)據(jù)腦裂,異地容災(zāi)的輔助站點(diǎn)數(shù)據(jù)不能訪問使用(GRS)或者只能只讀(RA-GRS)。
數(shù)據(jù)的復(fù)制方式選擇在創(chuàng)建存儲(chǔ)賬戶時(shí)選擇,創(chuàng)建后也可以修改(ZRS與LRS、GRS不能轉(zhuǎn)化,不在此討論范圍,未來會(huì)有對應(yīng)的GZRS復(fù)制方式):
當(dāng)選擇GRS或RA-GRS時(shí),數(shù)據(jù)將存放在兩個(gè)Peer站點(diǎn)(一主一備):
不同之處在于:
當(dāng)選擇GRS時(shí),從存儲(chǔ)賬戶屬性查看服務(wù)終結(jié)點(diǎn)只有主服務(wù)終結(jié)點(diǎn):
而當(dāng)我們在存儲(chǔ)賬戶的配置里將復(fù)制修改為RA-GRS后:
再去查看終結(jié)點(diǎn),可以發(fā)現(xiàn),多出了輔助服務(wù)終結(jié)點(diǎn):
但是,輔助服務(wù)終結(jié)點(diǎn)的數(shù)據(jù)只能用作讀取,不能進(jìn)行增刪改等寫操作。
當(dāng)用戶由于種種原因,需要將業(yè)務(wù)切到輔助站點(diǎn),需要使用輔助站點(diǎn)數(shù)據(jù)時(shí),需要通過開case的方式由后臺(tái)切換。通常這個(gè)時(shí)間比較長,導(dǎo)致RTO不可控。
2
存儲(chǔ)賬戶主動(dòng)故障轉(zhuǎn)移
功能介紹
近期,在Global Azure開通了存儲(chǔ)賬戶主動(dòng)故障轉(zhuǎn)移的Preview,通過這個(gè)功能,用戶可自由切換GRS或RA-GRS的主站點(diǎn)和輔助站點(diǎn),實(shí)現(xiàn)自助化數(shù)據(jù)訪問轉(zhuǎn)移操作。
這個(gè)操作在存儲(chǔ)賬戶的異地復(fù)制里進(jìn)行:
進(jìn)行故障轉(zhuǎn)移有一定要求:
存儲(chǔ)賬戶的復(fù)制模式為GRS或RA-GRS
Disk建議通過Azure Backup或ASR進(jìn)行轉(zhuǎn)移
File和Table建議使用AzCopy進(jìn)行轉(zhuǎn)移
建議Blob啟用軟刪除(Soft Delete)保證數(shù)據(jù)安全
操作演示
在存儲(chǔ)賬戶里創(chuàng)建一個(gè)容器,并上傳文件:
在存儲(chǔ)賬戶的異地復(fù)制里,拉到最下方,點(diǎn)擊準(zhǔn)備進(jìn)行故障轉(zhuǎn)移(可以看到東亞為主要站點(diǎn),東南亞為輔助站點(diǎn)):
輸入“是”確認(rèn)開始轉(zhuǎn)移:
故障轉(zhuǎn)移開始:
大約需要10多分鐘,故障轉(zhuǎn)移完成:
檢查存儲(chǔ)賬戶屬性,可以發(fā)現(xiàn),數(shù)據(jù)已轉(zhuǎn)移到東南亞,并且復(fù)制方式轉(zhuǎn)化為LRS(可以重新配置):
檢查blob狀態(tài),訪問正常,URL沒有發(fā)生變化,無需更改應(yīng)用的訪問路徑:
至此,故障轉(zhuǎn)移完成。
3
總結(jié)
故障轉(zhuǎn)移原理并不復(fù)雜,其實(shí)就是通過DNS解析的變化,將主服務(wù)終結(jié)點(diǎn)指向輔助站點(diǎn),并且將輔助站點(diǎn)的數(shù)據(jù)提升為可操作。整個(gè)過程不涉及數(shù)據(jù)復(fù)制,所以理論上需要花費(fèi)的時(shí)間和數(shù)據(jù)量大小無關(guān)。
功能雖然簡單,但可以滿足很多需求,不止是故障轉(zhuǎn)移。例如,要通過一塊非托管磁盤創(chuàng)建托管磁盤,要求目標(biāo)盤和源盤在一個(gè)region;這時(shí)候如果源盤在peer region,就可以通過這個(gè)方式實(shí)現(xiàn)快速轉(zhuǎn)移。
目前此功能還在Preview,使用時(shí)要注意如下點(diǎn):
GRS的復(fù)制是異步,所以故障轉(zhuǎn)移后的數(shù)據(jù)可能存在一定差異,需要從應(yīng)用層規(guī)劃容忍
轉(zhuǎn)移過程中,會(huì)出現(xiàn)數(shù)據(jù)短暫不能訪問,要提前規(guī)劃業(yè)務(wù)停止時(shí)間
操作過程中可能會(huì)出現(xiàn)容器界面出錯(cuò)等小bug,轉(zhuǎn)移完成后會(huì)自動(dòng)恢復(fù)
如果容器訪問策略設(shè)置為專有,完成后可能會(huì)無法訪問,重新設(shè)置為blob或公開,再設(shè)置為專有即可
總體來說,此功能給了用戶非常大的自主操作空間,希望能盡快GA,特別是在Azure Chian落地。