Apollo多环境以及集群配置
一. 前言:从上篇Apollo动态配置基础使用之后,小熙继续补上下文多环境以及集群配置。二. 环境和准备:这里小熙由于条件和电脑配置有限,就先用虚拟机配置了。还是上文中的虚拟机基本配置:java8,apollo 1.7等(有条件的可以把不同节点分到不同机器即可)apollo相关节点(本次小熙将会配置三个环境):环境地址服务名–localhost:8070apollo-portalDEVlocalh
一. 前言:
从上篇Apollo动态配置基础使用之后,小熙继续补上多环境以及集群配置和灰度等。
二. 环境和准备:
这里小熙由于条件和电脑配置有限,就先用虚拟机配置了。
-
还是上文中的虚拟机基本配置:java8,apollo 1.7等(有条件的可以把不同节点分到不同机器即可)
-
apollo相关节点(本次小熙将会配置三个环境):
环境 地址 服务名 – localhost:8070 apollo-portal DEV localhost:8080
localhost:8090apollo-configservice
apollo-adminservicePRO localhost:8081
localhost:8091apollo-configservice
apollo-adminserviceUAT localhost:8082
localhost:8092apollo-configservice
apollo-adminservice远程环境简图:
-
数据库配置(数据库在本机上):
环境 地址 数据库名称 – 192.168.11.41:3306 ApolloPortalDB DEV 192.168.11.41:3306 ApolloConfigDB PRO 192.168.11.41:3306 ApolloConfigDBPro UAT 192.168.11.41:3306 ApolloConfigDBUat 如图:
这里数据库的复制传输可以借助Navicat的功能。
如图:
三. 修改相关配置:
-
添加portal数据库相关环境配置:
2. 添加portal相关meta相关配置:
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的配置时,就有对应的变化了。
如图:
四. 验证多环境:
-
修改项目中对应配置(这里看个人喜好选择如何抒写,这里可以提出bootstrap.yml,现在这样好展示)
如图: -
修改apollo配置并获取:
注意这里对应环境的端口要在linux的防火墙中开放,小熙忘记开放之后,一度怀疑过自己。
(1)修改之前:
(2)修改之后:
(3)注意看控制台,我们添加监控代码之后,在修改之后是有对应展示的。
如图:
到此,小熙要介绍的多环境就介绍完了。
五. 多集群:
apollo的多集群分两种,一种是多服务节点HA,另一种是内置功能多集群
-
其实HA多集群也很简便,因为config服务中已经集成了eureka所以当做正常微服务部署即可,如果想把portal也做成集群,可以加入注册中心等负载路由一下就好了。
添加其他注册地址:
如图: -
内置功能多集群(其主要是在不改变appId的情况下,让不同实例可以使用不同的配置)
(1)创建集群
(2)如上图,在对应位置添加配置文件即可:env=dev idc=test-cluster
六. 通用配置:
添加通用配置,这里选择创建通用namespace之后(和正常创建使用一样,只是相应创建选择目录不一样而已),创建其他项目配置的时候可以直接选择引用,当修改配置时也只会在当前项目配置上覆盖而已不用担心通用配置:
- 创建公共namespace:
- 其他项目选择通用配置(在对应项目配置中点击添加namespace):
七. 灰度配置:
通过灰度发布功能,可以实现:
- 对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置
- 对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置
-
添加灰度节点:
-
修改灰度配置并发布:
之后对应节点就会生效了。 -
测试验证(小熙这里只有一个节点访问了,所以测试的也是这个唯一节点,有条件的话可以测试分开):
八. 后语:
以上就是小熙关于apollo简单并深入的分享了,下篇继续分享apollo架构以及源码相关。
更多推荐
所有评论(0)