溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何為Keepalived服務創(chuàng)建基于Rancher的Catalog

發(fā)布時間:2020-06-15 13:55:23 來源:網(wǎng)絡 閱讀:355 作者:RancherLabs 欄目:網(wǎng)絡安全

Keepalived的作用是檢測服務器的狀態(tài),如果有一臺web服務器死機,或工作出現(xiàn)故障,Keepalived 將檢測到,并將有故障的服務器從系統(tǒng)中剔除,當服務器工作正常后Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。


首先我們簡要說明一下Keepalived 的相關啟動腳本及配置文件:keepalived.sh是核心的腳本用來啟動服務,keepalived.conf文件則是該服務的配置文件。對于 Keepalived,我們需要關心的幾個重要參數(shù)如下:

  1. 虛擬IP地址及其掩碼

  2. VRRP所偵聽檢測的端口(也就是HA針對具體哪一個端口做健康檢查)

  3. VRRP基于哪個網(wǎng)卡接口發(fā)布。


我相信Rancher的官方手冊已經(jīng)對Catalog的制作流程做了詳盡的說明,但是仍然有一些朋友看了Rancher手冊上Catalog那一節(jié),暈暈乎乎,不懂如何制作應用的 Catalog。


(官方手冊鏈接在此):http://docs.rancher.com/rancher/latest/en/catalog/private-catalog/ 


結(jié)合Keepalived,我們來看具體的Catalog是如何創(chuàng)建的吧。


首先,你需要在github或者你自己的gitlab上創(chuàng)建一個項目,這個項目只要能被git clone指令正常處理就 OK。 例如我們在github網(wǎng)站上創(chuàng)建的項目結(jié)構如下圖所示: 


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


templates目錄里對應的是我們Rancher里Cattle環(huán)境的Catalog。kubernetes-templates和swarm-templates以及mesos-templates則對應不同環(huán)境的模板。進入這個templates,我們可以看見在Rancher Catalog頁面對應的那些軟件模板名。 


我們進入Keepalived文件夾看個究竟,就會很容易的了解官方文檔對Catalog編制的流程指引。 


這個catalogIcon-keepalived.png圖正是我們看見的它:


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


config.yml文件則是該catalog的基礎描述;0目錄是指第一個版本,那么下一次你發(fā)新版的Catalog,則需另建立一個1目錄。 


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


每個版本文件夾例如0里面均包含了三個文件。

 

如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


這正是我們創(chuàng)建一個Stack所需要的docker-compose.yml以及rancher-compose.yml,當然還有一個README.md 文件,用以對Stack進行詳細描述。

 

如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


對于這個Keepalived,其 docker-compose.yml特別的簡單:


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


不過這里的p_w_picpath你可需要花點功夫了,你需要處理正確的環(huán)境變量、參數(shù)的傳遞。否則我們在Rancher Catalog里看到的這些參數(shù)傳遞一旦出現(xiàn)問題,那么服務肯定跑不起來了,用于制作p_w_picpath的Dockerfile內(nèi)容如下 :


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


這些自定義配置選項是如何實現(xiàn)的呢?


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


官方文檔告訴我們,是在 rancher-compose文件里來定義。還是以我們的Keepalived服務為例子:


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


在rancher-compse.yml文件的question小節(jié)里定義了很多UI對象的屬性(例如:變量名、數(shù)據(jù)類型、是否必選項、標簽、描述、默認值等等),而在answers.txt文件中則相應的給出了這些項目的默認值狀態(tài)。


以實際的Keepalived服務而言,我們可以看見docker-compose.yml文件里定義了四個環(huán)境變量 (VIRTUAL_IP、 CHECK_PORT、 INTERFACE、 NETMASK_BIT)以及一個常量VRID:


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


以上四個環(huán)境變量是可以被容器的shell所直接調(diào)用的,例如keepalived.sh腳本中就調(diào)用了這四個變量,而這四個變量的具體賦值正是在Catalog制作階段完成的,其值由rancher-compose.yml文件里的變量進行輸出,也就是:


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


特別需要注意的是 keepalived.sh 腳本在運行期是需要讀取配置文件 keepalived.conf 文件里的參數(shù)的,特別是上述這四個參數(shù),那么由于 keepalived.conf 文件必須在 p_w_picpaths 生成之前在 Dockerfile 里寫好,因此在 Dockerfile 里,它們一定是變量,而在容器運行起來之后,keepalive.sh 運行之前需要把變量賦值,這些值正是用戶填寫的。我們看一下 keepalived.sh 是如何實現(xiàn)的呢?


通過關鍵的四句 sed 指令配合正則表達式: 


如何為Keepalived服務創(chuàng)建基于Rancher的Catalog


keepalived.sh腳本成功的將容器運行期的 keepalived.conf配置文件中的變量參數(shù)替換為了常量(這個常量由容器的環(huán)境變量傳遞進 Linux Shell 環(huán)境)。


這樣一個完整的Catalog創(chuàng)建流程包括如何處理環(huán)境變量與自定義參數(shù)的傳遞機制就解釋清晰了,按照這種思路,我們可以很方便地創(chuàng)建各種不同的應用模板,以實現(xiàn) Rancher 的一鍵部署功能。 


原文來源:Rancher Labs

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI