在这个教程中,您将学习如何利用 OpenResty Edge 的灰度网关服务器功能,对您网关配置的更改进行测试,再把它们推送到所有生产环境的网关服务器上。

什么是灰度服务器

我们知道,Edge Admin 负责管理和分发配置到 Edge 服务器。但是直接向所有的 Edge 服务器分发重大的改动可能会导致事故。

Embeded video

为了解决这个问题,我们可以将一些 Edge 服务器标记为灰度服务器。首先将改动发布到这些灰度服务器,经过测试之后再发布到所有服务器。这就是我们今天的主题:灰度服务器。

Embeded image

让我们进入 OpenResty Edge 的 Admin Web 控制台。这是我们控制台的样本部署。每个用户都有自己的本地部署。

Screenshot

将网关服务器设置为灰度服务器

首先,让我们看看如何将网关服务器设置为灰度服务器。

点击 Gateway Clusters 标签页,进入 Gateway Clusters 页面。

Screenshot

我们有一个网关集群,它有两个网关服务器。

Screenshot

现在我们要把这两个网关服务器设置为灰度服务器。可以通过两种方式实现这一目标。第一种是将整个网关集群设置为一个灰度集群。现在让我们来看一下怎么设置。

点击编辑这个集群。

Screenshot

这里有一个开关,是用来设置一个集群是否是灰度集群的。

Screenshot

这个开关现在是关闭的。

想要将这个网关集群设置为灰度集群,需要打开这个开关。

Screenshot

点击保存这个改动。

Screenshot

点击集群的名字,进入服务器列表页。

Screenshot

从服务器列表页可以看到,这两个服务器现在已经被标识为灰度服务器。

Screenshot

回到网关集群页面。

Screenshot

第二种方法是直接设置一个网关服务器为灰度服务器。

再次点击编辑按钮。

Screenshot

关闭这个开关。

Screenshot

可以看到每台服务器下都有开关,用来设置该服务器是否为灰度服务器。

Screenshot

打开这个开关。

Screenshot

点击保存这个改动。

Screenshot

点击集群名称。

Screenshot

可以看到,第一台服务器仍然是一个灰度服务器。

Screenshot

第二台服务器已经不是灰度服务器了。

Screenshot

这样做只是为了方便演示。实际上我们并不建议一个集群同时拥有灰度服务器和非灰度服务器。否则在集群层面上分发配置的时候会引发问题。

将改动发布到灰度服务器

现在让我们回到应用列表页,看看如何将改动发布到灰度服务器。

Screenshot

我们可以继续使用之前的示例应用,test-edge.com。

Screenshot

进入这个应用。

Screenshot

创建一个新的页面规则来测试灰度发布。

Screenshot

单击新建页面规则。这个规则将在特定的 URI 下返回特定的内容。

Screenshot

首先,我们为这个规则添加一个条件。

Screenshot

条件的变量保持不变,即 URI。

Screenshot

选择 String= 运算符。

Screenshot

Screenshot

输入值 /test 作为指定的 URI。

Screenshot

条件设置完毕。

对于规则的动作部分,我们可以配置一个 Output response body 动作。请注意,我们选择这个动作只是为了方便演示。灰度服务器对于任何配置都是生效的。

Screenshot

这里有许多动作可供选择。

Screenshot

建议输入 Output 进行搜索。

Screenshot

选择动作 “Output response body”。

Screenshot

选择 text/plain 作为内容类型。

Screenshot

Screenshot

输入 “Hello World” 作为输出响应体。

Screenshot

单击此选项,以确保在现有规则之前插入此规则。

Screenshot

单击“创建”按钮,创建这个规则。

Screenshot

可以看到这个规则已经出现在列表中。

Screenshot

最后一步是做一个新配置的发布。它将推送我们刚才的改动到网关服务器。

Screenshot

点击这个按钮来做一个新的发布。

Screenshot

为本次发布添加一个评论。

Screenshot

要做一个灰度发布,你需要打开这个开关。

Screenshot

所有的灰度服务器都显示在这里。

Screenshot

发布。

Screenshot

现在已经完全同步了。

Screenshot

我们仍然可以在未发布的变更列表中看到我们刚刚做的改动。这是因为改动没有被发布到所有的 Edge 节点,而只是发布到灰度节点。

Screenshot

在发布历史的列表中可以看到我们刚刚做出的改动。

Screenshot

而且可以看到,发布类型这里显示的是灰度发布。

Screenshot

测试灰度服务器上的改动

现在我们进入网关集群列表,选择用于测试的服务器。

Screenshot

注意,IP 地址以 226 结尾的服务器是一个灰度服务器。点击复制这个地址。

Screenshot

使用这个灰度服务器

Screenshot

来发送请求。

Screenshot

为了让输出看起来更清晰,我们在这里添加一个回车。

Screenshot

可以看到返回了 Hello World。

Screenshot

现在让我们用一个非灰度服务器进行测试。点击复制 IP 地址以 213 结尾的服务器。

Screenshot

使用这个非灰度服务器。

Screenshot

可以看到返回了 404。这意味着我们刚才的改动在这个服务器上并没有生效。

Screenshot

关于 OpenResty Edge

OpenResty Edge 是我们自主研发的一款最适合微服务和分布式流量的全能型网关软件。它提供了诸如页面规则、Web 应用防火墙(WAF)、负载均衡等各种功能。

如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道B 站频道。谢谢!

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!