Apollo环境搭建
2026/1/15大约 4 分钟ApolloApollo环境搭建分布式配置中心配置管理灰度发布动态配置
1. 环境准备
1.1 软件要求
| 软件 | 版本要求 | 说明 |
|---|---|---|
| Java | 1.8+ | Apollo 服务端和客户端都需要 |
| MySQL | 5.6.5+ | 存储配置数据 |
| Maven | 3.x | 编译打包(可选) |
1.2 硬件要求
| 环境 | 配置建议 |
|---|---|
| 开发/测试 | 2核4G |
| 生产环境 | 4核8G(建议) |
2. 快速启动(Quick Start)
Apollo 提供了快速启动脚本,适合本地开发和测试使用。
2.1 下载 Quick Start 安装包
从 GitHub Release 页面下载最新版本:
# 下载 apollo-quick-start 包
wget https://github.com/apolloconfig/apollo-build-scripts/archive/master.zip
unzip master.zip
cd apollo-build-scripts-master或者直接克隆仓库:
git clone https://github.com/apolloconfig/apollo-build-scripts.git
cd apollo-build-scripts2.2 创建数据库
Apollo 需要两个数据库:ApolloPortalDB 和 ApolloConfigDB
1. 创建 ApolloPortalDB
-- 创建数据库
CREATE DATABASE IF NOT EXISTS ApolloPortalDB DEFAULT CHARACTER SET utf8mb4;
-- 导入初始化脚本
-- 脚本位置:sql/apolloportaldb.sql
source /path/to/apolloportaldb.sql2. 创建 ApolloConfigDB
-- 创建数据库
CREATE DATABASE IF NOT EXISTS ApolloConfigDB DEFAULT CHARACTER SET utf8mb4;
-- 导入初始化脚本
-- 脚本位置:sql/apolloconfigdb.sql
source /path/to/apolloconfigdb.sql提示
如果是多环境部署,每个环境都需要独立的 ApolloConfigDB,但 ApolloPortalDB 只需要一个。
2.3 配置数据库连接
修改 demo.sh 中的数据库连接信息:
# apollo config db info
apollo_config_db_url="jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_config_db_username=root
apollo_config_db_password=your_password
# apollo portal db info
apollo_portal_db_url="jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_portal_db_username=root
apollo_portal_db_password=your_password2.4 启动 Apollo
# 启动
./demo.sh start
# 查看状态
./demo.sh status
# 停止
./demo.sh stop启动成功后,可以看到以下输出:
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [pid]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [pid]
Waiting for portal startup.....
Portal started. You can visit http://localhost:8070 now!2.5 访问 Apollo Portal
打开浏览器访问:http://localhost:8070
默认账号密码:
- 用户名:
apollo - 密码:
admin
3. Docker 部署
3.1 使用 Docker Compose 快速部署
创建 docker-compose.yml 文件:
version: '3'
services:
apollo-configservice:
image: apolloconfig/apollo-configservice:2.1.0
container_name: apollo-configservice
ports:
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=your_password
depends_on:
- mysql
networks:
- apollo-network
apollo-adminservice:
image: apolloconfig/apollo-adminservice:2.1.0
container_name: apollo-adminservice
ports:
- "8090:8090"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=your_password
depends_on:
- apollo-configservice
networks:
- apollo-network
apollo-portal:
image: apolloconfig/apollo-portal:2.1.0
container_name: apollo-portal
ports:
- "8070:8070"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=your_password
- APOLLO_PORTAL_ENVS=dev
- DEV_META=http://apollo-configservice:8080
depends_on:
- apollo-adminservice
networks:
- apollo-network
mysql:
image: mysql:5.7
container_name: apollo-mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=your_password
volumes:
- ./sql:/docker-entrypoint-initdb.d
- mysql-data:/var/lib/mysql
networks:
- apollo-network
networks:
apollo-network:
driver: bridge
volumes:
mysql-data:3.2 启动服务
# 启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down4. 分布式部署(生产环境)
4.1 部署架构
生产环境建议的部署架构:
4.2 下载安装包
从 GitHub Release 下载对应版本的安装包:
apollo-configservice-x.x.x-github.zipapollo-adminservice-x.x.x-github.zipapollo-portal-x.x.x-github.zip
4.3 配置 Config Service
解压 apollo-configservice-x.x.x-github.zip,修改配置文件:
# config/application-github.properties
spring.datasource.url = jdbc:mysql://mysql-server:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username = apollo
spring.datasource.password = your_password启动脚本配置 scripts/startup.sh:
# JVM 参数配置
export JAVA_OPTS="-Xms512m -Xmx512m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m"
# 服务端口
SERVER_PORT=80804.4 配置 Admin Service
解压 apollo-adminservice-x.x.x-github.zip,修改配置文件:
# config/application-github.properties
spring.datasource.url = jdbc:mysql://mysql-server:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username = apollo
spring.datasource.password = your_password4.5 配置 Portal
解压 apollo-portal-x.x.x-github.zip,修改配置文件:
# config/application-github.properties
spring.datasource.url = jdbc:mysql://mysql-server:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username = apollo
spring.datasource.password = your_password配置环境列表 config/apollo-env.properties:
# 开发环境
dev.meta=http://dev-config-service:8080
# 测试环境
fat.meta=http://fat-config-service:8080
# 预发环境
uat.meta=http://uat-config-service:8080
# 生产环境
pro.meta=http://pro-config-service:80804.6 启动服务
按照以下顺序启动服务:
# 1. 启动 Config Service
cd apollo-configservice
./scripts/startup.sh
# 2. 启动 Admin Service
cd apollo-adminservice
./scripts/startup.sh
# 3. 启动 Portal
cd apollo-portal
./scripts/startup.sh4.7 高可用部署
生产环境建议部署多个实例以保证高可用:
| 服务 | 建议实例数 | 说明 |
|---|---|---|
| Config Service | 2+ | 客户端直接访问,需要高可用 |
| Admin Service | 2+ | Portal 访问,需要高可用 |
| Portal | 2+ | 用户访问,需要高可用 |
| MySQL | 主从 | 数据存储,需要高可用 |
注意
Config Service 和 Admin Service 需要注册到同一个 Eureka(内置),确保它们能够互相发现。
5. 常见问题
5.1 启动失败:数据库连接失败
检查以下几点:
- MySQL 服务是否启动
- 数据库用户名密码是否正确
- 数据库是否已创建并导入初始化脚本
- 防火墙是否开放 MySQL 端口
5.2 Portal 无法连接 Config Service
检查 apollo-env.properties 中的 Meta Server 地址是否正确配置。
5.3 客户端无法获取配置
- 检查
app.id是否正确配置 - 检查 Meta Server 地址是否可访问
- 检查应用是否在 Apollo 中创建
6. 总结
本节我们学习了 Apollo 的三种部署方式:
- Quick Start:适合本地开发测试,一键启动
- Docker 部署:适合快速搭建测试环境
- 分布式部署:适合生产环境,支持高可用
下一节我们将学习如何在 Spring Boot 项目中集成 Apollo 客户端。
