如何在 OpenResty Edge 中发布与回滚网关配置:内置版本控制,无需重载
OpenResty Edge 通过内置的版本控制来管理网关配置:每次变更都会保持"待发布"状态,直到你做一次配置发布,才会一次性推送到所有网关集群,且无需重载、重启或二进制升级。发布前你可以用文本或 JSON 差异预览这次变更,选择 Normal 或 Staging 类型发布,事后还能一键还原或回滚到任意历史版本。
本教程完整走一遍这个流程:创建一条页面规则、发布它、修改后再次发布,然后还原最新版本并回滚到更早的版本——每一步都用 curl 验证。底层的版本控制由网络控制台所使用的关系数据库提供。
为应用程序创建页面规则
像往常一样,让我们进入 OpenResty Edge 的管理网络控制台。这是我们控制台的一个示例部署。每个用户都可以有自己的部署。
我们仍然继续使用样本应用 test-edge.com 。
进入应用程序。
首先我们添加一个简单的页面规则来输出一个自定义的响应体。
创建一个新的页面规则。
我们没有为这个规则指定一个条件。所以它将无条件地触发。
添加一个新的动作,用于直接返回一个响应体。
我们也可以搜索“输出响应体”的动作。
选择它。
这里我们指定了 “text/plain” 的 Content-Type 头。
并指定 “Hello world” 作为响应体。
我们需要确保这个规则总是在其他规则之前运行。所以我们把它标记为“永远在前”的规则。
如果这个规则被匹配,我们就跳过任何后续规则。
现在创建它。
可以看到我们的页面规则已经在这里列出。
发布页面规则到所有网关集群
这个新页面规则还没有上线,它仍然是一个待定的更改。
我们将发布一个新的配置版本来将它推送出去。
我们可以使用这个清除按钮来清除所有待定的更改。但现在我们不想清除它。
在进行配置发布之前,我们可以检查一下待变更的细节。
只需点击这个按钮,就可以看到变更的差异。
我们为这些变更提供了一个可读的文本描述。
或者可以直接查看 JSON 格式的变更。
现在可以进行新的发布了。
你可以选择只向自己的 staging 网关节点 发布。
在这种情况下,这个配置版本将具有 Staging 类型。我们将在未来的视频教程中演示这一点。否则它将是 Normal 类型。
在这里还可以添加一些说明或评论来描述该版本。当然这是可选的。
点击发布按钮进行发布。
现在已经完全同步了。
现在,新的页面规则已经被推送到所有的网关集群和服务器。
我们的配置变化不需要服务器重载、重启或二进制升级。所以它是非常有效和可扩展的。
用 curl 测试已发布的配置
在终端上,我们可以向应用程序发送一个测试请求。
curl http://test-edge.com/
test-edge.com 域名已经解析到 OpenResty Edge 管理的网关节点服务器。
运行。
我们确实得到了 Hello world 的响应体。
回到发布页面,我们可以在这个表格中浏览所有的发布历史。
在这里我们可以看到每个版本的作者是谁。
还有什么时间发布的。
还可以查看操作类型,它可以是“发布”或“回滚”。
发布类型可以是 Normal,也可以是 Staging 。
我们还可以在这里展开每个历史版本的变更细节。
它仍然有文字说明。
编辑页面规则
让我们稍微编辑一下页面规则。回到页面规则页面。
编辑这个规则。
让我们把响应的主体改为 “Happy hacking!”
保存。
现在又有了一个新的变更。
发布修改后的配置
再来一次新的配置发布。
再检查一下变更的细节。
它显示我们用 “Happy hacking!” 替换了 “Hello world” 的信息。
让我们来发布。
这次我们添加一个评论 “Say happy hacking”。
发布。
一个新的版本已推送。
发布历史也更新了。
测试修改后的配置
让我们再次在终端上发送一个测试请求。
curl http://test-edge.com/
运行。
响应体确实被改成 “Happy hacking” 了。
还原最新的配置发布
接下来,比如说,我们想还原最新的配置版本。
只需点击这个“还原此版本”的按钮。
确认还原。
发布还原现在已经推送到所有的网关服务器。
现在你看到最新的操作日志的类型是“回滚”。
测试还原后的配置
我们在终端上再测试一下。
curl http://test-edge.com/
运行。
确实变回了“Hello world”。
回滚到任意历史版本
除了撤销最近一次发布,我们也可以选择回滚到一个更老的版本。
比如,我们这次想要回滚到第二个版本。
我们可以直接点击这个“回滚到这个版本”的按钮。欢迎你自己尝试一下。
这就是我今天想讲的内容。
常见问题
如何在 OpenResty Edge 中发布一次配置变更?
你在网络控制台里做的任何变更(比如新建一条页面规则)都会保持"待发布"状态,直到你做一次配置发布。在发布页面上,查看待发布的差异,可选地填写一段描述,然后点击"发布"。该变更随即被推送到所有网关集群和服务器。
发布一次配置变更需要重载或重启服务器吗?
不需要。OpenResty Edge 的配置发布无需服务器重载、重启或二进制升级。新配置会自动同步到每一个网关集群和服务器,因此发布高效且可扩展。
Normal 发布和 Staging 发布有什么区别?
Staging 发布只把配置推送到你自己的 staging 网关节点,让你在正式上线前先验证变更;Normal 发布则推送到所有网关服务器。发布历史会为每条记录标注类型,便于区分。
如何还原最新的一次发布?
在发布历史中打开最新一条记录,点击"还原此版本"并确认。还原会立即推送到所有网关服务器,且该操作会以"回滚"类型记入历史。
除了上一次,能回滚到任意更早的版本吗?
可以。除了撤销最近一次发布,你还可以在发布历史中选中任意更早的记录——例如倒数第二个——点击"回滚到这个版本",即可恢复到那个确切的配置版本。
发布前能预览这次变更吗?
可以。发布前你可以以人类可读的文本描述和 JSON 差异两种形式查看待发布的变更,从而清楚地确认将要推送到网关的内容。
关于 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. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
翻译
我们提供了英文版原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!

















































































