一、准备工作

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+

二、部署步骤

部署步骤共三步:

  1. 创建数据库
    • Apollo服务端依赖于MySQL数据库,所以需要事先创建并完成初始化
  2. 获取安装包
    • Apollo服务端安装包共有3个:apollo-configservice, apollo-adminservice, apollo-portal
      • 可以直接下载我们事先打好的安装包,也可以自己通过源码构建
  3. 部署Apollo服务端
    • 获取安装包后就可以部署到公司的测试和生产环境了

2.1 创建数据库

Apollo服务端共需要两个数据库:ApolloPortalDBApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了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/后缀),样例如下:

  1. 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.zipapollo-adminservice-x.x.x-github.zipapollo-portal-x.x.x-github.zip即可。

2.2.2 配置数据库连接信息

Apollo服务端需要知道如何连接到你前面创建的数据库,数据库连接串信息位于上一步下载的压缩包(apollo-configservice-x.x.x-github.zipapollo-adminservice-x.x.x-github.zipapollo-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.zipconfig目录下的apollo-env.properties文件。

  1. dev.meta=http://1.1.1.1:8080
  2. fat.meta=http://apollo.fat.xxx.com
  3. uat.meta=http://apollo.uat.xxx.com
  4. 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/