Apollo多环境配置

2019-10-08  本文已影响0人  烂融小菜花

Apollo预先定义的环境有四种:(DEV, FAT, UAT, PRO)。

分布式多环境部署图:

lyliyongblue-apollo-deployment.png

一、添加Apollo预先定义好的环境

1.新增一套Config Service、Admin Service和ApolloConfigDB

一套Portal可以管理多个环境,但是每个环境都需要独立部署一套Config Service、Admin Service和ApolloConfigDB。

所以新增环境时,需要重新部署一套Config Service、Admin Service和ApolloConfigDB。

另外如果是为已经运行了一段时间的Apollo配置中心增加环境,还对新的环境做初始化(把旧的Config Service和Admin Service数据拷贝到新的环境)。

2.修改ApolloProtalDB.serverconfig中的apollo.portal.envs - 可支持的环境列表

ps:也可以启动Apollo后,在管理界面更改系统参数-apollo.portal.envs

默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:

DEV,FAT,UAT,PRO
3.修改apollo-portal/config/apollo-env.properties

apollo-portal安装包下的apollo-env.properties文件中修改环境配置:

把添加的环境配置相对应的config-server地址

local.meta=http://localhost:8080
dev.meta=http://localhost:8080
fat.meta=
uat.meta=
lpt.meta=${lpt_meta}
pro.meta=http://localhost:8081
4.修改项目中的apollo-meta和evn配置:

二、 添加自定义环境

如果需要添加的环境不是Apollo预先定义的环境,请参照如下步骤操作:

1.假设需要添加的环境名称叫beta
2.修改源码中的com.ctrip.framework.apollo.core.enums.Env类,在其中加入BETA枚举:
public enum Env{
  LOCAL, DEV, BETA, FWS, FAT, UAT, LPT, PRO, TOOLS, UNKNOWN;
  ...
}
3.修改源码中的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;
    }
  }
}
4.修改源码中的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}
5.修改源码中的com.ctrip.framework.apollo.core.internals.LegacyMetaServerProvider类,增加读取BETA环境的meta server地址逻辑:
public class LegacyMetaServerProvider {
    ...
    domains.put(Env.BETA, getMetaServerAddress(prop, "beta_meta", "beta.meta"));
    ...
}
6.新增一套Config Service、Admin Service和ApolloConfigDB

与添加Apollo预先定义好的环境的做法一致

7.修改ApolloProtalDB.serverconfig中的apollo.portal.envs - 可支持的环境列表

与添加Apollo预先定义好的环境的做法一致

8.修改项目中的apollo-meta和evn配置

与添加Apollo预先定义好的环境的做法一致

上一篇下一篇

猜你喜欢

热点阅读