簡介 Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。 服務端基於Spring Boot和Spring Cloud開發,打包後可以直接運行,不需要額外安 ...
簡介
Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。
服務端基於Spring Boot和Spring Cloud開發,打包後可以直接運行,不需要額外安裝Tomcat等應用容器。
Java客戶端 不依賴任何框架,能夠運行於所有Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持。
.Net客戶端 不依賴任何框架,能夠運行於所有.Net運行時環境。
官方 GitHub: https://github.com/ctripcorp/apollo
官方 Gitee: https://gitee.com/nobodyiam/apollo
一、準備工作
1.1 Java
- Apollo服務端:1.8+
- Apollo客戶端:1.7+
由於Quick Start會在本地同時啟動服務端和客戶端,所以需要在本地安裝Java 1.8+。
在配置好後,可以通過如下命令檢查:
java -version
樣例輸出:
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
Windows用戶請確保JAVA_HOME環境變數已經設置。
1.2 MySQL
- 版本要求:5.6.5+
Apollo的表結構對timestamp
使用了多個default聲明,所以需要5.6.5以上版本。
連接上MySQL後,可以通過如下命令檢查:
SHOW VARIABLES WHERE Variable_name = 'version';
1.3 下載Quick Start安裝包
我們準備好了一個Quick Start安裝包,大家只需要下載到本地,就可以直接使用,免去了編譯、打包過程。
安裝包共50M,如果訪問github網速不給力的話,可以從百度網盤下載。
- 從Github下載
- checkout或下載apollo-build-scripts項目
- 由於Quick Start項目比較大,所以放在了另外的repository,請註意項目地址
- 從百度網盤下載
- 通過網盤鏈接下載,提取碼: 9wwe
- 下載到本地後,在本地解壓apollo-quick-start.zip
- 為啥安裝包要58M這麼大?
- 因為這是一個可以自啟動的jar包,裡面包含了所有依賴jar包以及一個內置的tomcat容器
1.4 手動打包Quick Start安裝包
Quick Start只針對本地測試使用,所以一般用戶不需要自己下載源碼打包,只需要下載已經打好的包即可。不過也有部分用戶希望在修改代碼後重新打包,那麼可以參考如下步驟:
- 修改apollo-configservice, apollo-adminservice和apollo-portal的pom.xml,註釋掉spring-boot-maven-plugin和maven-assembly-plugin
- 在根目錄下執行
mvn clean package -pl apollo-assembly -am -DskipTests=true
- 複製apollo-assembly/target下的jar包,rename為apollo-all-in-one.jar
wget https://github.com/apolloconfig/apollo-build-scripts/archive/refs/heads/master.zip #下載
unzip master.zip #解壓
二、安裝步驟
2.1 創建資料庫
Apollo服務端共需要兩個資料庫:ApolloPortalDB
和ApolloConfigDB
,我們把資料庫、表的創建和樣例數據都分別準備了sql文件,只需要導入資料庫即可。
註意:如果你本地已經創建過Apollo資料庫,請註意備份數據。我們準備的sql文件會清空Apollo相關的表。
下麵以MySQL原生客戶端為例:
友情提示:可以使用Navcat連接工具導入SQL
source /your_local_path/sql/apolloportaldb.sql
source /your_local_path/sql/apolloconfigdb.sql
導入成功後,可以通過執行以下sql語句來驗證:
select `Id`, `AppId`, `Name` from ApolloPortalDB.App;
select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;
2.2 配置資料庫連接信息
Apollo服務端需要知道如何連接到你前面創建的資料庫,所以需要編輯demo.sh,修改ApolloPortalDB和ApolloConfigDB相關的資料庫連接串信息。
註意:不要修改demo.sh的其它部分!!!
三、啟動Apollo配置中心
Quick Start腳本會在本地啟動3個服務,分別使用8070, 8080, 8090埠,請確保這3個埠當前沒有被使用
例如,在Linux/Mac下,可以通過如下命令檢查:
lsof -i:8080
netstat -anp | grep 8080
3.2 執行啟動腳本
./demo.sh start #啟動
./demo.sh stop #關閉
當看到如下輸出後,就說明啟動成功了!
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!
3.3 異常排查
如果啟動遇到了異常,可以分別查看service和portal目錄下的log文件排查問題。
註:在啟動apollo-configservice的過程中會在日誌中輸出eureka註冊失敗的信息,如
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused
。需要註意的是,這個是預期的情況,因為apollo-configservice需要向Meta Server(它自己)註冊服務,但是因為在啟動過程中,自己還沒起來,所以會報這個錯。後面會進行重試的動作,所以等自己服務起來後就會註冊正常了。查看阿波羅日誌詳情
tail -f portal/apollo-portal.log tail -f service/apollo-service.log
四、使用Apollo配置中心
4.1 查看樣例配置
打開瀏覽器輸入:http://localhost:8070 用戶名/密碼:apollo/admin
打開瀏覽器輸入:http://localhost:8080
打開瀏覽器輸入:http://localhost:8090
4.2 運行客戶端程式
./demo.sh client #運行客戶端
忽略前面的調試信息,輸入timeout
,會看到如下信息:
4.3 修改配置併發布
1、在配置界面點擊timeout這一項的編輯按鈕
2、在彈出框中把值改成200並提交配置修改
3、點擊發佈按鈕,並填寫發佈信息發佈
如果客戶端一直在運行的話,在配置發佈後就會監聽到配置變化,並輸出修改的配置信息: