1. 程式人生 > >pollo分布式配置中心部署以及使用(轉發)

pollo分布式配置中心部署以及使用(轉發)

pretty depend csdn top keyword process ble .com 方案

pollo分布式配置中心部署以及使用

2018年06月12日 16:38:46 閱讀數:1427

一、簡介

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

官方github:https://github.com/ctripcorp/apollo

作者對Apollo對介紹:https://github.com/ctripcorp/apollo/wiki/Apollo%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%BF%83%E4%BB%8B%E7%BB%8D

二、安裝部署

基礎設施

本次部署環境為DEV(開發環境)、FAT(測試環境)、UAT(預生產)、PRO(生產)

應用服務器:

環境服務器服務端口
/ 192.168.35.206 apollo-portal 9102
DEV 192.168.35.207 apollo-configservice
apollo-adminservice
9100
9101
FAT 192.168.35.208 apollo-configservice
apollo-adminservice
9100
9101
UAT 192.168.35.209 apollo-configservice
apollo-adminservice
9100
9101
PRO 192.168.35.210 apollo-configservice
apollo-adminservice
9100
9101

數據庫服務器:

環境服務器服務數據庫端口
/ 192.168.35.226 apollo-portal ApolloPortalDB 3306
DEV 192.168.35.227 apollo-configservice
apollo-adminservice
ApolloConfigDB 3306
FAT 192.168.35.228 apollo-configservice
apollo-adminservice
ApolloConfigDB 3306
UAT 192.168.35.229 apollo-configservice
apollo-adminservice
ApolloConfigDB 3306
PRO 192.168.35.230 apollo-configservice
apollo-adminservice
ApolloConfigDB 3306

配置

下載代碼:

git clone https://github.com/ctripcorp/apollo.git
  • 1

比較重要的幾個項目:
- apollo-configservice:提供配置獲取接口,提供配置更新推送接口,接口服務對象為Apollo客戶端
- apollo-adminservice:提供配置管理接口,提供配置修改、發布等接口,接口服務對象為Portal,以及Eureka
- apollo-portal:提供Web界面供用戶管理配置
- apollo-client:Apollo提供的客戶端程序,為應用提供配置獲取、實時更新等功能

技術分享圖片

上圖簡要描述了配置發布的大致過程:

  • 用戶在Portal操作配置發布
  • Portal調用Admin Service的接口操作發布
  • Admin Service發布配置後,發送ReleaseMessage給各個Config Service
  • Config Service收到ReleaseMessage後,通知對應的客戶端

數據庫初始化:

下面的sql為大寫格式,註意數據庫的大小寫敏感設置

  • ApolloPortalDB:執行apollo\scripts\sql\apolloportaldb.sql
  • ApolloConfigDB:DEV FAT UAT PRO 環境執行apollo\scripts\sql\apolloconfigdb.sql

調整配置並打包:

Apollo項目中找到目錄apollo\scripts\的配置文件build.bat或者build.bat
1. 數據庫配置
修改數據庫配置,上面的是ApolloConfigDB配置,下面的是ApolloPortalDB配置:

# apollo config db info  該數據庫配置只需要配置一次,不同環境無需修改
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  該數據庫依據不同環境配置對應的數據庫連接,並且需要多次打對應環境的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 該數據庫配置只需要配置一次,不同環境無需修改
  • apollo portal db info 該數據庫依據不同環境配置對應的數據庫連接,並且需要多次打

    1. 修改環境調用地址
# 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
  1. 修改數據庫數據

在DEV FAT UAT PRO 對應的ApolloConfigDB數據庫中,找到表ServerConfig中的eureka.service.url配置項:

UPDATE apolloconfigdb.ServerConfig SET ServerConfig.`Value`=‘http://localhost:9100/eureka/‘ WHERE `Key`=‘eureka.service.url‘;
  • 1

具體eureka配置,可以查看官網:https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

  1. 編譯、打包
./build.sh
  • 1
  • 該腳本會依次打包apollo-configservice, apollo-adminservice, apollo-portal和apollo-client。
  • 由於ApolloConfigDB在每個環境都有部署,所以對不同環境的config-service和admin-service需要使用不同的數據庫連接信息打不同的包,portal和client只需要打一次包即可

開始部署

部署程序到對應的服務器

  1. 部署apollo-configservice

apollo-configservice/target/目錄下的apollo-configservice-x.x.x-github.zip上傳到服務器上,解壓
修改scripts/startup.sh

LOG_DIR=/opt/logs/100003171
SERVER_PORT=9100
  • 1
  • 2

執行scripts/startup.sh即可
如需停止服務,執行scripts/shutdown.sh.

  1. 部署apollo-adminservice

apollo-adminservice/target/目錄下的apollo-adminservice-x.x.x-github.zip上傳到服務器上,解壓
修改scripts/startup.sh

LOG_DIR=/opt/logs/100003172
SERVER_PORT=9101
  • 1
  • 2

執行scripts/startup.sh即可
如需停止服務,執行scripts/shutdown.sh.

  1. 部署apollo-portal

apollo-portal/target/目錄下的apollo-portal-x.x.x-github.zip上傳到服務器上,解壓
修改scripts/startup.sh

LOG_DIR=/opt/logs/100003173
SERVER_PORT=9102
  • 1
  • 2

執行scripts/startup.sh即可
如需停止服務,執行scripts/shutdown.sh.

訪問測試

上面部署完成,可以測試

訪問不同環境的eureka,查看服務註冊情況是否正確:

http://192.168.35.207:9100/
  • 1

如果可以看到:

192.168.35.207:apollo-adminservice:9101
192.168.35.207:apollo-configservice:9100
  • 1
  • 2

兩個服務都為UP,正常!

訪問客戶端:

http://192.168.35.206:9102/
  • 1

登錄,默認用戶名密碼為:apollo/admin

新建項目測試。

三、使用配置中心配置信息

  1. maven引入上面步驟編譯打包成功的apollo-coreapollo-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
  1. 創建app.properties

請確保classpath:/META-INF/app.properties文件存在,並且其中內容為自己的項目名稱,而且要保持唯一:

app.id=demo
  • 1
  1. 環境變量配置

本地開發

如果是本地開發,可以在開發工具添加Environment:

env=DEV
  • 1

線上環境配置方式:
- 使用Java啟動參數添加java -Denv=YOUR-ENVIRONMENT -jar xxx.jar
- 通過操作系統的System Environment
- 通過配置文件:
對於Mac/Linux,文件位置為/opt/settings/server.properties
對於Windows,文件位置為C:\opt\settings\server.properties

  1. 配置apollo-env.properties

在項目中引用apollo-coreapollo-client包,在apollo-core包中可以看到apollo-env.properties配置文件,默認配置為打包前配置的信息:

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

如果需要修改或者覆蓋的話,在項目的resources從上面復制一個apollo-env.properties文件,修改對應環境信息就可以了

  1. 啟用配置
    在啟動類添加@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
  1. 測試

添加一個測試的類DemoConfiguration,當然配置中心要有下面配置的配置信息:

@Configuration
@EnableAutoConfiguration
public class DemoConfiguration {
    @Value("${demo}")
    private String demo;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

完成!

四、部署方案

這個圖是計劃部署的方案,並不是上面寫的例子的方案

技術分享圖片

pollo分布式配置中心部署以及使用(轉發)