ctrip-apollo多环境部署-史上最简单

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/buyaore_wo/article/details/79847404
一套Portal可以管理多个环境,但是每个环境都需要独立部署一套Config Service、Admin Service和ApolloConfigDB,apollo 0.10.2版本默认支持的环境为:
LOCAL, DEV, FWS, FAT, UAT, LPT, PRO, TOOLS


下面我们以部署一套Portal管理DEV, FAT, UAT三个环境为例具体说明apollo多环境部署
由于服务器有限,我在一台服务器三个目录存放三套apollo,每套使用不同端口来模拟三个服务器,并在一个dbserver上使用三个不同名字的数据库, portal只部署在UAT中, 服务存放目录及数据库对应关系如下表:
环境
目录
configservice
adminservice
portal
数据库名称
DEV
~/apollo/dev
Y
Y
N
ApolloConfigDB
FAT
~/apollo/fat
Y
Y
N
ApolloConfigDB2
UAT
~/apollo/uat
Y
Y
Y
ApolloConfigDB3
ApolloPortalDB

apollo官方文档中提到的各环境meta地址是在build.sh(或build.bat)中定义的,我们不这样做,我们使用运行时通过设置相应参数来实现

部署前准备:
1.下载apollo源码
2.编译打包apollo (需要maven3.5.2+)
进到 apollo\scripts目录下, 执行 build.bat (linux环境使用build.sh)
编译完成我们要使用的adminservice、configserivce及portal包分别位于:
apollo\apollo-adminservice\target\apollo-adminservice-0.10.2-github.zip
apollo\apollo-configservice\target\apollo-configservice-0.10.2-github.zip
apollo\apollo-portal\target\apollo-portal-0.10.2-github.zip
3. 部署服务端服务器
3.1 安装mysql5.7 , 根据实际情况选择新安装还是升级
3.2 安装jdk1.8
如果服务器上运行有其它java应用不能直接升级java版本,可以在服务器上新安装jdk1.8, apollo应用通过设置环境变量来指定使用1.8
1)单独一个linux用户跑apollo, bashrc中设置java_home及path
2)修改apollo启动脚本,指定java_home (此文用到的就是这种方式)
一、apollo服务端

1.1 DEV环境
1.1.1 创建数据库
dev环境没有portal, 所以只需要使用 apollo\scripts\sql\apolloconfigdb.sql,在mysql中创建数据库即可(如果要修改数据库名称,注意到sql文件中修改)

1.1.2 configservice部署
将apollo-configservice-0.10.2-github.zip解压到 ~/apollo/dev/configservice下
修改~/apollo/dev/configservice/script/startup.sh, 配置数据库、几个meta地址
JAVA_HOME=/usr/local/java/jdk1.8.0_161

apollo_config_db_url=jdbc:mysql://localhost:1504/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=16VHKlYTv7Wg
# meta server url
config_server_url=http://127.0.0.1:8280
admin_server_url=http://127.0.0.1:8290
eureka_service_url=$config_server_url/eureka/

## Adjust server port if necessary
SERVER_PORT=8280
## Adjust log dir if necessary
LOG_DIR=$APOLLO_HOME/logs
SERVICE_NAME=apollo-configservice
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"

# JAVA OPTS
BASE_JAVA_OPTS="-Denv=dev -Ddev_meta=$config_server_url"
CONFIG_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.homePageUrl=$config_server_url"
JAVA_OPTS="$CONFIG_JAVA_OPTS -Dspring.datasource.url=$apollo_config_db_url -Dspring.datasource.username=$apollo_config_db_username -Dspring.datasource.password=$apollo_config_db_password"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"


1.1.3 adminservice部署
将apollo-adminservice-0.10.2-github.zip解压到 ~/apollo/dev/adminservice下
修改~/apollo/dev/adminservice/script/startup.sh, 配置数据库、几个meta地址
JAVA_HOME=/usr/local/java/jdk1.8.0_161

apollo_config_db_url=jdbc:mysql://localhost:1504/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=16VHKlYTv7Wg

# meta server url
config_server_url=http://127.0.0.1:8280
admin_server_url=http://127.0.0.1:8290
eureka_service_url=$config_server_url/eureka/
## Adjust server port if necessary
SERVER_PORT=8290

## Adjust log dir if necessary
LOG_DIR=$APOLLO_HOME/logs
SERVICE_NAME=apollo-adminservice
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"

#JAVA OPTS
BASE_JAVA_OPTS="-Denv=dev -Ddev_meta=$config_server_url"
ADMIN_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.homePageUrl=$admin_server_url"
JAVA_OPTS="$ADMIN_JAVA_OPTS -Dspring.datasource.url=$apollo_config_db_url -Dspring.datasource.username=$apollo_config_db_username -Dspring.datasource.password=$apollo_config_db_password"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"

1.2 FAT环境
1.2.1 创建数据库
fat环境也没有portal, 同样只需要使用 apollo\scripts\sql\apolloconfigdb.sql,在mysql中创建数据库即可(如果要修改数据库名称,注意到sql文件中修改)

1.2.2 configservice部署
将apollo-configservice-0.10.2-github.zip解压到 ~/apollo/dev/configservice下
修改~/apollo/dev/configservice/script/startup.sh, 配置数据库、几个meta地址
JAVA_HOME=/usr/local/java/jdk1.8.0_161

apollo_config_db_url=jdbc:mysql://localhost:1504/ApolloConfigDB2?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=16VHKlYTv7Wg

# meta server url
config_server_url=http://127.0.0.1:8180
admin_server_url=http://127.0.0.1:8190
eureka_service_url=$config_server_url/eureka/

## Adjust server port if necessary
SERVER_PORT=8180
## Adjust log dir if necessary
LOG_DIR=$APOLLO_HOME/logs
SERVICE_NAME=apollo-configservice
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"

# JAVA OPTS
BASE_JAVA_OPTS="-Denv=dev -Ddev_meta=$config_server_url"
CONFIG_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.homePageUrl=$config_server_url"
JAVA_OPTS="$CONFIG_JAVA_OPTS -Dspring.datasource.url=$apollo_config_db_url -Dspring.datasource.username=$apollo_config_db_username -Dspring.datasource.password=$apollo_config_db_password"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"


1.2.3 adminservice部署
将apollo-adminservice-0.10.2-github.zip解压到 ~/apollo/dev/adminservice下
修改~/apollo/dev/adminservice/script/startup.sh, 配置数据库、几个meta地址
JAVA_HOME=/usr/local/java/jdk1.8.0_161

apollo_config_db_url=jdbc:mysql://localhost:1504/ApolloConfigDB2?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=16VHKlYTv7Wg

# meta server url
config_server_url=http://127.0.0.1:8180
admin_server_url=http://127.0.0.1:8190
eureka_service_url=$config_server_url/eureka/
## Adjust server port if necessary
SERVER_PORT=8190

## Adjust log dir if necessary
LOG_DIR=$APOLLO_HOME/logs
SERVICE_NAME=apollo-adminservice
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"

#JAVA OPTS
BASE_JAVA_OPTS="-Denv=dev -Ddev_meta=$config_server_url"
ADMIN_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.homePageUrl=$admin_server_url"
JAVA_OPTS="$ADMIN_JAVA_OPTS -Dspring.datasource.url=$apollo_config_db_url -Dspring.datasource.username=$apollo_config_db_username -Dspring.datasource.password=$apollo_config_db_password"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"

1.3 UAT环境
1.3.1 创建数据库
uat环境有portal, 需要分别使用 apollo\scripts\sql\apolloconfigdb.sql和apollo\scripts\sql\apolloportaldb.sql,在mysql中创建配置数据库和portal数据库 (如果要修改数据库名称,注意到sql文件中修改)
portal数据库ServerConfig表中apollo.portal.envs配置的环境为
DEV, FAT, UAT

1.3.2 configservice部署
将apollo-configservice-0.10.2-github.zip解压到 ~/apollo/dev/configservice下
修改~/apollo/dev/configservice/script/startup.sh, 配置数据库、几个meta地址
JAVA_HOME=/usr/local/java/jdk1.8.0_161

apollo_config_db_url=jdbc:mysql://localhost:1504/ApolloConfigDB3?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=16VHKlYTv7Wg

# meta server url
config_server_url=http://127.0.0.1:8080
admin_server_url=http://127.0.0.1:8090
eureka_service_url=$config_server_url/eureka/

## Adjust server port if necessary
SERVER_PORT=8080
## Adjust log dir if necessary
LOG_DIR=$APOLLO_HOME/logs
SERVICE_NAME=apollo-configservice
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"

# JAVA OPTS
BASE_JAVA_OPTS="-Denv=dev -Ddev_meta=$config_server_url"
CONFIG_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.homePageUrl=$config_server_url"
JAVA_OPTS="$CONFIG_JAVA_OPTS -Dspring.datasource.url=$apollo_config_db_url -Dspring.datasource.username=$apollo_config_db_username -Dspring.datasource.password=$apollo_config_db_password"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"


1.2.3 adminservice部署
将apollo-adminservice-0.10.2-github.zip解压到 ~/apollo/dev/adminservice下
修改~/apollo/dev/adminservice/script/startup.sh, 配置数据库、几个meta地址
JAVA_HOME=/usr/local/java/jdk1.8.0_161

apollo_config_db_url=jdbc:mysql://localhost:1504/ApolloConfigDB3?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=16VHKlYTv7Wg

# meta server url
config_server_url=http://127.0.0.1:8180
admin_server_url=http://127.0.0.1:8190
eureka_service_url=$config_server_url/eureka/
## Adjust server port if necessary
SERVER_PORT=8190

## Adjust log dir if necessary
LOG_DIR=$APOLLO_HOME/logs
SERVICE_NAME=apollo-adminservice
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"

#JAVA OPTS
BASE_JAVA_OPTS="-Denv=dev -Ddev_meta=$config_server_url"
ADMIN_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.homePageUrl=$admin_server_url"
JAVA_OPTS="$ADMIN_JAVA_OPTS -Dspring.datasource.url=$apollo_config_db_url -Dspring.datasource.username=$apollo_config_db_username -Dspring.datasource.password=$apollo_config_db_password"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"

1.3.4 portal部署
将apollo-portal-0.10.2-github.zip解压到 ~/apollo/uat/portal
修改~/apollo/uat/portal /script/startup.sh, 配置数据库、几个meta地址
JAVA_HOME=/usr/local/java/jdk1.8.0_161

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:1504/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=16VHKlTv7Wg

# meta server url
dev_config_server_url=http://127.0.0.1:8280
fat_config_server_url=http://127.0.0.1:8180
uat_config_server_url=http://127.0.0.1:8080

## Adjust server port if necessary
SERVER_PORT=8070

## Adjust log dir if necessary
LOG_DIR=$APOLLO_HOME/logs
SERVICE_NAME=apollo-portal
PATH_TO_JAR=$SERVICE_NAME".jar"
SERVER_URL="http://localhost:$SERVER_PORT"

BASE_JAVA_OPTS=" -Ddev_meta=$dev_config_server_url -Dfat_meta=$fat_config_server_url -Duat_meta=$uat_config_server_url"
PORTAL_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github,auth"
JAVA_OPTS="$PORTAL_JAVA_OPTS -Dspring.datasource.url=$apollo_portal_db_url -Dspring.datasource.username=$apollo_portal_db_username -Dspring.datasource.password=$apollo_portal_db_password"
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/heap_trace.txt -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"



1.4 注意事项
1.4.1 portal数据库ServerConfig表中apollo.portal.envs配置所有支持的环境
DEV, FAT, UAT

1.4.2 portal启动参数设置需要管理的所有环境的meta地址,如:
# meta server url
dev_config_server_url=http://106.75.28.32:8080
fat_config_server_url=http://106.75.28.32:8180
uat_config_server_url=http://106.75.28.32:8280
-Ddev_meta=$dev_config_server_url -Dfat_meta=$fat_config_server_url -Duat_meta=$uat_config_server_url

1.4.3 每个环境的adminservice和configservice设置各自的meta地址及 homePageUrl,如
-Dfat_meta=$config_server_url -Deureka.instance.homePageUrl=$config_server_url

1.4.4 新加环境配置后,已经有的项目, 可以通过补缺环境操作来把缺失的环境项目补上

二、apollo客户端
1.设置环境变量
三种方法, 参看官方文档

2.每个客户端在apollo-env.properties中设置相应环境的meta地址,如
dev.meta=http\://a.test.net\:8280
fat.meta=http\://a.test.net\:8180
uat.meta=http\://a.test.net\:8080

猜你喜欢

转载自blog.csdn.net/buyaore_wo/article/details/79847404