大型數(shù)據(jù)庫(kù)上云能從阿里云易搭上學(xué)到些什么
經(jīng)過(guò)這些年企業(yè)IT上云,云平臺(tái)已經(jīng)成為了企業(yè)最關(guān)鍵的IT基礎(chǔ)設(shè)施了。很多企業(yè)甚至全面學(xué)習(xí)互聯(lián)網(wǎng)企業(yè)的經(jīng)驗(yàn),通過(guò)云平臺(tái)將應(yīng)用架構(gòu)做了徹底的云化,通過(guò)領(lǐng)域建模等將數(shù)據(jù)庫(kù)也拆分為規(guī)模很小,數(shù)量龐大的領(lǐng)域數(shù)據(jù)庫(kù)了,這些數(shù)據(jù)庫(kù)規(guī)模不大,大部分可以使用云上的RDS服務(wù)。這種轉(zhuǎn)型讓企業(yè)的IT基礎(chǔ)設(shè)施與IT運(yùn)維變得十分扁平化,也變得很簡(jiǎn)單。不過(guò)大量的傳統(tǒng)行業(yè)企業(yè)的應(yīng)用系統(tǒng)還無(wú)法與互聯(lián)網(wǎng)企業(yè)一樣,數(shù)據(jù)庫(kù)依然是IT系統(tǒng)里比較重的組件。這些企業(yè)大多存在數(shù)據(jù)庫(kù)上云的需求,只不過(guò)因?yàn)榧夹g(shù)原因,目前還不敢把未能小型化的數(shù)據(jù)庫(kù)完全遷移到云上。
將數(shù)據(jù)庫(kù)這個(gè)“重”IT組件也上云管理,是很多傳統(tǒng)企業(yè)用戶(hù)近些年在努力做的事情,也有一些企業(yè)已經(jīng)把一些“重”數(shù)據(jù)庫(kù)遷移上云,不過(guò)上云后的效果不盡如人意。
他們?cè)诎岩恍┥逃脭?shù)據(jù)庫(kù)遷移到云上的時(shí)候,遇到了很多問(wèn)題。首先必然會(huì)遇到的一個(gè)問(wèn)題是云平臺(tái)對(duì)商用數(shù)據(jù)庫(kù)原本是不支持的,而且因?yàn)樯虡I(yè)競(jìng)爭(zhēng)的問(wèn)題,哪怕是企業(yè)內(nèi)部部署的私有云,云平臺(tái)供應(yīng)商都不大愿意納管競(jìng)品商用數(shù)據(jù)庫(kù)產(chǎn)品。商用數(shù)據(jù)庫(kù)上云往往只能憋屈地使用云平臺(tái)上的ECS,在上面進(jìn)行手工部署。哪怕通過(guò)自定義鏡像快速部署編排好數(shù)據(jù)庫(kù)實(shí)例的ECS,在使用的時(shí)候也受到種種限制。比如云盤(pán)的性能不穩(wěn)定導(dǎo)致數(shù)據(jù)庫(kù)運(yùn)行不穩(wěn)定;底層虛擬機(jī)的IO優(yōu)化沒(méi)有考慮數(shù)據(jù)庫(kù)的場(chǎng)景導(dǎo)致數(shù)據(jù)庫(kù)丟失IO出現(xiàn)壞塊;云盤(pán)容量受限導(dǎo)致數(shù)據(jù)庫(kù)出現(xiàn)存儲(chǔ)空間不足;數(shù)據(jù)庫(kù)備份受限于網(wǎng)絡(luò)帶寬不足而無(wú)法在維護(hù)窗口完成備份,等等等等。
前些年也有很多企業(yè)和我交流過(guò)這個(gè)問(wèn)題,不過(guò)這些年少了不少,很多企業(yè)都繞道走了。前陣子和一個(gè)金融企業(yè)交流云上的國(guó)產(chǎn)數(shù)據(jù)庫(kù)的性能問(wèn)題的時(shí)候,我問(wèn)他們這么做的目的是什么。他們覺(jué)得以后用了國(guó)產(chǎn)或者開(kāi)源數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)實(shí)例的數(shù)量會(huì)翻倍,不讓IT盡可能扁平化,今后將面臨更大的挑戰(zhàn)。從這個(gè)角度上看在未來(lái)較大型的數(shù)據(jù)庫(kù)上云依然是很多企業(yè)無(wú)法避免的事情。
實(shí)際上讓公有云或者私有云支持國(guó)產(chǎn)商用數(shù)據(jù)庫(kù)是沒(méi)有任何問(wèn)題的,數(shù)年前阿里云推出的云速搭CADT,可以通過(guò)復(fù)雜的模板支持針對(duì)Oracle RAC在內(nèi)的復(fù)雜應(yīng)用系統(tǒng)的編排。從阿里云實(shí)現(xiàn)對(duì)Oracle RAC的支持,我們也可以學(xué)習(xí)到很多大型數(shù)據(jù)庫(kù)系統(tǒng)上云的一些思路。支撐阿里云支持Oracle RAC的組件包括:
- HAVIP:High Available Virtual IP Address,簡(jiǎn)稱(chēng) HAVIP。阿里云虛擬網(wǎng)絡(luò)實(shí)現(xiàn)的是基于二層的高可用 IP,通用、簡(jiǎn)單、易用。HAVIP 以 secondary ip 的形式存在網(wǎng)卡上,可以有單獨(dú)的轉(zhuǎn)發(fā)策略,通過(guò) HAVIP 可以實(shí)現(xiàn)浮動(dòng) IP,適用于 HA 主備容災(zāi)或者雙活高可用的場(chǎng)景;
- 專(zhuān)有網(wǎng)絡(luò) VPC:基于阿里云創(chuàng)建的自定義私有網(wǎng)絡(luò), 不同的專(zhuān)有網(wǎng)絡(luò)之間二層邏輯隔離,可以在自己創(chuàng)建的專(zhuān)有網(wǎng)絡(luò)內(nèi)創(chuàng)建和管理云產(chǎn)品實(shí)例,比如 ECS、負(fù)載均衡、RDS 等。在創(chuàng)建前,您需要結(jié)合具體業(yè)務(wù),規(guī)劃VPC 和交換機(jī)的數(shù)量及網(wǎng)段等;
- 彈性網(wǎng)卡 ENI:彈性網(wǎng)卡 ENI(Elastic Network Interface)是一種可以綁定到專(zhuān)有網(wǎng)絡(luò) VPC 類(lèi)型 ECS 實(shí)例上的虛擬網(wǎng)卡。通過(guò)彈性網(wǎng)卡,可以實(shí)現(xiàn)高可用集群搭建、低成本故障轉(zhuǎn)移和精細(xì)化的網(wǎng)絡(luò)管理。
- ECS 7 代存儲(chǔ)增強(qiáng)型實(shí)例:能夠提供高性能的數(shù)據(jù)庫(kù)服務(wù)器,特點(diǎn)是IO延時(shí)較低,IOPS較高;
- ESSD 塊存儲(chǔ):阿里云 ESSD(Enhanced SSD)云盤(pán)結(jié)合 25 GE 網(wǎng)絡(luò)和 RDMA技術(shù),提供單盤(pán)高達(dá) 100 萬(wàn)的隨機(jī)讀寫(xiě)能力和單路低時(shí)延性能,在此方案中ESSD塊存儲(chǔ)使用的是NVME共享盤(pán)作為底層磁盤(pán)資源;
- NVME共享盤(pán):支持 NVMe 協(xié)議的 ESSD 云盤(pán)被稱(chēng)為 NVMe 共享盤(pán)。NVMe 共享盤(pán)支持多 ECS 實(shí)例并發(fā)讀寫(xiě)訪(fǎng)問(wèn),具備高可靠、高并發(fā)、高性能等特點(diǎn)。為 ECS實(shí)例提供了多實(shí)例掛載和 IO 攔截功能。共享盤(pán)是為了RAC的多實(shí)例并發(fā)讀寫(xiě)共享存儲(chǔ);
- 云企業(yè)網(wǎng) CEN:云企業(yè)網(wǎng)(Cloud Enterprise Network,簡(jiǎn)稱(chēng) CEN)是阿里云提供的一款能夠快速構(gòu)建混合云和分布式業(yè)務(wù)系統(tǒng)的全球網(wǎng)絡(luò)服務(wù),為用戶(hù)提供優(yōu)質(zhì)、高效、穩(wěn)定的網(wǎng)絡(luò)傳輸環(huán)境,幫助用戶(hù)打造一張具有企業(yè)級(jí)規(guī)模和通信能力的云上網(wǎng)絡(luò)。適用于集團(tuán)企業(yè)、全球網(wǎng)絡(luò)等場(chǎng)景;
l轉(zhuǎn)發(fā)路由器 TR(Transit Router):提供連接網(wǎng)絡(luò)實(shí)例、自定義路由表、添加路由條目、添加路由策略等豐富的網(wǎng)絡(luò)互通和路由管理功能;該功能可以與CEN結(jié)合,實(shí)現(xiàn)Oracle RAC的INTERCONNECT 多播網(wǎng)絡(luò);
- 云速搭 CADT:通過(guò)模板實(shí)現(xiàn)Oracle rac自動(dòng)編排。
在云平臺(tái)上以接近云原生的方式實(shí)現(xiàn)一個(gè)大型Oracle RAC的編排還是有點(diǎn)費(fèi)勁的,哪怕是把Oracle RAC搭建好,并能夠承受高負(fù)載都不是一件很容易的事情。在云納管大型關(guān)鍵數(shù)據(jù)庫(kù)的時(shí)候,一般會(huì)采用裸金屬服務(wù)器或者虛擬化云主機(jī)兩種模式。如何對(duì)這兩種部署模式進(jìn)行標(biāo)準(zhǔn)化設(shè)計(jì)并針對(duì)大型關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化,其實(shí)是要事先考慮好的。阿里云的這個(gè)方案可以給我們一些啟示-網(wǎng)絡(luò)和存儲(chǔ)是其中最為關(guān)鍵的因素。
存儲(chǔ)方面,阿里可以提供高性能低延時(shí)的ESSD塊存儲(chǔ)。在我們自己的云環(huán)境里,也可以購(gòu)買(mǎi)一些商用的高性能分布式存儲(chǔ)來(lái)構(gòu)建存儲(chǔ)資源池,專(zhuān)用于大型數(shù)據(jù)庫(kù)存放數(shù)據(jù)。這些存儲(chǔ)在優(yōu)化上必須滿(mǎn)足塊存儲(chǔ)的所有特征,能夠支持通用負(fù)載,這樣才能盡可能避免分布式存儲(chǔ)底層的不兼容而導(dǎo)致數(shù)據(jù)庫(kù)丟失IO,出現(xiàn)壞塊,引發(fā)數(shù)據(jù)安全的故障。在云主機(jī)的物理機(jī)上直接連接集中式存儲(chǔ)用于存儲(chǔ)數(shù)據(jù)庫(kù)的文件也是一種在云平臺(tái)技術(shù)無(wú)法滿(mǎn)足大型關(guān)系型數(shù)據(jù)庫(kù)需求時(shí)的一種常見(jiàn)做法,當(dāng)年在數(shù)據(jù)庫(kù)遷移到VMWARE資源池的時(shí)候已經(jīng)有不少企業(yè)試用過(guò)這個(gè)方法,效果還不錯(cuò)。無(wú)論使用哪種方法,確保IO的可靠性和穩(wěn)定性是關(guān)鍵。IO不能丟失,IO延時(shí)必須穩(wěn)定,并且最好不高于20毫秒,是云平臺(tái)必須為大型數(shù)據(jù)庫(kù)上云提供的保證。
另外一個(gè)方面是網(wǎng)絡(luò),對(duì)于集中式數(shù)據(jù)庫(kù)還好,網(wǎng)絡(luò)問(wèn)題不突出。對(duì)于Oracle RAC這樣對(duì)于集群網(wǎng)絡(luò)性能和可靠性要求十分高的場(chǎng)景,網(wǎng)絡(luò)要求就很高了。另外分布式數(shù)據(jù)庫(kù)對(duì)于集群網(wǎng)絡(luò)的性能與延時(shí)也是十分敏感的,必須為集群網(wǎng)絡(luò)提供高帶寬,低延時(shí)的虛擬網(wǎng)絡(luò)支持。實(shí)際上普通的大型數(shù)據(jù)庫(kù)對(duì)于網(wǎng)絡(luò)也有較高的要求,存儲(chǔ)網(wǎng)絡(luò)(使用IPSAN的場(chǎng)景)、備份網(wǎng)絡(luò)的帶寬和延時(shí)決定了數(shù)據(jù)庫(kù)是否有足夠的性能和易于運(yùn)維管理。
除此之外,數(shù)據(jù)庫(kù)的前端連著應(yīng)用,后端連著數(shù)據(jù)中臺(tái),還和其他云上云下的業(yè)務(wù)系統(tǒng)保持著復(fù)雜的關(guān)系,因此對(duì)于云上的轉(zhuǎn)發(fā)路由器TR也有十分高的要求。而高可用切換、雙活等需求又要求VIP能夠很方便的漂移。虛擬大二層網(wǎng)絡(luò)的能力決定了雙活是否能跨機(jī)房甚至跨數(shù)據(jù)中心,這些都是要考慮的。阿里云的VPC、CEN-TR解決了這方面的后顧之憂(yōu)。
對(duì)于分布式數(shù)據(jù)庫(kù),還有一個(gè)麻煩的事情,那就是云存儲(chǔ)的多副本與分布式數(shù)據(jù)庫(kù)的多副本之間的多重副本機(jī)制帶來(lái)的問(wèn)題。很多企業(yè)的分布式數(shù)據(jù)庫(kù)在云上是跑在云存儲(chǔ)上的,二者的副本機(jī)制會(huì)產(chǎn)生很高的疊加效應(yīng),既浪費(fèi)了存儲(chǔ)資源,又影響了數(shù)據(jù)庫(kù)的性能。較為大型的高負(fù)載的分布式數(shù)據(jù)庫(kù)在云上部署最好采用裸金屬部署的模式,如果必須使用云主機(jī),可以考慮使用集中式存儲(chǔ)或者使用單副本的云存儲(chǔ)。