MySQL Operator容器化方案解讀_第1頁(yè)
MySQL Operator容器化方案解讀_第2頁(yè)
MySQL Operator容器化方案解讀_第3頁(yè)
MySQL Operator容器化方案解讀_第4頁(yè)
MySQL Operator容器化方案解讀_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

MySQL容器化拓?fù)浣Y(jié)構(gòu)固定MySQLPodIP可以在K8S上使用Calico網(wǎng)絡(luò)插件實(shí)現(xiàn)。存儲(chǔ)方面使用高性能分布式存儲(chǔ)或者直接掛載本地盤都可達(dá)到要求,這些不在本文做重點(diǎn)介紹。MySQL容器化有同城災(zāi)備需求。對(duì)于MySQL部分,我們使用MySQLMGR單主模式,將MGR節(jié)點(diǎn)分散在本地/同城運(yùn)行,正常情況下主節(jié)點(diǎn)運(yùn)行在本地,災(zāi)備切換時(shí)將主節(jié)點(diǎn)切換至同城。對(duì)于K8S集群部分,我行K8S集群沒(méi)有進(jìn)行跨本地/同城部署,所以MySQLMGR節(jié)點(diǎn)會(huì)分布在兩個(gè)K8S集群運(yùn)行。對(duì)于MySQL服務(wù)暴露部分,在每個(gè)K8S集群上為每個(gè)MGR集群各建立Read、WriteService,通過(guò)K8SService機(jī)制對(duì)外暴露MySQL服務(wù)。整體拓?fù)浣Y(jié)構(gòu)如下所示:MySQLOperator功能邏輯MySQLOperator的功能包括MGR集群創(chuàng)建、集群維護(hù)、CPU內(nèi)存資源升級(jí)、MGR節(jié)點(diǎn)擴(kuò)縮容、節(jié)點(diǎn)遷移等。由于MGR集群跨K8S部署,所以在Operator的邏輯上不能只管控本地資源,還需關(guān)注在同城運(yùn)行的那一部分MGR節(jié)點(diǎn)的情況。MGR集群創(chuàng)建在MySQLMGR集群CR資源定義中包含以下三個(gè)字段:flag字段為primary標(biāo)識(shí)MGR的主應(yīng)該在本地ipList定義部署在本地K8S集群的MGRPod列表,以及具體的PodIP和所在K8S節(jié)點(diǎn)remoteList定義部署在同城K8S集群的MGRPod列表;本地Operator會(huì)通過(guò)該字段中的IP地址嘗試連接同城MGR節(jié)點(diǎn),以判斷同城MGR節(jié)點(diǎn)是否連通以及角色是否正常spec:

flag:

"primary"

ipList:

-

ip:

""

nodeName:

"abc"

remoteList:

-

ip:

""

nodeName:

"abc"在MGR集群創(chuàng)建流程中,兩邊Operator均需確定ipList和remoteList中的PodIP地址均可連通,確定MGR集群所屬的Pod均已啟動(dòng)后才能執(zhí)行MGR集群的創(chuàng)建工作。創(chuàng)建的時(shí)候,flag為primary側(cè)的Operator會(huì)在本K8S集群中選出一個(gè)MGRPod進(jìn)行主節(jié)點(diǎn)的引導(dǎo)啟動(dòng),其余本地Pod和flag為standby側(cè)集群的Pod均啟動(dòng)為從節(jié)點(diǎn)。MGR集群維護(hù)集群維護(hù)功能是為了保證MGR集群按照預(yù)期運(yùn)行,集成了各種異常場(chǎng)景下處理邏輯,主要包括以下幾個(gè)部分:保證Service、PVC、Configmap等需要的K8S資源按照預(yù)期創(chuàng)建保證MySQLPod數(shù)量和運(yùn)行狀態(tài)正常保證MySQLPod的角色標(biāo)簽和實(shí)際的MGR角色一致維持Pod內(nèi)的MySQLMGR進(jìn)程啟動(dòng)判斷MGR主節(jié)點(diǎn)是否切換,并進(jìn)行切主后操作等除了Operator的集群維護(hù)功能,另一個(gè)保證服務(wù)持續(xù)可用的是MySQL自身的MGR機(jī)制。在整體設(shè)計(jì)中,我們對(duì)Operator和MGR兩種機(jī)制管控范圍的做了清晰的邊界劃分:即Operator只保證MGR運(yùn)行所需的環(huán)境正常,如節(jié)點(diǎn)數(shù)、進(jìn)程啟動(dòng)狀態(tài)、配置等正常,但涉及到主節(jié)點(diǎn)切換等MGR機(jī)制內(nèi)部的事情,Operator只做觀察并把最新狀態(tài)反映到CR的Status字段中而不去做干預(yù)。在Operator的設(shè)計(jì)中,只有三種情況會(huì)進(jìn)行主節(jié)點(diǎn)干預(yù):一是集群新建的情況;二是在確認(rèn)所有集群節(jié)點(diǎn)都為從節(jié)點(diǎn)的情況,選出gtid最大的節(jié)點(diǎn)啟動(dòng)為主;三是收到災(zāi)備切換的請(qǐng)求,會(huì)將主切到flag=primary的一側(cè)。MGR集群運(yùn)維操作Operator支持對(duì)MGR集群進(jìn)行一些常規(guī)的運(yùn)維操作,包括本地/同城節(jié)點(diǎn)的上線、下線,Pod內(nèi)存、CPU資源的擴(kuò)縮容、Pod使用鏡像的更換以及MySQL的配置文件更新等。Operator最重要的任務(wù)是維持集群正常運(yùn)行,對(duì)于這些運(yùn)維操作在設(shè)計(jì)時(shí)采用了一個(gè)穩(wěn)妥的方案:所有的運(yùn)維操作必須基于維護(hù)流程判斷集群狀態(tài)正常(有且僅有一個(gè)主節(jié)點(diǎn),其余節(jié)點(diǎn)均運(yùn)行正常且為從節(jié)點(diǎn))的情況下才可進(jìn)行在狀態(tài)轉(zhuǎn)換流程中設(shè)置操作的優(yōu)先級(jí),先進(jìn)行優(yōu)先級(jí)高的操作,如新加節(jié)點(diǎn)的優(yōu)先級(jí)高于刪除節(jié)點(diǎn)的優(yōu)先級(jí)如果涉及到類似于多個(gè)節(jié)點(diǎn)添加的批量操作,Operator會(huì)將批量操作拆分為單個(gè)操作的順序執(zhí)行,每步操作完成后確認(rèn)集群狀態(tài)正常才能繼續(xù)下一步操作整體流程如下圖所示:MGR集群災(zāi)備切換災(zāi)備切換包含兩部分:第一部分是MGR集群的主節(jié)點(diǎn)切換到同城集群;第二部分是客戶端網(wǎng)絡(luò)流量打到同城集群。對(duì)于第二部分的實(shí)現(xiàn)有手動(dòng)改客戶端訪問(wèn)地址、更改DNS指向、使用代理轉(zhuǎn)發(fā)等多種方法,本文不做討論。對(duì)于第一部分,Operator做了一個(gè)便捷化的實(shí)現(xiàn),在檢測(cè)到flag字段由standy變?yōu)閜rimary的時(shí)候會(huì)主動(dòng)發(fā)起一次切主操作,試圖將主切換到現(xiàn)在的primary這邊。要注意的是,雖然flag

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論