今天,我将演示如何在 OpenResty Edge 中为 TCP 连接设置一个反向代理。

Embeded image

创建 TCP 应用

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

Screenshot

这次我们将创建一个 Stream 类型的应用。进入 Stream 应用列表页。

Screenshot

点击这个按钮来创建一个新的应用。

Screenshot

可以看到有两种类型的 Stream 应用: SNI Proxy 应用和 TCP 应用。

Screenshot

今天的主题是 TCP 应用。

Screenshot

SNI Proxy 应用会在另一个教程中介绍。

Screenshot

选择 TCP 类型。

Screenshot

我们需要为这个应用指定一个端口。

Screenshot

首先,我们需要将这个端口添加到 default 分区。

Screenshot

点击编辑 default 分区。

Screenshot

点击这个按钮添加端口。

Screenshot

可以看到列表中出现了新的一行。

Screenshot

输入 3307 作为端口号。

Screenshot

选择 TCP 类型。

Screenshot

单击 “保存” 按钮进行保存。

Screenshot

可以看到,新的端口已经成功地被添加到 default 分区中。

Screenshot

改动在被保存的同时被自动发布出去。

Screenshot

这里可以看到同步状态。

Screenshot

关闭这个编辑面板。

Screenshot

输入我们刚刚添加到 default 分区的端口。

Screenshot

然后点击创建这个应用。

Screenshot

为 TCP 应用创建上游和页面规则

转到 Upstreams 页面。

Screenshot

为我们的后端服务器创建一个新的上游。

Screenshot

给这个上游起个名字,比如,tcp backend。

Screenshot

这里需要输入后端服务器的 IP 地址。

Screenshot

我们已经在这个 IP 地址上准备了一个 MySQL 服务器。

现在连接到这个 MySQL 服务器。

Screenshot

输入密码。

Screenshot

可以看到,服务器是可以访问的。

现在可以填写后端服务器的主机字段了。

Screenshot

输入端口号 3307。

Screenshot

将来我们可能会为这个上游添加更多的服务器。

Screenshot

单击保存这个上游。

Screenshot

可以看到这个 tcp backend 上游已经被成功创建。

Screenshot

现在创建一个新的页面规则来使用这个上游。

Screenshot

创建一个新的页面规则。

Screenshot

添加一个代理目标。

Screenshot

选择我们刚刚创建的上游。

Screenshot

Screenshot

有多个均衡策略可供选择。由于我们的上游只有一个服务器,所以均衡策略并不重要。

Screenshot

保持默认的 round-robin 策略即可。

Screenshot

创建这个页面规则。

Screenshot

可以在页面规则列表中看到新创建的代理页面规则。

Screenshot

最后一步是做新配置的发布。把我们刚才的改动推送到所有的网关服务器上。

Screenshot

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

Screenshot

发布!

Screenshot

改动现在已经同步到所有的网关服务器上了。可以看到,这个样本部署在网关网络中有 14 台服务器。

Screenshot

我们在整个网络中进行增量的配置同步。

Embeded video

Embeded video

Embeded video

我们在请求粒度上实时更新配置。应用级别的配置更改都不需要服务器重载、重启或二进制升级。所以,即使你有很多不同的用户进行频繁的发布,它的可扩展性也很强。

Embeded image

测试 TCP 应用

现在来看一下按集群分组的所有网关服务器。

Screenshot

我们有一个位于美国的节点,其 IP 地址以 226 结尾。使用这个节点测试刚刚添加的代理。

Screenshot

点击复制这个服务器的 IP 地址。

Screenshot

使用 3307 端口连接到上游后端的 MySQL 服务器。

Screenshot

主机是我们刚才看到的 Edge 节点服务器,IP 地址以 226 结尾。

Screenshot

给出用户名和数据库名,执行 sql 命令。

Screenshot

输入密码。

Screenshot

不出所料,代理生效了! 服务器可以访问,就像直接访问后端服务器一样。

这就是我今天要演示的内容。

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

关于本文和关联视频

本文和相关联的视频都是完全由我们的 OpenResty Showman 产品从一个简单的剧本文件自动生成的。

关于作者

章亦春是开源 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. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

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