Apollo分布式配置中心部署以及使用
一、簡(jiǎn)介
Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場(chǎng)景。
官方github:https://github.com/ctripcorp/apollo
作者對(duì)Apollo對(duì)介紹:https://github.com/ctripcorp/apollo/wiki/Apollo配置中心介紹
二、安裝部署
基礎(chǔ)設(shè)施
本次部署環(huán)境為DEV(開發(fā)環(huán)境)、FAT(測(cè)試環(huán)境)、UAT(預(yù)生產(chǎn))、PRO(生產(chǎn))
應(yīng)用服務(wù)器:
數(shù)據(jù)庫服務(wù)器:
配置
下載代碼:
git clone https://github.com/ctripcorp/apollo.git
1
比較重要的幾個(gè)項(xiàng)目:
apollo-configservice:提供配置獲取接口,提供配置更新推送接口,接口服務(wù)對(duì)象為Apollo客戶端
apollo-adminservice:提供配置管理接口,提供配置修改、發(fā)布等接口,接口服務(wù)對(duì)象為Portal,以及Eureka
apollo-portal:提供Web界面供用戶管理配置
apollo-client:Apollo提供的客戶端程序,為應(yīng)用提供配置獲取、實(shí)時(shí)更新等功能
上圖簡(jiǎn)要描述了配置發(fā)布的大致過程:
用戶在Portal操作配置發(fā)布
Portal調(diào)用Admin Service的接口操作發(fā)布
Admin Service發(fā)布配置后,發(fā)送ReleaseMessage給各個(gè)Config Service
Config Service收到ReleaseMessage后,通知對(duì)應(yīng)的客戶端
數(shù)據(jù)庫初始化:
下面的sql為大寫格式,注意數(shù)據(jù)庫的大小寫敏感設(shè)置
ApolloPortalDB:執(zhí)行apollo\scripts\sql\apolloportaldb.sql
ApolloConfigDB:DEV FAT UAT PRO 環(huán)境執(zhí)行apollo\scripts\sql\apolloconfigdb.sql
調(diào)整配置并打包:
在Apollo項(xiàng)目中找到目錄apollo\scripts\的配置文件build.bat或者build.bat
數(shù)據(jù)庫配置
修改數(shù)據(jù)庫配置,上面的是ApolloConfigDB配置,下面的是ApolloPortalDB配置:
# apollo config db info 該數(shù)據(jù)庫配置只需要配置一次,不同環(huán)境無需修改
apollo_config_db_url=jdbc:mysql://192.168.35.227:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=XXXX
apollo_config_db_password=XXXX
# apollo portal db info 該數(shù)據(jù)庫依據(jù)不同環(huán)境配置對(duì)應(yīng)的數(shù)據(jù)庫連接,并且需要多次打?qū)?yīng)環(huán)境的JAR包
apollo_portal_db_url=jdbc:mysql://192.168.35.226:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=XXXX
apollo_portal_db_password=XXXX
1
2
3
4
5
6
7
8
9
apollo config db info 該數(shù)據(jù)庫配置只需要配置一次,不同環(huán)境無需修改
apollo portal db info 該數(shù)據(jù)庫依據(jù)不同環(huán)境配置對(duì)應(yīng)的數(shù)據(jù)庫連接,并且需要多次打
修改環(huán)境調(diào)用地址
# meta server url, different environments should have different meta server addresses
dev_meta=http://192.168.35.207:9100
fat_meta=http://192.168.35.208:9100
uat_meta=http://192.168.35.209:9100
pro_meta=http://192.168.35.210:9100
1
2
3
4
5
修改數(shù)據(jù)庫數(shù)據(jù)
在DEV FAT UAT PRO 對(duì)應(yīng)的ApolloConfigDB數(shù)據(jù)庫中,找到表ServerConfig中的eureka.service.url配置項(xiàng):
UPDATE apolloconfigdb.ServerConfig SET ServerConfig.`Value`='http://localhost:9100/eureka/' WHERE `Key`='eureka.service.url';
1
具體eureka配置,可以查看官網(wǎng):https://github.com/ctripcorp/apollo/wiki/分布式部署指南
編譯、打包
./build.sh
1
該腳本會(huì)依次打包apollo-configservice, apollo-adminservice, apollo-portal和apollo-client。
由于ApolloConfigDB在每個(gè)環(huán)境都有部署,所以對(duì)不同環(huán)境的config-service和admin-service需要使用不同的數(shù)據(jù)庫連接信息打不同的包,portal和client只需要打一次包即可
開始部署
部署程序到對(duì)應(yīng)的服務(wù)器
部署apollo-configservice
將apollo-configservice/target/目錄下的apollo-configservice-x.x.x-github.zip上傳到服務(wù)器上,解壓
修改scripts/startup.sh :
LOG_DIR=/opt/logs/100003171
SERVER_PORT=9100
1
2
執(zhí)行scripts/startup.sh即可
如需停止服務(wù),執(zhí)行scripts/shutdown.sh.
部署apollo-adminservice
將apollo-adminservice/target/目錄下的apollo-adminservice-x.x.x-github.zip上傳到服務(wù)器上,解壓
修改scripts/startup.sh:
LOG_DIR=/opt/logs/100003172
SERVER_PORT=9101
1
2
執(zhí)行scripts/startup.sh即可
如需停止服務(wù),執(zhí)行scripts/shutdown.sh.
部署apollo-portal
將apollo-portal/target/目錄下的apollo-portal-x.x.x-github.zip上傳到服務(wù)器上,解壓
修改scripts/startup.sh:
LOG_DIR=/opt/logs/100003173
SERVER_PORT=9102
1
2
執(zhí)行scripts/startup.sh即可
如需停止服務(wù),執(zhí)行scripts/shutdown.sh.
訪問測(cè)試
上面部署完成,可以測(cè)試
訪問不同環(huán)境的eureka,查看服務(wù)注冊(cè)情況是否正確:
http://192.168.35.207:9100/
1
如果可以看到:
192.168.35.207:apollo-adminservice:9101
192.168.35.207:apollo-configservice:9100
1
2
兩個(gè)服務(wù)都為UP,正常!
訪問客戶端:
http://192.168.35.206:9102/
1
登錄,默認(rèn)用戶名密碼為:apollo/admin
新建項(xiàng)目測(cè)試。
三、使用配置中心配置信息
maven引入上面步驟編譯打包成功的apollo-core和apollo-client包:
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-core</artifactId>
<version>0.11.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>0.11.0-SNAPSHOT</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
創(chuàng)建app.properties
請(qǐng)確保classpath:/META-INF/app.properties文件存在,并且其中內(nèi)容為自己的項(xiàng)目名稱,而且要保持唯一:
app.id=demo
1
環(huán)境變量配置
本地開發(fā)
如果是本地開發(fā),可以在開發(fā)工具添加Environment:
env=DEV
1
線上環(huán)境配置方式:
使用Java啟動(dòng)參數(shù)添加java -Denv=YOUR-ENVIRONMENT -jar xxx.jar
通過操作系統(tǒng)的System Environment
通過配置文件:
對(duì)于Mac/Linux,文件位置為/opt/settings/server.properties
對(duì)于Windows,文件位置為C:\opt\settings\server.properties
配置apollo-env.properties
在項(xiàng)目中引用apollo-core和apollo-client包,在apollo-core包中可以看到apollo-env.properties配置文件,默認(rèn)配置為打包前配置的信息:
local.meta=http://localhost:8080
dev.meta=http://192.168.35.207:9100
fat.meta=http://192.168.35.208:9100
uat.meta=http://192.168.35.209:9100
lpt.meta=${lpt_meta}
pro.meta=http://192.168.35.210:9100
1
2
3
4
5
6
如果需要修改或者覆蓋的話,在項(xiàng)目的resources從上面復(fù)制一個(gè)apollo-env.properties文件,修改對(duì)應(yīng)環(huán)境信息就可以了
啟用配置
在啟動(dòng)類添加@EnableApolloConfig注解即可:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author chihiro.zhang
*/
@EnableApolloConfig
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
測(cè)試
添加一個(gè)測(cè)試的類DemoConfiguration,當(dāng)然配置中心要有下面配置的配置信息:
@Configuration
@EnableAutoConfiguration
public class DemoConfiguration {
@Value("${demo}")
private String demo;
}
1
2
3
4
5
6
完成!
四、部署方案
這個(gè)圖是計(jì)劃部署的方案,并不是上面寫的例子的方案
?
總結(jié)
以上是生活随笔為你收集整理的Apollo分布式配置中心部署以及使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react-native 使用 antd
- 下一篇: AT24C0X I2C通信原理