服务端基于Spring Boot,启动脚本理论上支持所有Linux发行版,建议CentOS 7。
由于需要同时运行服务端和客户端,所以建议安装Java 1.8+。
对于Apollo客户端,运行时环境只需要1.7+即可。
注:对于Apollo客户端,如果有需要的话,可以做少量代码修改来降级到Java 1.6,详细信息可以参考Issue 483
在配置好后,可以通过如下命令检查:
java -version
样例输出
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
Apollo的表结构对timestamp
使用了多个default声明,所以需要5.6.5以上版本。
连接上MySQL后,可以通过如下命令检查:
show VARIABLES where Variable_name = 'version';
±--------------±-------+
| Variable_name | Value |
±--------------±-------+
| version | 5.7.32 |
±--------------±-------+
分布式部署需要事先确定部署的环境以及部署方式。
Apollo目前支持以下环境:
如果希望添加自定义的环境名称,具体步骤可以参考部署&开发遇到的常见问题#42-添加自定义的环境
以ctrip为例,我们的部署策略如下:
二、部署过程
部署步骤总体还是比较简单的,Apollo的唯一依赖是数据库,所以需要首先把数据库准备好,然后根据实际情况,选择不同的部署方式:
Apollo服务端共需要两个数据库:ApolloPortalDB
和ApolloConfigDB
,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。
需要注意的是ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB。
注意:如果你本地已经创建过Apollo数据库,请注意备份数据。我们准备的sql文件会清空Apollo相关的表。
2.1.1.1 创建ApolloPortalDB
可以根据实际情况选择通过手动导入SQL或是通过Flyway自动导入SQL创建。
通过各种MySQL客户端导入apolloportaldb.sql即可。
以MySQL原生客户端为例:
source /your_local_path/scripts/sql/apolloportaldb.sql
需要1.3.0及以上版本
flyway.user
、flyway.password
和flyway.url
配置mvn -N -Pportaldb flyway:migrate
导入成功后,可以通过执行以下sql语句来验证:
SELECT `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
Id | Key | Value | Comment |
---|---|---|---|
1 | apollo.portal.envs | dev | 可支持的环境列表 |
注:ApolloPortalDB只需要在生产环境部署一个即可
可以根据实际情况选择通过手动导入SQL或是通过Flyway自动导入SQL创建。
通过各种MySQL客户端导入apolloconfigdb.sql即可。
以MySQL原生客户端为例:
source /your_local_path/scripts/sql/apolloconfigdb.sql
需要1.3.0及以上版本
flyway.user
、flyway.password
和flyway.url
配置mvn -N -Pconfigdb flyway:migrate
导入成功后,可以通过执行以下sql语句来验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
Id | Key | Value | Comment |
---|---|---|---|
1 | eureka.service.url | http://127.0.0.1:8080/eureka/ | Eureka服务Url,多个service以英文逗号分隔 |
注:ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB
可以通过两种方式获取安装包:
从GitHub Release页面下载最新版本的apollo-configservice-x.x.x-github.zip
、apollo-adminservice-x.x.x-github.zip
和apollo-portal-x.x.x-github.zip
即可。
Apollo服务端需要知道如何连接到你前面创建的数据库,数据库连接串信息位于上一步下载的压缩包中的config/application-github.properties
中。
apollo-configservice-x.x.x-github.zip
config
目录下的application-github.properties
文件# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
注:由于ApolloConfigDB在每个环境都有部署,所以对不同的环境config-service需要配置对应环境的数据库参数
apollo-adminservice-x.x.x-github.zip
config
目录下的application-github.properties
文件# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
注:由于ApolloConfigDB在每个环境都有部署,所以对不同的环境admin-service需要配置对应环境的数据库参数
apollo-portal-x.x.x-github.zip
config
目录下的application-github.properties
文件# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息。默认情况下,meta service和config service是部署在同一个JVM进程,所以meta service的地址就是config service的地址。
对于1.6.0及以上版本,可以通过ApolloPortalDB.ServerConfig中的配置项来配置Meta Service地址,详见apollo.portal.meta.servers - 各环境Meta Service列表
使用程序员专用编辑器(如vim,notepad++,sublime等)打开apollo-portal-x.x.x-github.zip
中config
目录下的apollo-env.properties
文件。