在Rainbond上部署高可用Apollo叢集
# 一、背景資訊
當前文件描述如何透過雲原生應用管理平臺 [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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL-HA 高可用叢集在 Rainbond 上的部署方案SQLAI
- 在Rainbond中一鍵部署高可用 EMQX 叢集AIMQ
- 基於 Rainbond 部署 DolphinScheduler 高可用叢集AI
- 在 Rainbond 中一鍵安裝高可用 Nacos 叢集AI
- Rabbitmq叢集高可用部署詳細MQ
- ProxySQL Cluster 高可用叢集環境部署記錄SQL
- PostgreSQL repmgr高可用叢集+keepalived高可用SQL
- 基於kubeasz部署高可用k8s叢集K8S
- Centos7.9 部署mongodb高可用叢集 3節點CentOSMongoDB
- PostgreSQL patroni高可用叢集SQL
- MongoDB高可用叢集搭建MongoDB
- zookeeper 高可用叢集搭建
- 高可用的MongoDB叢集MongoDB
- Redis叢集與高可用Redis
- kubeadm部署k8s1.9高可用叢集–2搭建etcd叢集K8S
- 如何使用 Terraform 在亞馬遜雲科技上建立 ShardingSphere Proxy 高可用叢集?ORM亞馬遜
- Kubernetes實戰:高可用叢集的搭建和部署
- mysql高可用叢集之MMMMySql
- Redis快取高可用叢集Redis快取
- 10、redis哨兵叢集高可用Redis
- 高可用mongodb叢集(分片+副本)MongoDB
- WEB叢集- 高可用服務Web
- 使用Rainbond部署Logikm,輕鬆管理Kafka叢集AIKafka
- Nginx + Keepalived 高可用叢集部署Nginx
- CapitalOne - Artifactory高可用叢集的自動化部署實踐API
- 使用kubeadm部署高可用IPV4/IPV6叢集
- 使用 Terraform 在 AWS 上快速部署 MQTT 叢集ORMMQQT
- RabbitMQ從零到叢集高可用(.NetCore5.0) -高可用叢集構建落地MQNetCore
- Docker Swarm + Harbor + Portainer 打造高可用,高伸縮,叢集自動化部署,更新。DockerSwarmAI
- 搭建 Kubernetes 高可用叢集
- Redis高可用-主從,哨兵,叢集Redis
- 高可用叢集之corosync+pacemakerROS
- [Open Source] RabbitMQ 高可用叢集方案MQ
- 搭建高可用MongoDB叢集(四):分片MongoDB
- 使用pgpool搭建高可用PostgreSQL叢集SQL
- CentOS 7下搭建高可用叢集CentOS
- CentOS 7 下搭建高可用叢集CentOS
- 使用 Docker Compose 本地部署基於 Sentinel 的高可用 Redis 叢集DockerRedis