基本知识及概念可参考Apolle 基础篇
必要条件
- os:centOS7
- jdk:1.8+
- mysql: 5.6.5+
安装部署
官方部署策略例子
我的样例部署图
部署步骤
创建数据库
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,数据库、表的创建和样例数据都分别准备了sql文件(官方git获取),只需要导入数据库即可。需要注意的是ApolloPortalDB只需要在环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB
ApolloPortalDB必要配置说明
配置项统一存储在ApolloPortalDB.ServerConfig表中,也可以通过[管理员工具] – [系统参数]页面进行配置,无特殊说明则修改完一分钟实时生效
Key | 描述 | value | 备注 |
apollo.portal.envs | 可支持的环境列表 | DEV,FAT,UAT,PRO | 默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感) |
apollo.portal.meta.servers | 各环境Meta Service列表 | {"DEV":"http://1.1.1.1:8080", "FAT":"http://apollo.fat.xxx.com", "UAT":"http://apollo.uat.xxx.com", "PRO":"http://apollo.xxx.com"} | Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息 |
organizations | 部门列表 | [{"orgId":"TEST1","orgName":"样例部门1"}] | Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息 |
prefix.path | 设置Portal挂载到nginx/slb后的相对路径 | /apollo | 如果希望在Portal前挂软负载,一般情况下建议直接使用根目录来挂载,不过如果有些情况希望和其它应用共用nginx/slb,需要加上相对路径,那么可以配置此项 |
ApolloConfigDB必要配置说明
Key | 描述 | value | 备注 |
eureka.service.url | Eureka服务Url | http://2.2.2.2:8080/eureka/ | 每个环境只填入自己环境的eureka服务地址,如有多个,用逗号分隔 |
namespace.lock.switch | 发布审核开关 | Boolean值 | 这是一个功能开关,如果配置为true的话,那么一次配置发布只能是一个人修改,另一个发布,生产建议开启。 |
config-service.cache.enabled | 是否开启配置缓存 | 默认为false | 配置为true的话,config service会缓存加载过的配置信息,从而加快后续配置获取性能,开启前请先评估总配置大小并调整config service内存配置 |
关于eureka.service.url需要注意以下几点
- 这里需要填写本环境中全部的eureka服务地址,因为eureka需要互相复制注册信息
- 如果希望将Config Service和Admin Service注册到公司统一的Eureka,请查看
- 在多机房部署时,往往希望config service和admin service只向同机房的eureka注册,要实现这个效果,需要利用ServerConfig表中的cluster字段,config service和admin service会读取所在机器的/opt/settings/server.properties(Mac/Linux)或C:\opt\settings\server.properties(Windows)中的idc属性,如果该idc有对应的eureka.service.url配置,那么就只会向该机房的eureka注册。比如config service和admin service会部署到SHAOY和SHAJQ两个IDC,那么为了实现这两个机房中的服务只向该机房注册,那么可以在ServerConfig表中新增两条记录,分别填入SHAOY和SHAJQ两个机房的eureka地址即可,default cluster的记录可以保留,如果有config service和admin service不是部署在SHAOY和SHAJQ这两个机房的,就会使用这条默认配置。
获取安装包
1.直接下载安装包(没有定制需求)
从https://github.com/ctripcorp/apollo/releases下载预先打好的安装包;
2.通过源码构建(需要定制开发)
从https://github.com/ctripcorp/apollo/releases下载Source code包或直接clone源码后在本地构建
apollo部署
这里是采用了直接下载安装包的方式;
获取apollo-configservice、apollo-adminservice、apollo-portal安装包
下载最新版本的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中, 由于ApolloConfigDB在每个环境都有部署,所以对不同的环境config-service、admin-service需要配置对应环境的数据库参数
部署apollo-configservice
将对应环境的apollo-configservice-x.x.x-github.zip上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh。
- 如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。
- 如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-configservice.conf中的LOG_DIR。
- 如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。另外apollo-configservice同时承担meta server职责,如果要修改端口,注意要同时ApolloConfigDB.ServerConfig表中的eureka.service.url配置项以及apollo-portal和apollo-client中的使用到的meta server信息
部署apollo-adminservice
将对应环境的apollo-adminservice-x.x.x-github.zip上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh。
- 如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。
- 如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-adminservice.conf中的LOG_DIR。
- 如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。
部署apollo-portal
将apollo-portal-x.x.x-github.zip上传到服务器上,解压后执行scripts/startup.sh即可。如需停止服务,执行scripts/shutdown.sh.
- 如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分。
- 如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-adminservice.conf中的LOG_DIR。
- 如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。
java 客户端中的使用请查看Apolle 客户端使用