使用apollo管理多個環境的服務配置

本文是對apollo管理多個服務(dev、sit、uat、prod)配置文件的安裝與配置做了簡單的介紹

具體效果如下圖所示:
apollo使用展示

1,項目預部署(sit環境需要修改apollo代碼,參見文檔:Apollo添加自定義的環境

開發環境: dev
	configservice(包括jar包啓用的eureka):192.168.1.235:18080;
	adminservice:192.168.1.235:18090;

測試環境: sit
	configservice(包括jar包啓用的eureka):192.168.1.235:18081;
	adminservice:192.168.1.235:18091;

UAT環境: uat
	configservice(包括jar包啓用的eureka):192.168.1.235:18082;
	adminservice:192.168.1.235:18092;

portal服務: 192.168.1.235:18070;

2,環境準備

java : 1.8+

mysql : 5.6.5+

下載:https://github.com/ctripcorp/apollo/tree/master/scripts/sql目錄下的兩個sql文件,

導入三份apolloconfigdb.sql並命名爲ApolloConfigDB , ApolloConfigDB_SIT , ApolloConfigDB_UAT,分別對應開發環境、測試環境、uat環境。

導入一份apolloportaldb.sql做爲客戶端啓動數據準備,可以管理三個環境的數據。

3,準備編譯代碼

從以下路徑檢出主分支代碼:https://github.com/ctripcorp/apollo。
修改scripts下的build.bat,修改數據庫配置信息,和各環境配置
@echo off

rem apollo config db info
set apollo_config_db_url="jdbc:mysql://192.168.1.233:3306/ApolloConfigDB?characterEncoding=utf8"
set apollo_config_db_username="root"
set apollo_config_db_password="Yh940904@"

rem apollo portal db info
set apollo_portal_db_url="jdbc:mysql://192.168.1.233:3306/ApolloPortalDB?characterEncoding=utf8"
set apollo_portal_db_username="root"
set apollo_portal_db_password="Yh940904@"

rem meta server url, different environments should have different meta server addresses
set dev_meta="http://192.168.1.235:8080"
set fat_meta="http://192.168.1.235:8081"
set uat_meta="http://192.168.1.235:8082"

set META_SERVERS_OPTS=-Ddev_meta=%dev_meta% -Dfat_meta=%fat_meta% -Duat_meta=%uat_meta% -Dpro_meta=%pro_meta%

rem =============== Please do not modify the following content =============== 
rem go to script directory
cd "%~dp0"

cd ..

rem package config-service and admin-service
echo "==== starting to build config-service and admin-service ===="

call mvn clean package -DskipTests -pl apollo-configservice,apollo-adminservice -am -Dapollo_profile=github -Dspring_datasource_url=%apollo_config_db_url% -Dspring_datasource_username=%apollo_config_db_username% -Dspring_datasource_password=%apollo_config_db_password%

echo "==== building config-service and admin-service finished ===="

echo "==== starting to build portal ===="

call mvn clean package -DskipTests -pl apollo-portal -am -Dapollo_profile=github,auth -Dspring_datasource_url=%apollo_portal_db_url% -Dspring_datasource_username=%apollo_portal_db_username% -Dspring_datasource_password=%apollo_portal_db_password% %META_SERVERS_OPTS%

echo "==== building portal finished ===="

echo "==== starting to build client ===="

call mvn clean install -DskipTests -pl apollo-client -am %META_SERVERS_OPTS%

echo "==== building client finished ===="

pause

4,開始編譯代碼

執行build.bat編譯apollo項目,編譯完成併成功後,取出以下三個壓縮包:

apollo-adminservice/target/apollo-adminservice-0.11.0-github.zip
apollo-configservice/target/apollo-configservice-0.11.0-github.zip
apollo-portal/target/apollo-portal-0.11.0-github.zip

5, 部署linux環境

創建目錄/app/runtimes/apollo/lib,並上傳三個壓縮包到該文件夾,
創建以下目錄並複製對應的壓縮包到該目錄:
/app/runtimes/apollo/dev/configservice/apollo-configservice-0.11.0-github.zip
/app/runtimes/apollo/dev/adminservice/apollo-adminservice-0.11.0-github.zip

/app/runtimes/apollo/sit/configservice/apollo-configservice-0.11.0-github.zip
/app/runtimes/apollo/sit/adminservice/apollo-adminservice-0.11.0-github.zip

/app/runtimes/apollo/uat/configservice/apollo-configservice-0.11.0-github.zip
/app/runtimes/apollo/uat/adminservice/apollo-adminservice-0.11.0-github.zip

/app/runtimes/apollo/portal/apollo-portal-0.11.0-github.zip

6, 配置各環境服務參數

解壓各文件夾壓縮包並修改參數,例如dev環境的參數:

vim /app/runtimes/apollo/dev/configservice/config/application-github.properties

# DataSource
spring.datasource.url = jdbc:mysql://192.168.1.233:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = Yh940904@

同時最好將各環境的每個服務的app.properties的appid設爲惟一值(未測試是否存在影響)

修改configservice日誌路徑和端口:

vim /app/runtimes/apollo/dev/configservice/scripts/startup.sh

## Adjust log dir if necessary
LOG_DIR=/app/logs/apollo/configservice-dev
## Adjust server port if necessary
SERVER_PORT=18080

vim /app/runtimes/apollo/dev/adminservice/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://192.168.1.233:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = Yh940904@

修改adminservice日誌路徑和端口:

vim /app/runtimes/apollo/dev/adminservice/scripts/startup.sh

## Adjust log dir if necessary
LOG_DIR=/app/logs/apollo/adminservice-dev
## Adjust server port if necessary
SERVER_PORT=18090

sit環境與uat環境和dev環境進行同樣的配置修改,保持不同的數據庫連接地址、日誌路徑和啓動端口
這裏sit環境的數據庫連接地址爲jdbc:mysql://192.168.1.233:3306/ApolloConfigDB_SIT?characterEncoding=utf8
端口爲18081、18091

uat環境的數據庫連接地址爲jdbc:mysql://192.168.1.233:3306/ApolloConfigDB_UAT?characterEncoding=utf8
端口爲18082、18092

修改portal服務的配置

vim /app/runtimes/apollo/portal/config/apollo-env.properties

local.meta=http://localhost:18080
dev.meta=http://192.168.1.235:18080
sit.meta=http://192.168.1.235:18081
uat.meta=http://192.168.1.235:18082
lpt.meta=${lpt_meta}
pro.meta=

vim /app/runtimes/apollo/portal/config/application-github.properties

# DataSource
spring.datasource.url = jdbc:mysql://192.168.1.233:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = Yh940904@

修改portal的日誌路徑和端口

vim /app/runtimes/apollo/portal/scripts/startup.sh

## Adjust log dir if necessary
LOG_DIR=/app/logs/apollo/portal
## Adjust server port if necessary
SERVER_PORT=18070

7, 修改數據庫配置

修改ApolloPortalDB數據庫的ServerConfig表:
	apollo.portal.envs = dev,sit,uat
	organizations = [{"orgId":"saas","orgName":"電商項目"},{"orgId":"WB","orgName":"維保項目"}]

修改ApolloConfigDB數據庫的ServerConfig表:
	eureka.service.url = http://localhost:18080/eureka/

修改ApolloConfigDB_SIT數據庫的ServerConfig表:
	eureka.service.url = http://localhost:18081/eureka/

修改ApolloConfigDB_UAT數據庫的ServerConfig表:
	eureka.service.url = http://localhost:18082/eureka/

這裏的eureka的地址每個環境必須保持不同,因爲apollo啓動時相當於在每個環境都啓動了一個eureka服務,如果沒有配置的話,會造成多個環境的adminservice和configservice註冊在同一個eureka,造成修改dev環境配置文件的數據,sit環境配置文件數據也會發生修改。

8, 編輯服務啓動腳本:

#!/bin/bash

echo "啓動開發環境apollo服務..."
/app/runtimes/apollo/dev/configservice/scripts/startup.sh 
/app/runtimes/apollo/dev/adminservice/scripts/startup.sh 

echo "啓動測試環境apollo服務..."
/app/runtimes/apollo/sit/configservice/scripts/startup.sh 
/app/runtimes/apollo/sit/adminservice/scripts/startup.sh 

echo "啓動UAT環境apollo服務..."
/app/runtimes/apollo/uat/configservice/scripts/startup.sh 
/app/runtimes/apollo/uat/adminservice/scripts/startup.sh 

echo "啓動apollo的protal服務..."
/app/runtimes/apollo/portal/scripts/startup.sh 

賦權並執行後可以按順序一個一個啓動服務(這裏需要注意,每個環境需要先啓動configservice,後啓動adminservice)。啓動完成後訪問192.168.1.235:18070,使用用戶名密碼apollo/admin登錄

9,編輯服務停止腳本:

#!/bin/bash
echo "關閉apollo所有環境..."
/app/runtimes/apollo/dev/configservice/scripts/shutdown.sh 
/app/runtimes/apollo/dev/adminservice/scripts/shutdown.sh 
/app/runtimes/apollo/sit/configservice/scripts/shutdown.sh 
/app/runtimes/apollo/sit/adminservice/scripts/shutdown.sh 
/app/runtimes/apollo/uat/configservice/scripts/shutdown.sh 
/app/runtimes/apollo/uat/adminservice/scripts/shutdown.sh 
/app/runtimes/apollo/portal/scripts/shutdown.sh 

服務將按順序停止
更多內容請參考:https://github.com/ctripcorp/apollo/wiki
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章