Apollo配置中心分布式部署指南

Apollo配置中心分布式部署指南

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 网络策略

分布式部署时需特别注意网络连通性:

  1. 服务注册apollo-configserviceapollo-adminservice需要将IP和端口注册到Meta Server
  2. 访问控制:出于安全考虑,不应将这两个服务直接暴露在公网
  3. 多网卡处理:可通过以下方式解决多网卡或网络限制问题:
  • 忽略特定网卡

    -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+)
  1. 修改flyway-portaldb.properties配置
  2. 执行:
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+)
  1. 修改flyway-configdb.properties配置
  2. 执行:
mvn -N -Pconfigdb flyway:migrate

验证:

SELECT `Id`, `Key`, `Value`, `Comment` FROM `ApolloConfigDB`.`ServerConfig` LIMIT 1;
数据迁移

如非全新部署,需从其他环境迁移以下表数据:

  1. App表:所有应用
  2. AppNamespace表:所有命名空间
  3. Cluster表:默认集群(default)
  4. Namespace表:默认集群中的命名空间

三、服务端部署

3.1 获取安装包

有两种方式获取安装包:

3.1.1 直接下载预编译包
  1. 下载最新版本的:

    • apollo-configservice-x.x.x.zip
    • apollo-adminservice-x.x.x.zip
    • apollo-portal-x.x.x.zip
  2. 配置数据库连接信息:

    • 修改各服务config/application-github.properties中的数据库连接串
  3. 配置Portal的Meta Service地址:

    • 编辑apollo-portal的config/apollo-env.properties
    • 格式:${env}.meta=http://${config-service-url:port}
3.1.2 通过源码构建
  1. 修改scripts/build.sh中的数据库连接信息
  2. 配置各环境meta service地址
  3. 执行构建:
./build.sh

构建完成后,安装包位于各模块的target目录下。

3.2 服务部署

3.2.1 部署apollo-configservice
  1. 上传对应环境的安装包
  2. 解压后执行:
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
  1. 上传对应环境的安装包
  2. 解压后执行:
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
  1. 上传安装包
  2. 解压后执行:
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/

五、验证部署

  1. 访问Portal界面(默认端口8070)
  2. 检查各环境配置是否正确加载
  3. 创建测试应用和配置,验证各功能是否正常

结语

通过本文的详细步骤,您应该已经完成了Apollo配置中心的分布式部署。Apollo的强大之处在于它的配置管理能力和环境隔离特性,能够很好地支持企业级应用的配置管理需求。如果在部署过程中遇到任何问题,可以参考官方文档中的常见问题解答部分。

apollo apollo 项目地址: https://gitcode.com/gh_mirrors/ap/apollo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛欣凯Ernestine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值