使用 OpenResty Edge 配置一个最简单的反向代理和负载均衡器
今天我来演示一下如何用 OpenResty Edge 配置最简单的反向代理和负载均衡器。
我们在一个集中的地方管理所有的网关服务器节点及其配置,即 Edge Admin 网络控制台。
创建示例应用
让我们进入 OpenResty Edge 的网络控制台。这是我们控制台的一个示例部署。每个用户都可以有自己的部署。
用我们的用户名和密码登录。
其他认证方式也可配置。 现在登录。
我们现在到了应用列表页面。已经有很多我们之前创建的应用。每个应用程序对应同一网关中的虚拟主机或虚拟服务器。
在这里,我们将通过点击“新建应用程序”按钮来创建一个新的应用。
就创建一个 HTTP 类型的。这是默认的。
我们为这个应用分配一个域名 test-edge.com
。
我们可以添加更多的域名,包括通配符域名。
在这个例子中,我们只关心 80 端口。
让我们来创建这个应用!
现在我们已进入这个新的应用。它是空的。
为新应用创建上游
让我们进入上游页面。
显然,我们目前还没有定义任何上游。
点击“新建上游”按钮,为我们的后端服务器创建一个新的上游。
给这个上游取个名字,比如说,my_backend
。
为了简单起见,我们这里只用 HTTP 协议。
我们最终可能还是会想启用 HTTPS 协议。
这里我们需要后台服务器的 IP 地址。
我们已经在这个 IP 地址 54.213.103.191
准备了一个后台服务器的样本。
它只是简单地返回开源 OpenResty 服务器软件的默认主页。
后端可以是任何使用 HTTP 协议来通信的软件。
现在我们可以填写后台服务器的主机字段了。
保持 80 端口不变。
未来我们可以通过点击“添加新的上游服务器”按钮在这个上游中添加更多的服务器。
现在保存一下这个上游。
我们可以看到这个 my_backend
上游已经有了。
创建页面规则使用上游
现在让我们创建一个新的页面规则来实际利用这个上游。点击左侧栏的上游链接。
我们目前没有定义任何页面规则。
创建一个新的页面规则。点击“新建规则”按钮。
对于这个页面规则,我们不指定条件。这样,它将适用于所有传入的请求。
我们可以添加条件将该代理页面规则限制在某些请求上。
我们先禁用条件。
我们在这里添加一个代理目标。
选择一个上游。
这里有我们新创建的上游。
我们也有一些预先定义的全局上游。它们可以被所有的应用程序复用,包括这个应用。
这里先选择我们的 my_backend
上游。
我们的上游只有一台服务器。所以负载均衡策略在这里并不重要。
我们就保持默认的轮询策略。
我们可能还想启用响应的缓存。我们将在另一个视频中介绍这个话题。
最后,真正地创建这条规则。
可以看到我们的代理页面规则已经列在页面规则列表中了。
配置的发布
最后一步是进行新的配置发布。它将把我们尚未完成的更改推送到所有的网关服务器上。
我们可以点击此处的链接去进行发布。
我们有机会检查我们的变更,然后再推送出去。这是我们的第一个变更。
这是我们增加的 my_backend
上游。
这是我们的第二个变更。
这的确是我们的代理页面规则。
现在我们向所有的网关服务器发布配置更新。
发送!
我们可以实时观察配置同步进度。它被推送到整个网关网络。
现在已经完全同步了。我们可以看到,这个示例部署在网关网络中有 13 台服务器。
我们在整个网络中进行增量的配置同步。
我们在请求粒度上实时更新配置。应用级别的配置更改都不需要服务器重载、重启或二进制升级。所以,即使你有很多不同的用户进行频繁的发布,它的可扩展性也很强。
测试
我们也可以按集群来检查所有的网关服务器。
这是我们在全球的样例部署。
我们的用户可以自由地在任何地方部署他们的网关服务器,或者跨越不同的云和托管服务。
本列显示各网关服务器的配置同步状态。
我们可以选择旧金山附近的一个网关服务器来测试.
它的公共 IP 地址是这个。
我们直接复制这个 IP 地址来测试这个服务器。
在终端上,我们可以使用 curl
来测试这个旧金山网关服务器。
curl -sS -H 'Host: test-edge.com' 'http://138.68.231.133/' | less
请注意,我们指定了 Host
请求头。这是因为同一台服务器要为许多不同的虚拟主机服务。
发送请求。
结果和预期一样!我们得到了默认的 OpenResty 主页,就像直接访问后台服务器一样。
我们也可以通过 curl
的 -I
选项检查响应头。
curl -I -H 'Host: test-edge.com' 'http://138.68.231.133/'
有一些响应头是由 OpenResty Edge 网关软件生成的。
另外,我们也可以在本地的 /etc/hosts
文件中将 IP 地址绑定到主机名。那么我们就可以直接将网页浏览器指向这个域名了。
cat /etc/hosts
在真实的设置中,我们应该将网关服务器的 IP 地址添加到我们的 DNS 名称服务器中。
dig test-edge.com
这里我们还没有配置这个域名的 DNS 记录。我们将在另一个视频中演示。
OpenResty Edge 也可以同时作为一个权威的 DNS 服务器网络。
当然,这是可选的。用户仍然可以选择使用第三方 DNS 名称服务器。这就是我今天要分享的内容。
关于 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. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
翻译
我们提供了英文版原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!