Apollo配置中心分布式部署指南
前言
Apollo配置中心是一款开源的分布式配置管理系统,能够集中化管理应用在不同环境、不同集群的配置。本文将详细介绍如何在分布式环境下部署Apollo配置中心,包括开发、测试和生产环境的独立部署方案。
一、准备工作
1.1 运行环境要求
操作系统
- 推荐使用CentOS 7或更高版本
- 理论上支持所有Linux发行版
Java环境
- 服务端:JDK 1.8+
- 客户端:JDK 1.8+
- 如需在Java 1.7环境下运行,请使用1.x版本的客户端
验证Java版本命令:
java -version
1.2 数据库要求
MySQL
- 版本要求:5.6.5+
- 原因:Apollo表结构使用了timestamp的多重默认声明
验证MySQL版本命令:
SHOW VARIABLES WHERE Variable_name = 'version';
其他数据库支持
- Oracle:需使用特定适配代码
- PostgreSQL:需使用特定适配代码
1.3 环境规划
Apollo支持以下标准环境:
- DEV:开发环境
- FAT:测试环境(功能测试)
- UAT:集成环境(回归测试)
- PRO:生产环境
注意:环境名称"PROD"会被强制转换为"PRO","FWS"会被转换为"FAT"
1.4 网络策略
重要安全提示
- 不要将configservice和adminservice直接暴露在公网
- 这些服务设计基于内网可信网络
网络配置方案
-
忽略特定网卡
-Dspring.cloud.inetutils.ignoredInterfaces[0]=docker0 -Dspring.cloud.inetutils.ignoredInterfaces[1]=veth.*
-
指定注册IP
-Deureka.instance.ip-address=1.2.3.4
-
指定注册URL
# configservice -Deureka.instance.homePageUrl=http://1.2.3.4:8080 # adminservice -Deureka.instance.homePageUrl=http://1.2.3.4:8090
-
客户端直连配置
- 适用于公云部署场景
- 客户端0.11.0+版本支持
网络连通性要求
-
客户端到配置中心:
- 需要访问所有Meta Server和Config Service(默认8080端口)
- 不需要访问Admin Service
-
配置中心内部:
- 各服务间需要相互访问
- 需要访问数据库
二、部署步骤
2.1 创建数据库
2.1.1 创建ApolloPortalDB
-
导入SQL文件:
source /path/to/apolloportaldb.sql
-
验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
注意:ApolloPortalDB只需在生产环境部署一套
2.1.2 创建ApolloConfigDB
-
导入SQL文件:
source /path/to/apolloconfigdb.sql
-
验证:
select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
注意:每个环境需要部署一套ApolloConfigDB
- 从其他环境导入项目数据(非全新部署时需要):
- 导入App表数据
- 导入AppNamespace表数据
- 导入Cluster表数据(默认集群)
- 导入Namespace表数据(默认集群)
2.2 服务器部署
2.2.1 获取安装包
两种方式:
- 直接下载预编译包(推荐)
- 通过源码构建(需要定制开发时使用)
配置数据库连接
-
configservice配置:
spring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8 spring.datasource.username=username spring.datasource.password=password
-
adminservice配置: 同configservice配置
-
portal配置:
spring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8 spring.datasource.username=username spring.datasource.password=password
配置portal的meta服务信息
portal需要知道如何访问各环境的meta service(即configservice)
三、服务端配置说明
3.1 Portal配置
apollo.portal.envs
- 定义portal支持的环境列表
- 示例:dev,fat,uat,pro
3.2 ConfigService配置
eureka.service.url
- 定义Eureka服务地址
- 示例:http://127.0.0.1:8080/eureka/
四、部署验证
- 启动各服务
- 访问Portal界面
- 创建测试项目
- 发布配置
- 客户端获取配置
五、常见问题
- 数据库版本兼容性问题
- 网络连通性问题
- 服务注册问题
- 多环境配置问题
结语
通过本文的详细指导,您应该能够成功完成Apollo配置中心的分布式部署。Apollo的强大功能将帮助您实现配置的集中化管理,提高应用的可维护性和部署效率。如果在部署过程中遇到任何问题,建议参考官方文档或社区讨论。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考