[github地址:] https://github.com/ctripcorp/apollo
Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場(chǎng)景。比Spring Cloud Config安裝復(fù)雜很多,而且官方的安裝文檔因?yàn)榭紤]得特別全面,寫得比較詳細(xì),不方便我們快速部署。
這里只是簡(jiǎn)單的介紹如何在windows環(huán)境下部署Apollo 配置中心,需要詳細(xì)了解Apollo配置中心設(shè)計(jì)、架構(gòu)剖析、詳細(xì)的部署方案請(qǐng)?jiān)L問上面的github地址找wiki文檔即可。
一、部署簡(jiǎn)介
Apollo主要部署3個(gè)組件
Portal:管理配置的頁面
Admin Service:配置管理服務(wù)(為Portal提供接口)
Config Service:配置服務(wù)(為客戶端提供配置接)

二、準(zhǔn)備環(huán)境
windows
jdk 1.8
mysql 5.6.5+
三、下載部署操作
1.下載代碼
下載地址:git@github.com:ctripcorp/apollo.git
目錄結(jié)構(gòu)如下圖:

2.創(chuàng)建數(shù)據(jù)庫
2.1 創(chuàng)建ApolloPortalDB
通過各種MySQL客戶端導(dǎo)入apolloportaldb.sql文件即可。
1.3.0版本開始為了支持Flyway,sql位置和命名從之前的scripts/sql/apolloportaldb.sql改為了scripts/db/migration/portaldb/V1.0.0__initialization.sql
導(dǎo)入成功后,可以通過執(zhí)行以下sql語句來驗(yàn)證:
select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
| Id | Key | Value | Comment |
|---|---|---|---|
| 1 | apollo.portal.envs | dev | 可支持的環(huán)境列表 |
注:ApolloPortalDB只需要在生產(chǎn)環(huán)境部署一個(gè)即可
2.2 創(chuàng)建ApolloConfigDB
通過各種MySQL客戶端導(dǎo)入apolloconfigdb.sql即可。
1.3.0版本開始為了支持Flyway,sql位置和命名從之前的scripts/sql/apolloconfigdb.sql改為了scripts/db/migration/configdb/V1.0.0__initialization.sql
導(dǎo)入成功后,可以通過執(zhí)行以下sql語句來驗(yàn)證:
select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
| Id | Key | Value | Comment |
|---|---|---|---|
| 1 | eureka.service.url | http://127.0.0.1:8080/eureka/ | Eureka服務(wù)Url |
注:ApolloConfigDB需要在每個(gè)環(huán)境部署一套,如環(huán)境1、環(huán)境2和環(huán)境3分別部署3套ApolloConfigDB
3.通過源碼構(gòu)建安裝包
3.1 配置數(shù)據(jù)庫連接信息
Apollo服務(wù)端需要知道如何連接到你前面創(chuàng)建的數(shù)據(jù)庫,所以需要編輯scripts/build.sh,修改ApolloPortalDB和ApolloConfigDB相關(guān)的數(shù)據(jù)庫連接串信息。
#apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
apollo_config_db_username=用戶名
apollo_config_db_password=密碼(如果沒有密碼,留空即可)
# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
apollo_portal_db_username=用戶名
apollo_portal_db_password=密碼(如果沒有密碼,留空即可)
3.2 配置各環(huán)境meta service地址
Apollo Portal需要在不同的環(huán)境訪問不同的meta service(apollo-configservice)地址,所以需要在打包時(shí)提供這些信息,也是在scripts/build.bat中編輯。不需要的環(huán)境可以用::直接注釋掉。
set dev_meta="http://localhost:8080"
::set fat_meta="http://someIp:8080"
::set uat_meta="http://anotherIp:8080"
set pro_meta="http://yetAnotherIp:8080"
3.3 執(zhí)行編譯、打包
做完上述配置后,就可以執(zhí)行scripts/build.bat編譯和打包了。
該腳本會(huì)依次打包apollo-configservice, apollo-adminservice,apollo-portal。
apollo-configservice安裝包
位于apollo-configservice/target/目錄下的apollo-configservice-x.x.x-github.zip
apollo-adminservice安裝包
位于apollo-adminservice/target/目錄下的apollo-adminservice-x.x.x-github.zip
apollo-portal安裝包
位于apollo-portal/target/目錄下的apollo-portal-x.x.x-github.zip
4.部署Apollo服務(wù)端
4.1 部署apollo-configservice
解壓安裝包后執(zhí)行scripts/startup.sh即可。如需停止服務(wù),執(zhí)行scripts/shutdown.sh。
注1:如要調(diào)整服務(wù)的日志輸出路徑,可以修改
scripts/startup.sh和apollo-adminservice.conf中的LOG_DIR。
注2:如要調(diào)整服務(wù)的監(jiān)聽端口,可以修改
scripts/startup.sh中的SERVER_PORT。
4.2 部署apollo-adminservice
解壓安裝包后執(zhí)行scripts/startup.sh即可。如需停止服務(wù),執(zhí)行scripts/shutdown.sh.
注1:如要調(diào)整服務(wù)的日志輸出路徑,可以修改
scripts/startup.sh和apollo-adminservice.conf中的LOG_DIR。
注2:如要調(diào)整服務(wù)的監(jiān)聽端口,可以修改
scripts/startup.sh中的SERVER_PORT。
4.3 部署apollo-portal
解壓安裝包后執(zhí)行scripts/startup.sh即可。如需停止服務(wù),執(zhí)行scripts/shutdown.sh.
注1:如要調(diào)整服務(wù)的日志輸出路徑,可以修改
scripts/startup.sh和apollo-adminservice.conf中的LOG_DIR。
注2:如要調(diào)整服務(wù)的監(jiān)聽端口,可以修改
scripts/startup.sh中的SERVER_PORT。
5.訪問登錄
全部啟動(dòng)后,默認(rèn)訪問地址:localhost:8070
假如有修改apollo-portal監(jiān)聽的端口,則需要訪問相對(duì)應(yīng)的端口號(hào)。
默認(rèn)賬號(hào)/密碼:apollo/admin

到這里,apollo的安裝部署就成功結(jié)束了。