Apollo多环境以及集群配置

一. 前言:

从上篇Apollo动态配置基础使用之后,小熙继续补上多环境以及集群配置和灰度等。

二. 环境和准备:

这里小熙由于条件和电脑配置有限,就先用虚拟机配置了。

  1. 还是上文中的虚拟机基本配置:java8,apollo 1.7等(有条件的可以把不同节点分到不同机器即可)

  2. apollo相关节点(本次小熙将会配置三个环境):

    环境地址服务名
    localhost:8070apollo-portal
    DEVlocalhost:8080
    localhost:8090
    apollo-configservice
    apollo-adminservice
    PROlocalhost:8081
    localhost:8091
    apollo-configservice
    apollo-adminservice
    UATlocalhost:8082
    localhost:8092
    apollo-configservice
    apollo-adminservice

    远程环境简图:
    远程环境简图

  3. 数据库配置(数据库在本机上):

    环境地址数据库名称
    192.168.11.41:3306ApolloPortalDB
    DEV192.168.11.41:3306ApolloConfigDB
    PRO192.168.11.41:3306ApolloConfigDBPro
    UAT192.168.11.41:3306ApolloConfigDBUat

    如图:
    生成多环境数据库

    这里数据库的复制传输可以借助Navicat的功能。
    如图:

    传输数据库

三. 修改相关配置:

  1. 添加portal数据库相关环境配置:

    修改portal相关图片
    2. 添加portal相关meta相关配置:
    portal相关配置
    3. 其他环境的config服务和admin服务注意修改对应数据库连接。
    如图:
    相关数据库配置
    4. 代码中添加对应修改监听配置类:

    /**
     * @author chengxi
     * @date 2021/12/9 16:12
     */
    @Configuration
    public class ApolloConfig {
    
        @ApolloConfigChangeListener("application")
        private void apolloConfigChange(ConfigChangeEvent changeEvent) {
            changeEvent.changedKeys().forEach(key -> {
                ConfigChange change = changeEvent.getChange(key);
                System.out.println(String.format("Found apollo change - key: %s, oldValue: %s, newValue: %s, changeType: %s",
                        change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));
            });
    
        }
    
    }
    

当我们重新打开apollo的配置时,就有对应的变化了。
如图:
修改如图

四. 验证多环境:

  1. 修改项目中对应配置(这里看个人喜好选择如何抒写,这里可以提出bootstrap.yml,现在这样好展示)
    如图:
    修改配置

  2. 修改apollo配置并获取:

    注意这里对应环境的端口要在linux的防火墙中开放,小熙忘记开放之后,一度怀疑过自己。

    (1)修改之前:
    修改之前
    获取修改之前

    (2)修改之后:
    修改之后
    修改之后
    (3)注意看控制台,我们添加监控代码之后,在修改之后是有对应展示的。
    如图:
    监控如图
    到此,小熙要介绍的多环境就介绍完了。

五. 多集群:

apollo的多集群分两种,一种是多服务节点HA,另一种是内置功能多集群

  1. 其实HA多集群也很简便,因为config服务中已经集成了eureka所以当做正常微服务部署即可,如果想把portal也做成集群,可以加入注册中心等负载路由一下就好了。

    添加其他注册地址:
    如图:
    添集群

  2. 内置功能多集群(其主要是在不改变appId的情况下,让不同实例可以使用不同的配置)
    (1)创建集群
    创建集群
    创建集群
    (2)如上图,在对应位置添加配置文件即可:

    env=dev
    idc=test-cluster
    

六. 通用配置:

添加通用配置,这里选择创建通用namespace之后(和正常创建使用一样,只是相应创建选择目录不一样而已),创建其他项目配置的时候可以直接选择引用,当修改配置时也只会在当前项目配置上覆盖而已不用担心通用配置:

  1. 创建公共namespace
    在这里插入图片描述
  2. 其他项目选择通用配置(在对应项目配置中点击添加namespace):
    选择namespace

七. 灰度配置:

通过灰度发布功能,可以实现:

  • 对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置
  • 对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置
  1. 添加灰度节点:
    添加灰度节点

  2. 修改灰度配置并发布:
    灰度发布
    之后对应节点就会生效了。

  3. 测试验证(小熙这里只有一个节点访问了,所以测试的也是这个唯一节点,有条件的话可以测试分开):
    测试灰度结果

八. 后语:

以上就是小熙关于apollo简单并深入的分享了,下篇继续分享apollo架构以及源码相关。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值