時間:2023-11-28 來源: 作者:hfw.cc 我要糾錯
前言
大家好,今天我們?yōu)榇蠹彝扑]一套基于 Ansible 開發(fā)的,,自動化部署及擴(kuò)容 openGauss 的腳本工具:Ansible for openGauss(以下簡稱 AFO),。
通過AFO,,我們只需簡單修改一些配置文件,即可快速部署多種架構(gòu)模式的 openGauss,,以及對已有架構(gòu)進(jìn)行自動化擴(kuò)容,。
解決部署痛點(diǎn)
如果你有按照官方文檔部署一套 openGauss 的經(jīng)歷,你會發(fā)現(xiàn)不論是單點(diǎn)還是集群,,均需做不少的前期工作,。例如要根據(jù) CPU 和操作系統(tǒng),下載對應(yīng)版本的安裝包,。又需要根據(jù)不同的 Linux 操作系統(tǒng),,做一些額外配置。手工部署在這里不僅低效,,而且容易有錯漏,。如果是多節(jié)點(diǎn)的部署,,手工部署的弱勢會被進(jìn)一步放大,。
我開發(fā)這套 Ansible 腳本的目標(biāo),就是盡可能地覆蓋部署前,、部署中和部署后的場景,,并且把手工部署過程中遇到的一些坑,也通過自動化來解決掉,。降低 openGauss 的部署門檻,,推動 openGauss 的普及。
例如在 openEuler 20.03 系統(tǒng)里部署 openGauss 5.0,,你會遇到 readline-devel 這個依賴包的版本是 8,,而 openGauss 5.0 需要的是 libreadline.so.7,導(dǎo)致安裝過程失敗,。我查找到解決方法后,,加入到部署流程中,自動幫大家把這個坑給填了,。
在給未部署 CM 的架構(gòu)做擴(kuò)容時,,需要在主備之間做一次 switchover 后才能安裝 CM。這些我們也加入到自動化流程中,免除了大家遇到這些問題還要花時間查找解決方法的麻煩,。
部署過程中,,有需要在 root 和 omm 賬號之間多次切換的操作,Ansible 里用 become_user 就可以輕松自動切換,。這些都是手工部署過程中的痛點(diǎn),。
已實(shí)現(xiàn)的功能
總結(jié)下來,目前我們這個工具能實(shí)現(xiàn)以下功能:
提供一個專屬的 ansible-docker 子項(xiàng)目,,只要控制機(jī)可運(yùn)行 docker,,即可運(yùn)行一個 Ansible 容器,適配 AFO 的執(zhí)行,。對于不熟悉 Ansible 的同學(xué)非常友好,。
自動適配 CPU 架構(gòu)(條件受限,目前僅測試了 X86 架構(gòu))和操作系統(tǒng)(已支持 CentOS 和 openEuler 20.03),,自動下載對應(yīng)的 openGauss 安裝包,,自動對操作系統(tǒng)做適配修改。
實(shí)現(xiàn)從單節(jié)點(diǎn)到多節(jié)點(diǎn)的多種架構(gòu)模式的一次性部署,。
使用本工具部署的單點(diǎn)或集群,,還能通過添加服務(wù)器,再次運(yùn)行腳本,,實(shí)現(xiàn)平滑擴(kuò)容,。實(shí)測可直接從單主擴(kuò)容到 1 主 2 備 2 級聯(lián)。
允許用戶自定義一些變量,,例如指定部署目錄,,指定 openGauss 版本(5.0 或以上),指定 sysctl 的參數(shù)配置,。
免除手工部署中的問答環(huán)節(jié),,自動生成相關(guān)密碼,自動填寫,。最后生成部署報(bào)告,。
效率是如何提升的?
以配置網(wǎng)卡 MTU 為例,,3 臺服務(wù)器的執(zhí)行時間如下:
Ansible 在 0.517 秒的時間內(nèi),,完成了 3 臺服務(wù)器的網(wǎng)卡 MTU 修改。因?yàn)�,,它是并行操作的�?/p>
以生成 cluster_config.xml 為例
3 臺服務(wù)器的節(jié)點(diǎn),,手工寫 cluster_config.xml,需要花費(fèi)多少時間,,各位可以自己計(jì)時看看,。
而我們利用 Ansible 的模板功能,可以在 1 秒內(nèi)生成該文件,編排非常清晰,,一目了然,。
我們甚至考慮到了在機(jī)房里使用小尺寸顯示器查看 cluster_config.xml 的場景,對 xml 做了換行處理,,避免出現(xiàn)單行過長的問題,。
自動化思路
AFO 主要的工作流如下:
對部署環(huán)境的信息進(jìn)行采集。
將用戶自定義的變量和腳本默認(rèn)變量合并,,優(yōu)先使用自定義變量,。
檢查是否已部署 openGauss,如無,,進(jìn)入初次部署流程,。
如果已部署 openGauss,則檢查用戶是否有添加新節(jié)點(diǎn),,進(jìn)入節(jié)點(diǎn)擴(kuò)容流程,。
節(jié)點(diǎn)擴(kuò)容流程里又分 2 步,先擴(kuò)容備機(jī)節(jié)點(diǎn),,再擴(kuò)容級聯(lián)節(jié)點(diǎn),。因?yàn)榧壜?lián)節(jié)點(diǎn)只連接備機(jī)。
如果集群節(jié)點(diǎn)數(shù)量為 3 或以上,,且未部署 CM,,則進(jìn)入 CM 部署流程。
最后,,檢查確認(rèn)集群已正常運(yùn)行,,生成部署報(bào)告。
結(jié)果展示
以 3 臺 VirtualBox 虛擬機(jī)為例,,統(tǒng)一 8U+16GB 配置,,都在 1 塊物理 SATA 盤上讀寫。
另外,,虛擬機(jī)都已經(jīng)提前安裝好相關(guān)依賴包,openGauss 安裝包也已經(jīng)下載到本地,。排除網(wǎng)絡(luò)下載速度的不確定因素,。
單節(jié)點(diǎn),4 分 40 秒(下圖右下角)完成部署,。
1 主 1 備,,7 分 48 秒(下圖右下角)完成部署。
從單點(diǎn)數(shù)據(jù)庫,,擴(kuò)容為 1 主 1 備 1 級聯(lián),,耗時 23 分(下圖右下角)完成部署。
擴(kuò)容模式需要額外的流程,因此耗時比直接部署 3 節(jié)點(diǎn)的要多,。
最后生成部署報(bào)告
項(xiàng)目代碼
這套工具已經(jīng)收錄在 openGauss 社區(qū)的官方代碼庫,,歡迎大家前往下載試用,并向我們多多提出寶貴意見,。
代碼地址:https://gitee.com/opengauss/ansible-for-opengauss
參與貢獻(xiàn)
歡迎對 Ansible 熟悉的同學(xué),,加入我們,改進(jìn)完善我們的項(xiàng)目,。
更歡迎大家提交 issue,,提出寶貴的意見和建議。
也歡迎可以提供測試資源的同學(xué),,與我聯(lián)系,。目前我們需要 ARM 平臺的測試環(huán)境。
TODO
增加 openGauss 相關(guān)生態(tài)軟件的自動化部署,,例如圖形化管理,,監(jiān)控管理。
增加 ARM 平臺的適配,。
增加數(shù)據(jù)庫定時備份的配置流程,。
增加對 1 主 1 備架構(gòu)的主備自動切換配置。
有限度地提供 gs_guc 自動化配置,,方便運(yùn)維人員對數(shù)據(jù)庫參數(shù)做修改更新,。
更多的想法,由你們來補(bǔ)充,。
上海廠房出租 短信驗(yàn)證碼 酒店vi設(shè)計(jì)