如何使用 OpenResty Edge 中的网关分区
本教程演示了如何在 OpenResty Edge 中使用网关分区。
网关分区是一组带名称的网关集群,各分区可以使用不同的配置;而每个集群本身又由多台网关服务器组成。因此层级关系是:一个分区包含若干集群,一个集群包含若干服务器。当您把某个应用分配给某个分区后,只有该分区内的服务器才会为它提供服务——其他分区的服务器没有该域名的配置,会返回 “Page Not Found”。
网关分区可以帮助您:
- 隔离内外部应用,使它们互不共享配置和流量。
- 进行精确的 A/B 测试,将变更限定在特定的一组服务器上。
- 灰度推送更新,在网关集群间逐步发布,并可在需要时回滚到之前的版本。
由于 OpenResty Edge 的配置变更推送到服务器时无需任何重载、重启或二进制升级,因此向分区部署既快速又安全。
创建一个新的网关分区
让我们进入 OpenResty Edge 的 Admin Web 控制台。这是我们的控制台的样例部署。每个用户都有自己的本地部署。
首先,让我们进入 “Gateway Clusters” 页面。这里展示了多个已经设置好的网关集群。
举例来说,这里有一个设在美国的网关集群。
在它里面有一台网关服务器。
集群本身属于 “default” 分区。
接下来,我们将创建一个新的网关集群。点击 “New Gateway Cluster” 按钮。
给这个网关集群起个名字叫做 “edge-test-cluster”。
从这张图片里可以看出,在 OpenResty Edge 中,一个网关分区里面可以有若干个网关集群。
下一步,我们把这个新集群加入到某个分区中。
点击这个下拉框。
我们不会使用现有的分区。而是会创建一个全新的分区。
点击 “Add Gateway Partition”。
将这个分区命名为 “edge-test-partition”。
然后点击 “Create” 按钮。
新建的分区显示在分区选择下拉列表的最上方。
点击 “Create” 按钮,创建这个新集群。
可以看到新建的网关集群出现在集群列表页中。
从这张图片里也可以看到,一个网关集群中包含了多个网关服务器。
接下来,我们来看看如何给新建的网关集群添加网关服务器。
这里我们已经准备好了一台网关服务器。
点击 “Approve” 按钮。
首先,我们需要选择一个集群。
在下拉菜单中选择我们新建的网关集群。
填写该服务器的公网 IP 地址。
点击批准该服务器加入集群。
可以看到服务器已经被成功加入到网关集群中。
在新网关分区里创建一个新的应用
接下来,我们要在新建的分区中创建应用。
切换到应用列表页。
点击创建新应用。
输入应用的域名。
点击打开分区选择下拉菜单。
不要选择 “default” 分区。
选择我们新建的分区。
点击创建按钮。
新建一个页面规则
我们将创建一个页面规则来展示分区是如何生效的。
进入页面规则列表页。
点击添加页面规则。
添加一个新动作。
点击打开选择动作的下拉框。
选择 “output response body” 的动作。
点击创建新规则。
我们需要发布来推送这个新改动。
点击这个按钮。
发布!
改动现在已经同步到所有的网关服务器。
现在,新的页面规则已经被推送到所有的网关集群和服务器。
我们的配置变化不需要服务器重载、重启或二进制升级。所以它是非常高效和可扩展的。
测试新建的分区
再次进入网关集群列表页。
这是刚刚我们新建的那个集群。
注意这里,我们刚加进来的服务器,它的 IP 地址是以 ‘67’ 结尾的。
在终端上使用 curl 命令向这个网关服务器发送一个请求。
curl "http://13.229.144.67" -H "Host: edge-test-partition.com"
可以看到,服务器返回了刚才设置的响应体。
接下来,我们对另外一个不属于这个分区的服务器执行同样的操作。注意这台服务器的 IP,它是以 “.84” 结尾的。
发起请求。
curl "http://3.131.85.84" -H "Host: edge-test-partition.com"
可以看到,属于另一个分区的网关服务器给出了 “Page Not Found” 的响应。
常见问题
网关分区和网关集群有什么区别?
网关集群是一组网关服务器,而网关分区是一组网关集群。不同分区可以使用不同的配置,正是这一点让您能够隔离应用、并把发布定向到特定的服务器。
为什么另一个分区的服务器会返回 “Page Not Found”?
应用会绑定到您为它指定的分区。只有该分区内的网关服务器才拥有该应用域名的配置,因此其他分区的服务器会返回 “Page Not Found”。上文的 curl 测试正说明了这一点:位于应用所属分区内的服务器返回了预期的响应体,而分区之外的服务器返回 “Page Not Found”。
什么时候应该使用网关分区?
当您需要隔离内外部应用、为精确的 A/B 测试隔离一组服务器、或在网关集群间灰度推送更新(并保留回滚到之前版本的能力)时,就可以使用网关分区。
应用分区变更需要重启网关服务器吗?
不需要。在 OpenResty Edge 中,配置变更会同步到所有网关服务器,无需任何重载、重启或二进制升级,因此向分区发布可以快速生效,并能扩展到大规模部署。
关于 OpenResty Edge
OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。
如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道 或 B 站频道。谢谢!
关于作者
章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。
章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,并编写过 60 多个开源软件库。
关注我们
如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
翻译
我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!


































































