Spring Cloud 系列之 Apollo 配置中心(四) (2)

注意 key 为全大写,且中间是_分隔

启动

进入对应安装包的 script 目录,执行 startup.sh 文件。

我的启动顺序为:

192.168.10.101 启动 Portal

192.168.10.102 启动 ConfigService 再启动 AdminService

192.168.10.104 启动 ConfigService 再启动 AdminService

访问:192.168.10.102:8080 和 192.168.10.104:8080 看看 Eureka 以及各服务是否正常启动,如下:

Spring Cloud 系列之 Apollo 配置中心(四)

最后,在页面发布配置信息的同时,可以通过查看日志的方式,查看高可用环境是否搭建成功,日志存放在 /opt/appId/xxx.log。

灰度发布

在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。

为了解决这些问题,人们研究出了多种发布策略,比如蓝绿部署、滚动发布、灰度发布等,Apollo 采用的是灰度发布的特性。

介绍

Spring Cloud 系列之 Apollo 配置中心(四)

灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。

在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的 A/B 测试。

当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。

实践

我们使用 apollo-demo 中的 order-service 和 order-service02 两个实例来实践,order-service 在 Windows 端运行,order-service02 在 Linux 端运行。

配置文件

order-service 的配置文件。

server: port: 9090 # 端口 spring: application: name: order-service # 应用名称 # apollo 相关配置 app: id: order-service # 与 Apollo 配置中心中的 AppId 一致 apollo: meta: :8080,:8080 # Apollo 中的 Eureka 注册中心地址 #cluster: SHAOY # 指定 Apollo 集群,默认为 default,相同集群实例使用对应集群的配置 #cacheDir: # 配置缓存目录,网络不可用时任然可提供配置服务 bootstrap: enable: true # 启用 apollo env: DEV # 指定环境 # 自定义配置 name: order-service-dev mysql: host: localhost port: 3306 username: root password: root

order-service02 的配置文件。

server: port: 9091 # 端口 spring: application: name: order-service02 # 应用名称 # apollo 相关配置 app: id: order-service # 与 Apollo 配置中心中的 AppId 一致 apollo: meta: :8080,:8080 # Apollo 中的 Eureka 注册中心地址 #cluster: SHAOY # 指定 Apollo 集群,默认为 default,相同集群实例使用对应集群的配置 #cacheDir: # 配置缓存目录,网络不可用时任然可提供配置服务 bootstrap: enable: true # 启用 apollo env: DEV # 指定环境 # 自定义配置 name: order-service-dev mysql: host: localhost port: 3306 username: root password: root

最终效果如下:

Spring Cloud 系列之 Apollo 配置中心(四)

创建灰度

点击右上角灰度按钮,点击确定创建灰度。

Spring Cloud 系列之 Apollo 配置中心(四)

Spring Cloud 系列之 Apollo 配置中心(四)

新增灰度配置

Spring Cloud 系列之 Apollo 配置中心(四)

Spring Cloud 系列之 Apollo 配置中心(四)

新增灰度规则

Spring Cloud 系列之 Apollo 配置中心(四)

Spring Cloud 系列之 Apollo 配置中心(四)

灰度发布

Spring Cloud 系列之 Apollo 配置中心(四)

测试

Spring Cloud 系列之 Apollo 配置中心(四)

放弃灰度

确认放弃灰度以后会删除该灰度版本,并恢复为主版本的配置信息。

Spring Cloud 系列之 Apollo 配置中心(四)

全量发布

全量发布将会把灰度版本的配置合并到主分支,并发布。

Spring Cloud 系列之 Apollo 配置中心(四)

发布历史

可以通过发布历史来查看所有的发布记录,比如主版本发布,主版本回滚,灰度操作、灰度规则等等。

Spring Cloud 系列之 Apollo 配置中心(四)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspjdd.html