使用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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章