一、准备工作
1.Java
Apollo服务端:1.8+
Apollo客户端:1.7+
2.MySQL
版本要求:5.6.5+
查看版本命令:SHOW VARIABLES WHERE Variable_name = 'version';
3.环境
Apollo目前支持以下环境:DEV(开发环境)、FAT(测试环境)、UAT(验收环境)、PRO(生产环境)
部署策略示例:
Portal部署在生产环境的机房,通过它来直接管理FAT、UAT、PRO等环境的配置
Meta Server、Config Service和Admin Service在每个环境都单独部署,使用独立的数据库
Meta Server、Config Service和Admin Service在生产环境部署在两个机房,实现双活
Meta Server和Config Service部署在同一个JVM进程内,Admin Service部署在同一台服务器的另一个JVM进程内
二、部署步骤
1.创建数据库
1.1 创建ApolloPortalDB
导入apolloportaldb.sql后,执行以下语句进行验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
注:ApolloPortalDB只需要在生产环境部署一个即可
1.2 创建ApolloConfigDB
导入apolloconfigdb.sql后,执行以下语句进行验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
注:ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB
1.3 调整服务端配置
1.3.1 调整ApolloPortalDB配置
配置项统一存储在ApolloPortalDB.ServerConfig表中。
apollo.portal.envs - 可支持的环境列表
默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:DEV,FAT,UAT,PRO
organizations - 部门列表
Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息,样例如下:
[{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"}]
superAdmin - Portal超级管理员
超级管理员拥有所有权限,需要谨慎设置。
如果没有接入自己公司的SSO系统的话,可以先暂时使用默认值apollo(默认用户)。
等接入后,修改为实际使用的账号,多个账号以英文逗号分隔(,)。
consumer.token.salt - consumer token salt
如果会使用开放平台API的话,可以设置一个token salt。如果不使用,可以忽略。
wiki.address
portal上“帮助”链接的地址,默认是Apollo github的wiki首页,可自行设置。
admin.createPrivateNamespace.switch
是否允许项目管理员创建private namespace。设置为true允许创建,设置为false则项目管理员在页面上看不到创建private namespace的选项。
1.3.2 调整ApolloConfigDB配置
配置项统一存储在ApolloConfigDB.ServerConfig表中,需要注意每个环境的ApolloConfigDB.ServerConfig都需要单独配置。
eureka.service.url - Eureka服务Url
不管是apollo-configservice还是apollo-adminservice都需要向eureka服务注册,所以需要配置eureka服务地址。
如有多个,用逗号分隔(注意不要忘了/eureka/后缀)。
需要注意的是每个环境只填入自己环境的eureka服务地址.
namespace.lock.switch - 一次发布只能有一个人修改开关,用于发布审核
这是一个功能开关,如果配置为true的话,那么一次配置发布只能是一个人修改,另一个发布。
config-service.cache.enabled - 是否开启配置缓存
这是一个功能开关,如果配置为true的话,config service会缓存加载过的配置信息,从而加快后续配置获取性能。
默认为false,开启前请先评估总配置大小并调整config service内存配置。
2.获取安装包
2.1 直接下载安装包
2.1.1 获取apollo-configservice、apollo-adminservice、apollo-portal安装包
从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zip、apollo-adminservice-x.x.x-github.zip
和apollo-portal-x.x.x-github.zip即可。
2.1.2 配置数据库连接信息
2.1.2.1 配置apollo-configservice的数据库连接信息
解压apollo-configservice-x.x.x-github.zip
用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
修改完的效果如下:
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
注:由于ApolloConfigDB在每个环境都有部署,所以对不同的环境config-service需要配置对应环境的数据库参数
2.1.2.2 配置apollo-adminservice的数据库连接信息
解压apollo-adminservice-x.x.x-github.zip
用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
填写正确的ApolloConfigDB数据库连接串信息,注意用户名和密码后面不要有空格!
修改完的效果如下:
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
注:由于ApolloConfigDB在每个环境都有部署,所以对不同的环境admin-service需要配置对应环境的数据库参数
2.1.2.3 配置apollo-portal的数据库连接信息
解压apollo-portal-x.x.x-github.zip
用程序员专用编辑器(如vim,notepad++,sublime等)打开config目录下的application-github.properties文件
填写正确的ApolloPortalDB数据库连接串信息,注意用户名和密码后面不要有空格!
修改完的效果如下:
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
2.1.2.4 配置apollo-portal的meta service信息
Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息。
打开apollo-portal-x.x.x-github.zip中config目录下的apollo-env.properties文件进行配置,如:
dev.meta=http://1.1.1.1:8080
fat.meta=http://apollo.fat.xxx.com
uat.meta=http://apollo.uat.xxx.com
pro.meta=http://apollo.xxx.com
2.1.3 获取apollo-client相关jar包(略)
2.2 通过源码构建(略)
2.3 部署Apollo服务端
2.3.1 部署apollo-configservice
启动服务:scripts/startup.sh
停止服务:scripts/shutdown.sh
注:根据情况可修改startup.sh文件中的端口号、JAVA_OPTS、日志输出目录等
2.3.2 部署apollo-adminservice
启动服务:scripts/startup.sh
停止服务:scripts/shutdown.sh
注:根据情况可修改startup.sh文件中的端口号、JAVA_OPTS、日志输出目录等
2.3.3 部署apollo-portal
启动服务:scripts/startup.sh
停止服务:scripts/shutdown.sh
注:根据情况可修改startup.sh文件中的端口号、JAVA_OPTS、日志输出目录等