Apollo源碼搭建調試看一文就夠


Apollo(阿波羅)是攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,並且具備規范的權限、流程治理等特性,適用於微服務配置管理場景。 

我們先拉取源碼,修改maven setting file,構建本地工程同時,我們再來筆者這篇文章。

 

這篇我們只關注於默認dev環境的啟動配置(比較簡單的配置),其實ApolloPortalDB只需要在生產環境部署一個即可,而ApolloConfigDB需要在每個環境部署一套,如dev、fat、uat和pro分別部署4套ApolloConfigDB。

一、創建數據庫

Apollo服務端共需要兩個數據庫:ApolloPortalDBApolloConfigDB,我們把數據庫、表的創建和樣例數據都分別准備了sql文件,只需要導入數據庫即可。

創建ApolloPortalDB

通過MySQL客戶端導入apolloportaldb.sql即可。

創建ApolloConfigDB

通過MySQL客戶端導入apolloconfigdb.sql即可。

二、本地啟動

2.1 啟動Apollo Config Service和Apollo Admin Service

創建運行配置

Main class 配置

com.ctrip.framework.apollo.assembly.ApolloApplication

Vm options 配置

-Dapollo_profile=github
-Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
-Dspring.datasource.username=root -Dspring.datasource.password=****** -Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-assembly.log

 

1、datasource相關配置替換成你自己的數據庫連接信息,注意數據庫是ApolloConfigDB

2、程序默認日志輸出為/opt/logs/100003171/apollo-assembly.log,如果需要修改日志文件路徑,可以增加logging.file參數,如下:

-Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-assembly.log

 

Program arguments 配置

--configservice --adminservice

Use classpath of module 配置

apollo-assembly

啟動運行

啟動完后,打開http://localhost:8080可以看到apollo-configserviceapollo-adminservice都已經啟動完成並注冊到Eureka。

 

2.2 啟動Apollo-Portal

創建運行配置

Main class 配置

com.ctrip.framework.apollo.portal.PortalApplication

Vm options 配置

-Dapollo_profile=github,auth
-Ddev_meta=http://localhost:8080/
-Dserver.port=8070
-Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
-Dspring.datasource.username=root
-Dspring.datasource.password=root@123
-Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-portal.log

 

1、默認ApolloPortalDB中導入的配置只會展示DEV環境的配置,所以這里配置了dev_meta屬性,如果你希望在本地展示其它環境的配置,需要在這里增加其它環境的meta服務器地址,如fat_meta。

2、程序默認日志輸出為/opt/logs/100003171/apollo-assembly.log,如果需要修改日志文件路徑,可以增加logging.file參數,如下:

-Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-portal.log

 

Program arguments 配置

--configservice --adminservice

Use classpath of module 配置

apollo-protal

啟動完后,打開http://localhost:8070就可以看到Apollo配置中心界面了。

默認賬號密碼apollo/admin

2.3 接入客戶端

創建運行配置

Main class 配置

com.ctrip.framework.apollo.demo.spring.springBootDemo.SpringBootSampleApplication

Vm options 配置

-Denv=dev
-Ddev_meta=http://localhost:8080

 我們先配置dev環境的meta server地址為http://localhost:8080,也就是apollo-configservice的地址。

Use classpath of module 配置

apollo-demo

2.4 服務端配置項

ApolloPortalDB配置

 

1.apollo.portal.envs - 可支持的環境列表

默認值是dev,如果portal需要管理多個環境的話,以逗號分隔即可(大小寫不敏感),如:

DEV,FAT,UAT,PRO

 修改完需要重啟生效。

2.organizations - 部門列表

Portal中新建的App都需要選擇部門,所以需要在這里配置可選的部門信息,樣例如下:

[{"orgId":"TEST1","orgName":"樣例部門1"},{"orgId":"TEST2","orgName":"樣例部門2"}]

 

ApolloConfigDB配置

 

配置項統一存儲在ApolloConfigDB.ServerConfig表中,需要注意每個環境的ApolloConfigDB.ServerConfig都需要單獨配置,修改完一分鍾實時生效。

1. eureka.service.url - Eureka服務Url

默認本地就是http://localhost:8080/eureka/

2. namespace.lock.switch - 一次發布只能有一個人修改開關,用於發布審核

這是一個功能開關,如果配置為true的話,那么一次配置發布只能是一個人修改,另一個發布。

3. config-service.cache.enabled - 是否開啟配置緩存

這是一個功能開關,如果配置為true的話,config service會緩存加載過的配置信息,從而加快后續配置獲取性能。

默認為false,開啟前請先評估總配置大小並調整config service內存配置。

4. item.key.length.limit - 配置項 key 最大長度限制

默認配置是128。

5. item.value.length.limit - 配置項 value 最大長度限制

默認配置是20000。

 

三、開發啟動的常見問題

3.1 本地運行時Portal一直報Env is down.

 

默認config service啟動在8080端口,admin service啟動在8090端口。請確認這兩個端口是否被其它應用程序占用。

如果還伴有異常信息:org.springframework.web.client.HttpClientErrorException: 405 Method Not Allowed,一般是由於本地啟動了ShadowSocks,因為ShadowSocks默認會占用8090端口。

1.1.0版本增加了系統信息頁面,可以通過管理員工具 -> 系統信息查看當前各個環境的Meta Server以及admin service信息,有助於排查問題。

3.2 啟動注冊Eureka地址錯誤

檢查ApolloConfigDB.ServerConfig表中 eureka.service.url 是否配置正確。

3.3 檢查是否存在沒有配置的環境

java.lang.IllegalArgumentException: Not enough variable values available to expand 'pro_meta'

檢查ApolloPortalDB.ServerConfig表中 apollo.portal.envs 配置項是否都有配置,默認應該只配置dev(不區分大小寫)

3.4 檢查mysql配置版本和驅動

apollo com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serve

檢查數據庫是否啟動,檢查mysql版本是否符合。具體可以參考

https://github.com/ctripcorp/apollo/issues/1138

 

問題持續更新。


到這里配置已經可以進行本地聯調測試,如果有任何問題可以留言一起討論。

更多可以參考

1、Apollo部署指南

2、Apollo開發指南


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM