apollo——部署教程

apollo是一款优秀的分布式配置中心,而且目前公司中也是采用apollo来作为配置中心。关于apollo具体的内容,推荐大家去看官网,本文主要讲在apollo的1.6.0版本之前,基于现有apollo,额外搭建新的环境。

 1、为何只适用1.6.0版本之前?

因为在1.6.0之前,apollo需要新增自定义环境,需要修改代码中的枚举类,以及在portal的数据库中进行相关配置。而且1.6.0之后支持在不修改代码的情况下增加环境。

2、新增apollo一套配置环境需要做什么?

添加自定义环境

假设新环境为BETA

修改com.ctrip.framework.apollo.core.enums.Env类,加入BETA枚举

public enum Env{
  LOCAL, DEV, BETA, FWS, FAT, UAT, LPT, PRO, TOOLS, UNKNOWN;
  ...
}

修改com.ctrip.framework.apollo.core.enums.EnvUtils类,在其中加入BETA枚举的转换逻辑:

public final class EnvUtils {
  
  public static Env transformEnv(String envName) {
    if (StringUtils.isBlank(envName)) {
      return Env.UNKNOWN;
    }
    switch (envName.trim().toUpperCase()) {
      ...
      case "BETA":
        return Env.BETA;
      ...
      default:
        return Env.UNKNOWN;
    }
  }
}

修改apollo-env.properties,增加beta.meta占位符:

local.meta=http://localhost:8080
dev.meta=${dev_meta}
fat.meta=${fat_meta}
beta.meta=${beta_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

修改com.ctrip.framework.apollo.core.internals.LegacyMetaServerProvider类,增加读取BETA环境的meta server地址逻辑

public class LegacyMetaServerProvider {
    ...
    domains.put(Env.BETA, getMetaServerAddress(prop, "beta_meta", "beta.meta"));
    ...
}

所有修改代码的内容end

 

配置数据库,以及启动端口日志路径

调整ApolloConfig

zip解压之后

mysql连接地址:config/application-github.properties中 url,username,password即可

启动端口: scripts/startup.sh中SERVER_PORT=8002

日志地址:scripts/startup.sh中LOG_DIR=/opt/logs/beta/100003171

调整ApolloAdmin相关配置与ApolloConfig相同

 

调整ApolloProtalDB配置

配置项统一存储在ApolloProtalDB.ServerConfig表中,通过管理工具—系统参数页面进行配置,无特殊说明修改完一分钟实时生效

apollo.protal.envs——可支持的环境列表,多个逗号分隔,大小写不敏感

DEV,FAT,UAT,PRO,BETA

 configView.memberOnly.envs——只对项目成员显示配置信息的环境列表,多个env英文逗号分隔

对设定了只对项目成员显示配置信息的环境,只有该项目的管理员或拥有该namespace的编辑或发布权限的用户才能看到该私有namespace的配置信息和发布历史。公共namespace始终对所有用户可见。

调整ApolloConfigDB配置

配置项统一存储在ApolloConfigDB.ServerConfig表中,需要注意每个环境的ApolloConfigDB.ServerConfig都需要单独配置,修改完一分钟实时生效。

在BETA环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:

http://5.5.5.5:8002/eureka/,http://6.6.6.6:8002/eureka/

所有配置内容到此end

 

重启服务

启动顺序ApolloProtal 、apolloConfig、apolloAdmin

通过观察apolloProtal提供的系统信息,判断新环境是否搭建成功即可。

注意:如果ApolloProtal部署了多台,建议一台台的处理确认,避免发生未知错误,造成apollo服务不可用。但是请不要担心线上正在使用的服务,此时只要业务服务不重启,暂时无关系,因为apollo在具体服务本地是存在缓存的。

额外,运行一段时间的Apollo在搭建新环境的时候会涉及部分历史数据,历史数据迁移

App
导入全部的App
如:insert into 新环境的ApolloConfigDB.App select * from 其它环境的ApolloConfigDB.App where IsDeleted = 0;
AppNamespace
导入全部的AppNamespace
如:insert into 新环境的ApolloConfigDB.AppNamespace select * from 其它环境的ApolloConfigDB.AppNamespace where IsDeleted = 0;
Cluster
导入默认的default集群
如:insert into 新环境的ApolloConfigDB.Cluster select * from 其它环境的ApolloConfigDB.Cluster where Name = 'default' and IsDeleted = 0;
Namespace
导入默认的default集群中的namespace
如:insert into 新环境的ApolloConfigDB.Namespace select * from 其它环境的ApolloConfigDB.Namespace where ClusterName = 'default' and IsDeleted = 0;

如果是为正在运行的环境迁移数据,建议迁移完重启一下config service,因为config service中有appnamespace的缓存数据

 

        之前搭建整体apollo环境的没有,没有注意这些配置细节,最近新增环境,发现很多内容都遗忘,趁此机会,整体温故而知新。也希望可以帮助有需要的朋友。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mandy_i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值