一、准备工作
1.1 运行时环境
1.1.1 OS
服务端基于Spring Boot,启动脚本理论上支持所有Linux发行版,建议CentOS 7。
1.1.2 Java
- Apollo服务端:1.8+
- Apollo客户端:1.7+
1.2 MySQL
- 版本要求:5.6.5+
二、部署步骤
部署步骤共三步:
- 创建数据库
- Apollo服务端依赖于MySQL数据库,所以需要事先创建并完成初始化
- 获取安装包
- Apollo服务端安装包共有3个:apollo-configservice, apollo-adminservice, apollo-portal
- 可以直接下载我们事先打好的安装包,也可以自己通过源码构建
- Apollo服务端安装包共有3个:apollo-configservice, apollo-adminservice, apollo-portal
- 部署Apollo服务端
- 获取安装包后就可以部署到公司的测试和生产环境了
2.1 创建数据库
Apollo服务端共需要两个数据库:ApolloPortalDB
和ApolloConfigDB
,我们把数据库、表的创建和样例数据都分别准备了sql文件(从GitHub Release页面下载最新版本源码),只需要导入数据库即可。
2.1.1 创建ApolloPortalDB
通过各种MySQL客户端导入scripts/db/migration/portaldb/V1.0.0__initialization.sql
即可。
2.1.2 创建ApolloConfigDB
通过各种MySQL客户端导入scripts/db/migration/configdb/V1.0.0__initialization.sql即可。
2.1.3 调整服务端配置
2.1.3.1 调整ApolloPortalDB配置
配置项统一存储在ApolloPortalDB.ServerConfig表中,也可以通过管理员工具 - 系统参数
页面进行配置,无特殊说明则修改完一分钟实时生效。
1.apollo.portal.envs - 可支持的环境列表
默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:
DEV,FAT,UAT,PRO
2.organizations - 部门列表
Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息,样例如下:
[{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"}]
2.1.3.2 调整ApolloConfigDB配置
配置项统一存储在ApolloConfigDB.ServerConfig表中,需要注意每个环境的ApolloConfigDB.ServerConfig都需要单独配置,修改完一分钟实时生效。
1. eureka.service.url - Eureka服务Url(必须修改)
不管是apollo-configservice还是apollo-adminservice都需要向eureka服务注册,所以需要配置eureka服务地址。 按照目前的实现,apollo-configservice本身就是一个eureka服务,所以只需要填入apollo-configservice的地址即可,如有多个,用逗号分隔(注意不要忘了/eureka/后缀),样例如下:
http://1.1.1.1:8080/eureka/,http://2.2.2.2:8080/eureka/
2.2 获取安装包并修改配置
2.2.1 直接下载安装包
2.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.2.2 配置数据库连接信息
Apollo服务端需要知道如何连接到你前面创建的数据库,数据库连接串信息位于上一步下载的压缩包(apollo-configservice-x.x.x-github.zip
、apollo-adminservice-x.x.x-github.zip
和apollo-portal-x.x.x-github.zip
)中的config/application-github.properties
中
2.2.3 配置apollo-portal的meta service信息
Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息。默认情况下,meta service和config service是部署在同一个JVM进程,所以meta service的地址就是config service的地址。
使用程序员专用编辑器(如vim,notepad++,sublime等)打开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
注1: 为了实现meta service的高可用,推荐通过SLB(Software Load Balancer)做动态负载均衡
2.3 部署Apollo服务端
2.3.1 部署apollo-configservice
将对应环境的apollo-configservice-x.x.x-github.zip
上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.
2.3.2 部署apollo-adminservice
将对应环境的apollo-adminservice-x.x.x-github.zip
上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.
2.3.3 部署apollo-portal
将apollo-portal-x.x.x-github.zip
上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.
打开portal页面验证启动成功:http://127.0.0.1:8070/