美文网首页
Apollo多环境配置

Apollo多环境配置

作者: 烂融小菜花 | 来源:发表于2019-10-08 10:08 被阅读0次

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

    • DEV

      • 开发环境
    • FAT

      • 测试环境,相当于alpha环境(功能测试)
    • UAT

      • 集成环境,相当于beta环境(回归测试)
    • PRO

      • 生产环境

    分布式多环境部署图:

    lyliyongblue-apollo-deployment.png
    • Portal部署在生产环境的机房,通过它来直接管理FAT、UAT、PRO等环境的配置

    • Config Service、Admin Service和apolloconfigdb在每个环境都单独部署

    • 应用需要配置指定的环境,默认为dev。

    一、添加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配置:
    • 本地开发环境下,通过server.properties配置文件配置apollo.metaevn环境

    • 生产环境或者测试环境,通过编译时传参或者启动应用时传参的方式进行配置,具体如下:

      maven:

      mvn -clean install -Dapollo.meta=http://config-service-url -Deureka-url=http://192.168.10.126:8001/eureka/

      java System property:

      java -jar mainWeb.jar --apollo.meta=http://config-service-url --app.id=YOUR-APP-ID

      --eureka-url=http://192.168.10.126:8001/eureka/

    二、 添加自定义环境

    如果需要添加的环境不是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预先定义好的环境的做法一致

    相关文章

      网友评论

          本文标题:Apollo多环境配置

          本文链接:https://www.haomeiwen.com/subject/gzuwpctx.html