容器化应用: Openshift 路由拆分实现蓝绿部署

路由拆分就是把一个路由的流量按比例, 权重分发到不同的后端服务. 原理和带权重的负载均衡相同. 如果你使用过阿里云的SLB, 应该很熟悉了.

容器化应用: Openshift 路由拆分实现蓝绿部署_第1张图片

while true; do curl http://hello-microservice-blue-reactive-microservices.192.168.99.100.nip.io 2>&1; echo ''; sleep 1; done;

示例过程

我们以一个Vertx 的Hello Microservice 为例子

下载需要的代码

https://github.com/redhat-developer/reactive-microservices-in-java.git
cd openshift/hello-microservice-openshift
mvn fabric8:deploy -Popenshift

部署完成后, 修改 pom.xml 中的 hello-microservice-blue, 再次执行如下的构建命令以创建一个新的部署:

mvn fabric8:deploy -Popenshift

这样, Openshift 中会同时存在两个名称不同的部署, 分别代表应用程序的两个不同版本.

容器化应用: Openshift 路由拆分实现蓝绿部署_第2张图片

容器化应用: Openshift 路由拆分实现蓝绿部署_第3张图片

路由拆分配置

容器化应用: Openshift 路由拆分实现蓝绿部署_第4张图片

容器化应用: Openshift 路由拆分实现蓝绿部署_第5张图片

路由信息页面
容器化应用: Openshift 路由拆分实现蓝绿部署_第6张图片

然后用不同的浏览器打开这个路由, 你就会看到不同的输出. 当然, hello-microservice-blue 这个部署, 你得修改一点输出代码, 以示区分.

因为路由有 Session Affinity(会话亲和, 会话粘滞), 所以要用不同的浏览器才能看到效果. 这样就是实现了应用的蓝绿部署, 灰度发布, A/B测试, 等等等等类似的先试点, 再推广 这个机制. 把有可能的影响范围降低到最小.

容器化应用: Openshift 路由拆分实现蓝绿部署_第7张图片

参考资料

你可能感兴趣的:(openshift)