基於winserver的Apollo配置中心分布式&集群部署實踐(正確部署姿勢)
前言
前幾天對Apollo配置中心的demo進行一個部署試用,現公司已決定使用,這兩天進行分布式部署的時候,每一步都踩著坑過來的。因此寫文檔與需要的朋友分享。
此篇文章不代表官方部署流程,只是自己的部署的實踐方式,屏蔽了一些官方的多余的部署講解。如果有問題還請到Apollo的wiki文檔進行查看:https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97
另外,真想吐槽下Apollo配置中心部署惡心度真的是……,吐槽歸吐槽,但是Apollo配置中心的功能強大而且具有非常高的可用性,在同類型產品裏也算是數一數二。
在進行分布式部署前我還是建議用Apollo的quick start版本進行試用。可以參考我這篇文章《基於winserver部署Apollo初次體驗(附.net客戶端demo)》
環境準備
-
jdk18+
-
gitbash
-
mysql 5.6.5+
- Apollo
服務簡介
- apollo-configservice
- 作為客戶端的獲取配置的接口服務,與客戶端進行Http long polling,實現配置更新的退送與拉取
- apollo-adminservice
- 作為管理後臺的接口服務,提供配置管理、修改、發布
- apollo-portal
- Web管理配置後臺
以下正式開始部署
SQL腳本導入
源碼\scripts\sql下兩腳本,到mysql執行
apolloconfigdb.sql
apolloportaldb.sql
編譯
切換到上面已下載阿波羅源碼\scripts目錄下,運行build.bat。需要等待幾分鐘,編譯完成後,準備三個服務部署,部署順序也如下
- apollo-configservice
- apollo-adminservice
- apollo-porta
apollo-configservice部署
- 源碼\apollo-configservice\target\apollo-configservice-0.11.0-SNAPSHOT-github.zip
- 解壓到需要部署的服務器文件夾
- 添加文件application-github.properties,內容如下:
spring.datasource.url=jdbc:mysql://10.1.20.143:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=12345678
- 編輯\scripts\startup.sh,修改日誌目錄
LOG_DIR=D:/apollo/apollo-configservice-0.11.0-SNAPSHOT-github/log
- 雙擊startup.sh啟動服務。
- 啟動完後查看日誌,如果出現下面信息,請耐心等待幾分鐘,輸入localhost:8080嘗試
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused
apollo-adminservice部署
- 源碼\apollo-adminservice\target\apollo-adminservice-0.11.0-SNAPSHOT-github.zip
- 同上步驟2、3、4、5(註意數據庫信息、日誌目錄對應修改)
- localhost:8090嘗試
apollo-portal部署
- 源碼\apollo-portal\target\apollo-portal-0.11.0-SNAPSHOT-github.zip
- 解壓到需要部署的服務器文件夾
- 添加文件application-github.properties,內容如下(註意數據庫連接與前兩者不一樣)
spring.datasource.url=jdbc:mysql://10.1.20.143:3306/ApolloPortalDB?characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=12345678
- 編輯\scripts\startup.sh,修改日誌目錄與端口號
LOG_DIR=D:/apollo/apollo-portal-0.11.0-SNAPSHOT-github/log SERVER_PORT=8070
- 雙擊startup.sh啟動服務
- 輸入localhost:8070嘗試,如日誌沒其他異常,等待幾分鐘再次嘗試訪問
添加客戶端環境配置
在C:\opt\settings 添加文件server.properties內容:
env=DEV
集群部署
以上為單機部署的流程,下面講解集群部署的流程:
架構簡述
Eureka與apollo-configservice為同一個JVM進程,為了好描述拆開了。
在apollo-configservice與apollo-adminservice啟動時會向Eureka進行服務註冊,Apollo客戶端和apollo-Portal會從Eureka進行服務查找,然後通過服務地址直接訪問
每個服務都是無狀態的,因此橫向擴展相對比較簡單
修改eureka.service.url
update apolloconfigdb.serverconfig set value = ‘http://10.1.20.137:8080/eureka/‘ where id = 1
部署apollo-configservice和apollo-adminservice
到B服務器重復上述兩個服務的部署步驟(註意基本環境的安裝)
完成並查看
輸入http://10.1.20.137:8080進行查看,eureka管理界面status出現多臺主機名稱為部署成功。
結束
以上為我與大家分享的部署流程,如有問題可以及時在下方評論與我,我會盡快回復
基於winserver的Apollo配置中心分布式&集群部署實踐(正確部署姿勢)