Apollo配置中心分布式部署指南
apollo 项目地址: https://gitcode.com/gh_mirrors/ap/apollo
前言
Apollo是一款开源的分布式配置中心,能够集中化管理应用在不同环境、不同集群的配置。本文将详细介绍如何对Apollo配置中心进行分布式部署,包括环境准备、数据库配置、服务部署等完整流程。
一、环境准备
1.1 操作系统要求
Apollo服务端基于Spring Boot开发,启动脚本理论上支持所有Linux发行版,推荐使用CentOS 7作为运行环境。
1.2 Java环境要求
- 服务端:JDK 1.8+
- 客户端:JDK 1.8+
- 如需运行在Java 1.7环境,请使用1.x版本的Apollo客户端
可通过以下命令验证Java版本:
java -version
1.3 数据库要求
Apollo使用MySQL作为后端存储,版本要求5.6.5+。这是因为Apollo的表结构对timestamp
使用了多个default声明。
验证MySQL版本:
SHOW VARIABLES WHERE Variable_name = 'version';
注意:虽然官方推荐5.6.5+,但实际可降级到5.5版本使用。如需使用Oracle或PostgreSQL,需要额外进行适配。
1.4 环境规划
Apollo支持多环境部署,常见环境包括:
- DEV:开发环境
- FAT:测试环境(功能测试)
- UAT:集成环境(回归测试)
- PRO:生产环境
如需自定义环境名称,需注意PROD会被强制转换为PRO,FWS会被强制转换为FAT。
1.5 网络策略
分布式部署时需特别注意网络连通性:
- 服务注册:
apollo-configservice
和apollo-adminservice
需要将IP和端口注册到Meta Server - 访问控制:出于安全考虑,不应将这两个服务直接暴露在公网
- 多网卡处理:可通过以下方式解决多网卡或网络限制问题:
-
忽略特定网卡:
-Dspring.cloud.inetutils.ignoredInterfaces[0]=docker0 -Dspring.cloud.inetutils.ignoredInterfaces[1]=veth.*
-
指定注册IP:
-Deureka.instance.ip-address=1.2.3.4
-
指定注册URL:
-Deureka.instance.homePageUrl=http://1.2.3.4:8080 -Deureka.instance.preferIpAddress=false
二、数据库部署
2.1 创建ApolloPortalDB
ApolloPortalDB只需在生产环境部署一套,支持两种创建方式:
手动导入SQL
source /path/to/apolloportaldb.sql
使用Flyway自动迁移(1.3.0+)
- 修改flyway-portaldb.properties配置
- 执行:
mvn -N -Pportaldb flyway:migrate
验证:
SELECT `Id`, `Key`, `Value`, `Comment` FROM `ApolloPortalDB`.`ServerConfig` LIMIT 1;
2.2 创建ApolloConfigDB
每个环境都需要独立部署一套ApolloConfigDB。
手动导入SQL
source /path/to/apolloconfigdb.sql
使用Flyway自动迁移(1.3.0+)
- 修改flyway-configdb.properties配置
- 执行:
mvn -N -Pconfigdb flyway:migrate
验证:
SELECT `Id`, `Key`, `Value`, `Comment` FROM `ApolloConfigDB`.`ServerConfig` LIMIT 1;
数据迁移
如非全新部署,需从其他环境迁移以下表数据:
- App表:所有应用
- AppNamespace表:所有命名空间
- Cluster表:默认集群(default)
- Namespace表:默认集群中的命名空间
三、服务端部署
3.1 获取安装包
有两种方式获取安装包:
3.1.1 直接下载预编译包
-
下载最新版本的:
- apollo-configservice-x.x.x.zip
- apollo-adminservice-x.x.x.zip
- apollo-portal-x.x.x.zip
-
配置数据库连接信息:
- 修改各服务config/application-github.properties中的数据库连接串
-
配置Portal的Meta Service地址:
- 编辑apollo-portal的config/apollo-env.properties
- 格式:
${env}.meta=http://${config-service-url:port}
3.1.2 通过源码构建
- 修改scripts/build.sh中的数据库连接信息
- 配置各环境meta service地址
- 执行构建:
./build.sh
构建完成后,安装包位于各模块的target目录下。
3.2 服务部署
3.2.1 部署apollo-configservice
- 上传对应环境的安装包
- 解压后执行:
scripts/startup.sh
JVM参数建议配置(可根据实际情况调整):
export JAVA_OPTS="-server -Xms6144m -Xmx6144m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=4096m -XX:MaxNewSize=4096m -XX:SurvivorRatio=18"
注意:如需修改端口,需同步调整ApolloConfigDB.ServerConfig表中的eureka.service.url配置
3.2.2 部署apollo-adminservice
- 上传对应环境的安装包
- 解压后执行:
scripts/startup.sh
JVM参数建议配置:
export JAVA_OPTS="-server -Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=22"
3.2.3 部署apollo-portal
- 上传安装包
- 解压后执行:
scripts/startup.sh
四、服务端配置说明
4.1 ApolloPortalDB配置
apollo.portal.envs
定义Portal支持的环境列表,多个环境以逗号分隔,如:
apollo.portal.envs=dev,fat,uat,pro
apollo.portal.meta.servers
各环境Meta Service地址(1.6.0+),格式为JSON:
{
"dev":"http://1.1.1.1:8080",
"fat":"http://apollo.fat.xxx.com",
"uat":"http://apollo.uat.xxx.com",
"pro":"http://apollo.xxx.com"
}
4.2 ApolloConfigDB配置
eureka.service.url
Eureka服务地址,如:
eureka.service.url=http://127.0.0.1:8080/eureka/
五、验证部署
- 访问Portal界面(默认端口8070)
- 检查各环境配置是否正确加载
- 创建测试应用和配置,验证各功能是否正常
结语
通过本文的详细步骤,您应该已经完成了Apollo配置中心的分布式部署。Apollo的强大之处在于它的配置管理能力和环境隔离特性,能够很好地支持企业级应用的配置管理需求。如果在部署过程中遇到任何问题,可以参考官方文档中的常见问题解答部分。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考