Apollo 是携程开源的分布式配置管理平台,支持配置实时推送、版本管理、权限控制等功能。本教程将手把手教你完成 Apollo 核心组件安装、基础配置管理及避坑指南,助你快速掌握企业级配置管理能力。
一、环境准备(关键依赖)
1. 基础组件
组件 | 版本要求 | 作用说明 |
---|---|---|
Java | JDK 1.8+ | Apollo 服务端运行环境 |
MySQL | 5.6.5+ | 存储配置元数据 |
Eureka | 内嵌或独立部署 | 服务注册与发现(可选) |
2. 推荐部署架构
用户访问 → Apollo Portal (管理端)↓
Apollo Config Service (配置服务)↓
Apollo Admin Service (配置管理)↓
MySQL 数据库
二、快速安装部署(Docker 版)
1. 一键启动(开发环境)
git clone https://github.com/ctripcorp/apollo.git
cd apollo/scripts/docker-quick-start
docker-compose up -d # 自动启动 MySQL + Eureka + Apollo
2. 访问控制台
- Portal 管理端:
http://localhost:8070
默认账号:apollo/admin
- Eureka 注册中心:
http://localhost:8080
三、生产环境手动安装(Linux)
1. 数据库初始化
- 创建数据库并执行初始化脚本:
mysql -u root -p > CREATE DATABASE apolloconfigdb DEFAULT CHARSET utf8mb4; > USE apolloconfigdb; > source apollo/scripts/sql/apolloconfigdb.sql
2. 配置服务端
-
下载 Release 包:
https://github.com/apolloconfig/apollo/releasesapollo-configservice-2.1.0.jar
apollo-adminservice-2.1.0.jar
apollo-portal-2.1.0.jar
-
启动 Config Service:
java -jar apollo-configservice.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
-
启动 Admin Service:
java -jar apollo-adminservice.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
-
启动 Portal:
java -jar apollo-portal.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
四、必学核心操作
1. 创建项目与命名空间
- 登录 Portal → 创建项目 → 输入应用ID(如
order-service
) - 进入项目 → 添加命名空间(如
application
公共配置) - 配置格式:支持 Properties、YAML、JSON 等
2. 配置发布与回滚
- 在命名空间页面点击 新增配置:
# Key-Value 示例 order.timeout = 5000 payment.url = http://payment-service/api
- 点击 发布 → 填写发布备注
- 历史版本 → 可一键回滚到任意版本
3. 客户端集成(Spring Boot 示例)
-
添加 Maven 依赖:
<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>2.1.0</version> </dependency>
-
配置
application.yml
:app:id: order-service # 与 Portal 中的应用ID一致 apollo:meta: http://config-service-url:8080 # Apollo Config Service 地址bootstrap:enabled: truenamespaces: application # 命名空间
-
动态获取配置:
@Value("${order.timeout:3000}") // 默认值 3000 private int orderTimeout;
五、避坑指南(新手必看)
1. 配置未实时生效
- 现象:客户端未收到配置更新
- 解决:
- 检查客户端长轮询是否开启(默认开启)
- 确认客户端与 Config Service 网络连通性
2. 数据库连接池耗尽
- 现象:日志报错
Too many connections
- 解决:
- 优化 MySQL 连接数:
SET GLOBAL max_connections = 1000;
- 调整 Apollo 数据源配置:
spring.datasource.hikari.maximum-pool-size=20
- 优化 MySQL 连接数:
3. 权限管理缺失
- 风险:未经授权用户修改配置
- 解决:
- Portal → 管理员工具 → 用户管理 → 创建角色
- 权限管理 → 按项目分配权限(如开发只读、运维可发布)
4. 未配置监控告警
- 现象:配置异常未能及时发现
- 解决:
- 集成 Prometheus 监控 JVM 指标
- 配置邮件/钉钉通知:
apollo.portal.notification.enabled = true apollo.portal.notification.template = 配置【{key}】已变更,操作人:{operator}
六、企业级最佳实践
1. 多环境管理
- 创建不同环境(DEV/TEST/PROD)→ 通过 Cluster 隔离配置
- 使用 灰度发布 功能逐步验证配置
2. 配置加密
- 启用 Apollo 内置加密功能:
@ApolloJsonValue("${encrypted.password}") private String password;
- 通过 密钥管理 界面加密敏感数据
3. 灾备与高可用
- 部署多节点 Config Service 和 Admin Service
- 定期备份 MySQL 数据库(
apolloconfigdb
和apolloportaldb
)
七、总结
通过本教程,你已掌握:
✅ Apollo 多环境部署方法
✅ 配置全生命周期管理(增删改查 + 版本控制)
✅ 客户端集成与实时推送机制
✅ 企业级安全与稳定性方案
下一步建议:
- 学习 Apollo OpenAPI 实现自动化运维
- 结合 Spring Cloud Config 构建混合配置中心
- 探索 Kubernetes 环境下的 Apollo 最佳实践
立即访问 Apollo 官方文档 开启你的配置管理之旅! 🚀