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的强大之处在于它的配置管理能力和环境隔离特性,能够很好地支持企业级应用的配置管理需求。如果在部署过程中遇到任何问题,可以参考官方文档中的常见问题解答部分。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00