在Rainbond上部署高可用Apollo叢集

rainbond發表於2022-04-11





# 一、背景資訊


當前文件描述如何透過雲原生應用管理平臺 [Rainbond]() 一鍵安裝高可用 Apollo 叢集。這種方式適合給不太瞭解 Kubernetes、容器化等複雜技術的使用者使用,降低了在 Kubernetes 中部署 Apollo 的門檻。


## 1.1 Rainbond 與 Apollo 的結合


[Rainbond]() 是一款易於使用的開源雲原生應用管理平臺。


藉助於它,使用者可以在圖形化介面中完成微服務的部署與運維。


藉助 Kubernetes 和容器化技術的能力,將故障自愈、彈性伸縮等自動化運維能力賦能給使用者的業務。


Rainbond 內建原生 Service Mesh 微服務框架,同時與 Spring Cloud、Dubbo 等其他微服務框架也有很好的整合體驗。


故而大量的 Rainbond 使用者也可能是 Apollo 分散式配置管理中心的使用者。


這類使用者不必再關心如何部署 Apollo 叢集,Rainbond 團隊將 Apollo 製作成為可以一鍵部署的應用模版,供開源使用者免費下載安裝。


這種安裝方式極大的降低了使用者使用 Apollo 叢集的部署負擔,目前支援 1.9.2 版本。


當前的安裝方式,預設整合了一套 `PRO` 環境,追加其他環境,參見後文中的高階特性章節。


## 1.2 關於應用模版


應用模版是面向 Rainbond 雲原生應用管理平臺的安裝包,使用者可以基於它一鍵安裝業務系統到自己的 Rainbond 中去。無論這個業務系統多麼複雜,應用模版都會將其抽象成為一個應用,裹挾著應用內所有元件的映象、配置資訊以及所有元件之間的關聯關係一併安裝起來。


# 二、前提條件


- 部署好的 Rainbond 雲原生應用管理平臺:例如 [快速體驗版本](/docs/quick-start/quick-install/?channel=apollo),可以在個人 PC 環境中以啟動一個容器的代價執行。


- 可以連線到網際網路。


# 三、快速開始


## 3.1 訪問內建的開源應用商店


選擇左側的 **應用市場** 標籤頁,在頁面中切換到 **開源應用商店** 標籤頁,搜尋關鍵詞 **apollo** 即可找到 Apollo 應用。


![apollo-1]()


## 3.2 一鍵安裝


點選 Apollo 右側的 **安裝** 可以進入安裝頁面,填寫簡單的資訊之後,點選 **確定** 即可開始安裝,頁面自動跳轉到拓撲檢視。


![apollo-2]()


引數說明:


| 選擇項  | 說明                                 |

| ---- | ---------------------------------- |

| 團隊名稱 | 使用者自建的工作空間,以名稱空間隔離                  |

| 叢集名稱 | 選擇 Apollo 被部署到哪一個 K8s 叢集           |

| 選擇應用 | 選擇 Apollo 被部署到哪一個應用,應用中包含有若干有關聯的元件 |

| 應用版本 | 選擇 Apollo 的版本,目前可選版本為 1.9.2        |


等待幾分鐘後,Apollo 叢集就會安裝完成,並執行起來。


![apollo-3]()


## 3.3 測試


訪問元件 `Apollo-portal-1.9.2` 所提供的預設域名,即可登入 Apollo 控制檯,在系統資訊中,驗證 `PRO` 環境已經就緒。


![apollo-4]()


## 3.4 配置


在 Rainbond 中,可以基於圖形化介面對 Apollo 叢集進行配置。主要包括環境變數、配置檔案掛載、外掛配置三個方面。


- 環境變數:透過在不同的元件頁面中的環境配置中,可以自定義環境變數。比如為 `Apollo-portal-1.9.2` 預設新增了 `APOLLO_PORTAL_ENVS=pro` 用於定義當前 portal 納管的環境。


- 配置檔案:透過在不同的元件頁面中的環境配置中,可以為元件設定配置檔案。

  

  - `Apollo-portal-1.9.2` 掛載 `/apollo-portal/config/apollo-env.properties` 用於定義不同環境的 meta 地址。

  

  - `Apollo-config-1.9.2` 掛載 `/apollo-configservice/config/application-github.properties` 用於宣告當前環境 config 和 admin 的服務地址。


- 外掛配置:在 Rainbond 中透過為 `Apollo-portal-1.9.2` `Apollo-config-1.9.2` 安裝出口網路治理外掛來定義下游呼叫地址,這是一種 Service Mesh 微服務治理的實現方式。透過定義下游服務的域名,來訪問下游服務的指定埠。如在 `Apollo-portal-1.9.2` 的外掛中,訪問 `Apollo-config-1.9.2`  8080 埠的域名為 `apollo-config-pro` ,這也是配置中只定義域名,而不需要定義埠的原因。


# 四、高階特性


## 4.1 例項數量伸縮


Apollo 配置中心所包含的 `Apollo-portal-1.9.2` `Apollo-config-1.9.2` `Apollo-admin-1.9.2` 元件均使用 Deployment 控制器部署,透過 Rainbond 內建的 Service Mesh 微服務框架實現服務發現與通訊。故而這三個元件均可以一鍵擴充套件多個例項,實現叢集化部署。


以 `Apollo-portal-1.9.2` 為例,點選 **伸縮** ,修改 **例項數量** 後,點選 **設定** 即可。


![apollo-5]()


## 4.2 追加環境


Apollo 配置中心支援對接多套環境,並使用統一的 Portal 頁面進行管理。基於 Rainbond 一鍵安裝而來的 Apollo 叢集預設附帶了 `PRO` 環境。接下來講解在 Rainbond 場景中,如何追加一套 `DEV` 環境,假設在 `DEV` 環境中,透過 `apollo-config-dev`、`apollo-admin-dev`來分別訪問 `Apollo-config-Dev` `Apollo-admin-Dev` 元件。


1. 再部署一套 Apollo 叢集,並去除新叢集中 `Apollo-portal-1.9.2` `ApolloPortalDB`元件。為了便於管理,修改 `Apollo-config-1.9.2` `Apollo-admin-1.9.2` 元件的名稱。新增 `Apollo-portal-1.9.2` 到 `Apollo-config-Dev` `Apollo-admin-Dev` 的依賴。拓撲展示如下:


> 注意,這個步驟會觸發連線資訊環境變數衝突的情況,記得為 `Apollo-config-Dev` `Apollo-admin-Dev` 元件的對內埠,重新定義你喜歡的名字。


![apollo-6]()


2. 在 **環境配置** 頁面,修改 `Apollo-config-Dev` 的配置檔案 `/apollo-configservice/config/application-github.properties` ,將 config 和 admin 的服務地址修改成為預期的值。


![apollo-10]()


3. 分別進入`Apollo-config-Dev` `Apollo-portal-1.9.2` 的外掛頁面,為其出口網路治理外掛修改配置,Rainbond 內建的微服務框架,透過設定的域名(Domains)來定義下游服務的訪問地址。以 `Apollo-portal-1.9.2` 為例,需要配置到 `Apollo-config-Dev` `Apollo-admin-Dev` 的訪問域名。


![apollo-7]()


配置完成後點選 **更新配置**, `Apollo-portal-1.9.2` 就可以透過 apollo-config-dev 這個域名訪問到 `Apollo-config-Dev`。


同理,`Apollo-config-Dev` 需要配置到 `Apollo-admin-Dev` 的訪問域名。配置完成後更新配置。


4. 修改 `Apollo-portal-1.9.2` 的配置,來加入新的 `DEV` 環境。


修改環境變數 `APOLLO_PORTAL_ENVS` 的值,加入 `dev` 環境。


![apollo-8]()


修改配置檔案 `/apollo-portal/config/apollo-env.properties` ,寫入 `dev` 環境的 meta 地址。


![apollo-9]()


更新 `Apollo-portal-1.9.2` 元件,使所有配置生效。檢視系統資訊,驗證環境加入完成。


![apollo-11]()


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008902/viewspace-2886518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章