攜程 Apollo 配置中心 | 學習筆記(十五)| 如何在Linux中部署Apollo配置中心叢集(分散式)?
本章將介紹如何在Linux 中部署Apollo配置中心叢集。
專欄目錄:
歡迎關注個人公眾號: Coder程式設計
歡迎關注個人網站:www.52melrin.com
環境以及版本
Apollo: 0.11.0
Java JDK:1.8
Maven : 3.3.9
Mysql : 5.7.9 (要求5.6.5以上)
準備工作
在攜程apollo github 官網上,下載最新的原始碼包0.11.0(目前:2018.7.31),匯入到本地的開發工具中(Eclipse、IDEA)。確保相關依賴下載完畢,maven無相關報錯即可。匯入apollo中的相關資料庫表。這裡就不做贅述了!
測試伺服器(兩臺) 分別是:192.168.220.83、192.168.220.85 共用192.168.220.83 上的資料庫!
注: 接下來,我的埠號設定分別為:
apollo-configservice:30080
apollo-adminservice:30090
apollo-portal:30070
修改檔案
以192.168.220.85機子為例進行修改。(192.168.220.83修改類似,區別就是Ip地址)
1.修改apollo-adminservice
(1)修改application.yml 的埠號:
server:
port: 30090
(2)修改bootstrap.yml 的Ip地址,防止出現之後docker網路地址找不到。
eureka: instance: #hostname: ${hostname:localhost} preferIpAddress: true ip-address: 192.168.220.85 client: serviceUrl: defaultZone: http://192.168.220.85:30080/eureka/,http://192.168.220.83:30080/eureka/ healthcheck: enabled: true eurekaServiceUrlPollIntervalSeconds: 60 endpoints: health: sensitive: false management: security: enabled: false health: status: order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP
(3)修改 startup.sh 中的埠
SERVER_PORT=30090
(4)修改Dockerfile中的埠(這一步可以省略,本章只介紹如何部署到Linux伺服器中)
EXPOSE 30090
2.修改apollo-configservice
步驟同apollo-adminservice修改步驟,只是將30090埠改為30080埠,是30080埠的不需要修改!
3.修改apollo-portal
同樣需要修改埠號為30070。
注:在0.11.0版本之後出現了config 目錄。記得將config 目錄中的apollo-env.properties中新增:
注:0.11.0 版本之後支出多資料來源中心了。
dev.meta=http://192.168.220.85:30080,http://192.168.220.83:30080
4.修改apollo-core
為了防止特殊情況,需要修改apollo-core 中resources 資料夾中的apollo-env.properties,新增:
local.meta=http://localhost:8080
dev.meta=http://192.168.220.85:30080,http://192.168.220.83:30080
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}
接下來進行打包操作。如果使用eclipse 或者idea 打包的話,可能會出現找不到jdk或者Jre的情況,百度即可。但是也會出現單元測試一直失敗報錯的情況。可以選擇跳過單元測試,或者直接將apollo-client 中的test 下面的測試包全部刪掉即可!
5.修改build.bat
我選擇的是直接用build.bat進行打包(windows環境下)
build.bat 在整個原始碼包的scripts目錄下!
內容對應個人具體環境進行修改!
本人修改內容如下:
@echo off
rem apollo config db info
set apollo_config_db_url="jdbc:mysql://192.168.220.83:xxxx/ApolloConfigDB?characterEncoding=utf8"
set apollo_config_db_username="root"
set apollo_config_db_password="xxxx"
rem apollo portal db info
set apollo_portal_db_url="jdbc:mysql://192.168.220.83:xxxx/ApolloPortalDB?characterEncoding=utf8"
set apollo_portal_db_username="root"
set apollo_portal_db_password="xxxx"
rem meta server url, different environments should have different meta server addresses
set dev_meta="http://192.168.220.85:30080,http://192.168.220.83:30080"
set fat_meta="http://someIp:8080"
set uat_meta="http://anotherIp:8080"
set pro_meta="http://192.168.220.83:30081"
set META_SERVERS_OPTS=-Ddev_meta=%dev_meta% -Dfat_meta=%fat_meta% -Duat_meta=%uat_meta% -Dpro_meta=%pro_meta%
rem =============== Please do not modify the following content ===============
rem go to script directory
cd "%~dp0"
cd ..
rem package config-service and admin-service
echo "==== starting to build config-service and admin-service ===="
call mvn clean package -DskipTests -pl apollo-configservice,apollo-adminservice -am -Dapollo_profile=github -Dspring_datasource_url=%apollo_config_db_url% -Dspring_datasource_username=%apollo_config_db_username% -Dspring_datasource_password=%apollo_config_db_password%
echo "==== building config-service and admin-service finished ===="
echo "==== starting to build portal ===="
call mvn clean package -DskipTests -pl apollo-portal -am -Dapollo_profile=github,auth -Dspring_datasource_url=%apollo_portal_db_url% -Dspring_datasource_username=%apollo_portal_db_username% -Dspring_datasource_password=%apollo_portal_db_password% %META_SERVERS_OPTS%
echo "==== building portal finished ===="
echo "==== starting to build client ===="
call mvn clean install -DskipTests -pl apollo-client -am %META_SERVERS_OPTS%
echo "==== building client finished ===="
pause
確定打包成功!
6.修改資料庫表
修改apolloconfigdb 中的serverconfig 中的eureka註冊中心地址:
http://192.168.220.83:30080/eureka/,http://192.168.220.85:30080/eureka/
部署
以下部署涉及到Linux 伺服器的操作步驟。
(1)新建目錄
在linux上新建目錄結構:
(2)上傳檔案
分別將打包好的檔案。在/target資料夾中的 apollo-portal-0.11.0-github.zip、apollo-adminservice-0.11.0-github.zip、apollo-configservice-0.11.0-github.zip上傳至相關資料夾中。
(3)解壓
解壓命令:
unzip apollo-xxxx-0.11.0-github.zip
分別解壓apollo-configservice、apolllo-adminservice、apollo-portal
(4)啟動
解壓之後,可以看到有scripts目錄
通過./startup.sh 執行指令碼即可
執行順序依次為:apollo-configservice——》apollo-adminservice——》apollo-portal
檢視結果
在瀏覽器中輸入:192.168.220.85:30070/ 即可看到
叢集部署
另外一臺192.168.220.83 部署跟192.168.220.85 步驟一樣,只需要修改Ip地址即可,無需修改埠號。
輸入192.168.220.85:30080可以看到:
可以看到已經部署兩臺,並且成功了!
測試
1. 啟動兩臺伺服器端的apollo,客戶端成功獲取資訊。
2.關掉其中一臺apollo服務,重啟客戶端。客戶端成功獲取資訊。
3.兩臺apollo服務都關停,刪除本地快取,重啟客戶端,客戶端獲取資訊失敗。
4.再次重啟其中一臺apollo服務,重啟客戶端,客戶端再一次成功獲取資訊。
本篇Linux部署Apollo分散式叢集到此為止,謝謝