博客 | NGINX

宣布推出 NGINX Plus R9

NGINX-F5-horiz-black-type-RGB 的一部分
欧文·加勒特缩略图
欧文·加勒特
2016 年 4 月 12 日发布

NGINX, Inc. 自豪地宣布推出NGINX Plus Release 9 (R9) ,这是我们应用交付平台的最新版本。 此更新提供了两个重要的新功能:无需自定义二进制文件即可动态加载 NGINX Plus 的丰富扩展,以及与我们现有的 TCP 和 HTTP 负载均衡功能一起提供商业支持的 UDP 负载均衡

除了NGINX Plus R9中令人兴奋的新功能之外,我们还推出了新的定价和支持选项。 NGINX Plus 现采用“无限量”定价模式,您只需支付一个固定价格,即可在应用或企业的任何位置无限制地使用。 NGINX Plus 现在也可以购买三种不同的支持级别: 为非生产应用提供基本 9×5 支持、通过电话或电子邮件提供专业 24×7 支持以及企业 24×7 支持,并保证在 30 分钟内做出响应。

编辑器 – 有关 NGINX Plus R9 中主要新功能的更多详细信息,请参阅这些相关资源。

 

NGINX Plus R9的主要新功能包括:

  • 动态模块- NGINX Plus 现在可以在运行时使用动态可加载模块进行扩展。 这意味着您可以只选择您想要的扩展并直接从 NGINX Plus 存储库安装它们,可通过标准aptyum命令访问。 随着时间的推移,我们将为我们的软件分发一组不断增长的经过测试和完全认证的扩展。

    最受欢迎的 NGINX 编写和第三方模块(例如对 Lua 编程语言的支持)已经转换为新的动态加载格式。 我们还发布了供第三方模块所有者将其模块转换为新格式的说明,这是将模块添加到我们的存储库之前所必需的。

  • UDP 负载均衡- 通过在现有的 TCP 和 HTTP 负载均衡功能中添加 UDP 负载均衡,NGINX Plus 现在可以对几乎所有应用进行负载均衡。 我们上个月在 NGINX Open Source 中添加了 UDP 负载均衡,并且在此版本中,我们将通过附加高级功能扩展对 NGINX Plus 的支持。 NGINX Plus 通过主动健康检查监控 UDP 服务,通过丰富的统计数据提供关键可见性,并允许您动态添加和删除服务器

    UDP 通常用于本质上非事务性的轻量级协议,例如 DNS(将域名解析为地址)、syslog(轻量级日志记录)和 RADIUS(一种身份验证协议)。 由于对带宽要求低,UDP 也正在成为物联网应用的首选协议之一。 NGINX Plus 可以轻松交付和平衡这些现有和新的应用的负载。

  • 使用 DNS SRV记录进行服务发现——基于微服务的应用是动态的——服务可以根据需要进行扩大、缩小和移动。 掌握服务当前状态的一个好方法是使用服务发现。 许多服务发现平台,例如 Consul 和 etcd(SkyDNS),为客户端(例如 NGINX Plus)提供了 DNS 接口,以请求有关发现服务的信息。

    服务使用的端口号通常是动态分配的。 因此,服务发现平台使用包含端口号信息的DNS SRV记录。 NGINX Plus 现在支持 DNS SRV记录,并且可以使用 DNS 请求来查询服务注册表以获取服务的位置,包括动态分配的端口信息。

  • NGINX Plus 应用程序定价——为了确保在高增长、季节性或弹性流量期间实现最大性能和正常运行时间,许多应用需要动态基础设施。 这些应用程序通常还使用微服务或分布式架构,并利用容器或虚拟机进行运行时。 按实例或机器小时数支付软件费用并不能提供这些现代应用程序所需的灵活性或成本效益。 针对这些用例,我们引入了 NGINX Plus App Pricing。

    NGINX Plus 应用程序定价提供无限制、“任意使用”NGINX Plus 扩展功能和商业支持二进制文件的功能,每个应用每年只需支付一个固定费用。 无论有多少虚拟机、容器、节点、并发连接或用户,您只需支付全年的低费率。 您可以随时随地以任何您需要的方式在应用基础设施中以及在开发、测试、登台、灾难恢复和生产环境中部署 NGINX Plus – 无需担心不可预测的基于消费的账单,也无需在需要突然爆发容量时等待获取许可证密钥。

NGINX Plus R9 功能详情

本节详细概述了 NGINX Plus R9 中的所有新特性和功能。

动态模块

NGINX 和 NGINX Plus 都具有模块化架构。 它们的核心功能可以通过第三方开发人员和核心 NGINX 工程团队编写的模块进行扩展。 这些模块增加了关键功能,例如嵌入 Lua 脚本和根据 IP 地址对用户进行地理定位。 有超过100 个第三方模块和超过 60 个官方 NGINX 模块可用。 我们在基础nginx‑plus包中包含了 56 个,在nginx‑plus‑extras包中包含了另外 10 个(完整列表可在NGINX Plus 技术规范中找到)。

可以根据需要将功能插入 NGINX Plus

在这个版本中, nginx‑plus‑extras包中的附加模块(第三方和官方 NGINX)也可以动态加载到基础 NGINX Plus 包nginx‑plus中。 这使得您可以仅加载实际需要的附加模块。

这些模块在 NGINX Plus 存储库中可用,我们计划在未来几个月内将模块添加到存储库中。 我们鼓励当前使用nginx‑plus‑extras包的任何人迁移到核心nginx‑plus包,因为我们将在以后的版本中弃用nginx‑plus‑extras包。

在运行广泛的发布测试之前,我们通过将每个动态模块加载到 NGINX Plus 核心中来测试它,因此我们可以确信(未配置时)该模块不会干扰 NGINX Plus 的正常运行。 我们将跟踪模块更新并在每次发布时发布新版本,如果在发布之间报告了严重的安全问题。

有了动态模块,我们就可以分发具有每个人都使用的功能的单个 NGINX Plus 二进制文件。 然后管理员可以选择他们想要使用的附加模块。

如何在 NGINX Plus 中加载动态模块

要安装并动态加载模块,请执行以下步骤。 他们假设您已配置包管理工具以从 NGINX, Inc. 而不是操作系统供应商的分发中检索文件。

  1. 使用操作系统的标准包管理工具(例如aptyum )来安装基本nginx‑plus映像和要动态加载的模块(对每个模块重复安装命令)。 以下命令适用于基于 Debian 的系统。

    # apt-get 更新# apt-get 安装 nginx-plus # apt-get 安装模块名称
    

    在此版本中,您可以替换module-name的名称是:

    /etc/nginx/modules目录会自动创建,其中包含指向所选模块的.so文件安装位置的符号链接。

    笔记:

    • 如果您正在使用 NGINX Plus 早期版本的nginx‑plus‑extras包,则必须在安装 R9 nginx‑plus包之前将其删除。 对于基于 Debian 的系统,适当的命令集是:

      # apt-get 更新# apt-get 删除 nginx-plus-extras # apt-get 安装 nginx-plus # apt-get 安装模块名称
      
    • 由于操作系统的限制,某些模块不适用于某些操作系统版本。 有关详细信息以及模块的描述,请参阅NGINX Plus 技术规范

  2. /etc/nginx/nginx.conf中的主(顶层)上下文中,为每个可动态加载模块添加一个load_module指令:

    load_module 模块/模块名称.so;
  3. 检查新配置的语法有效性并重新加载 NGINX Plus。

    # nginx -t && nginx -s 重新加载

    nginx.conf中列出的模块被动态加载到 NGINX Plus 中。

UDP 负载平衡

上个月,我们在 NGINX Open Source 中发布了 UDP 负载均衡,NGINX Plus R9 通过健康检查、扩展状态监控和动态重新配置扩展了该功能。

NGINX Plus R9 及更高版本支持 UDP 负载均衡,非常适合提供高可用性 DNS 服务
UDP 负载均衡是 NGINX Plu R9 中的新功能,可为 DNS 服务提供高可用性

与 TCP 负载均衡一样,UDP 负载均衡的配置在上下文中进行。 与 HTTP 和 TCP 负载均衡一样,UDP 负载均衡使用上游组来定义提供基于 UDP 的服务的原始服务器集以及在服务器之间平衡流量负载时使用的算法

该配置还为每个 UDP 端口定义了一个虚拟服务器,并使用proxy_pass指令命名提供相关服务的上游组:

流 { 上游 dns_upstreams { least_time; 服务器dns-server-1-ip :53; 服务器dns-server-2-ip :53; } 服务器 {监听 53 udp ; 监听 53; #tcp proxy_pass dns_upstreams; proxy_timeout 1s; proxy_responses 1; error_log logs/dns.log; } }

此配置示例用于负载均衡 DNS 服务。 在上游块中,我们配置了最少时间算法,因此 NGINX Plus 将每个请求发送到当前具有最少“连接”且响应最快的服务器。 在服务器块中,我们同时监听 UDP 和 TCP 流量,因为 DNS 可以在这两种协议上运行。 proxy_responses指令控制 NGINX Plus 在释放与 UDP“连接”相关的资源之前从上游服务器接收多少个响应。 由于 DNS 是一个简单的请求答复协议,因此一次答复通常就足够了。

NGINX 开源包括 UDP 的基本健康检查。 如果上游 UDP 服务器未能在定义的超时期限内响应请求,或返回 ICMP 错误,NGINX 和 NGINX Plus 将在定义的时间内停止向其发送流量。

NGINX Plus R9 为 UDP 服务添加了主动健康检查,类似于对HTTP 和 TCP 流量的检查。 您可以配置 NGINX Plus 向上游服务器发送特殊 UDP 请求,并定义服务器必须返回的响应类型才能被视为健康。 由于 UDP 不具备 TCP 为 HTTP 提供的可靠传输机制,因此主动健康检查对于 UDP应用而言比对于 TCP 和 HTTP应用更为重要。

使用 NGINX Plus,您还可以动态添加或删除上游服务器。 这使得(例如)可以轻松地使服务器脱机进行维护,然后将其重新插入到负载平衡池中。 NGINX Plus状态模块和实时活动监控仪表板中新的 UDP 相关统计数据让您可以清晰地了解服务器的运行情况。

NGINX Plus R9 对最常用的基于 UDP 的简单应用进行负载平衡: DNS、RADIUS、syslog 和 NTP。 目前不支持长寿命 UDP 协议,例如 IP 语音和其他基于 SIP 的应用。

使用 DNS SRV记录进行服务发现

现代 Web应用由多个小型应用组件组成 - Web 服务器、应用服务器、数据库等。 NGINX Plus 等前端负载均衡器会检查传入流量,然后在应用组件之间路由和负载平衡请求。

当应用组件部署在虚拟或基于容器的平台上时,它们可能具有不可预测的 IP 地址和端口。 服务发现是本地客户端(例如前端 NGINX Plus 负载均衡器)定位这些组件以便可以向其发送流量的过程。 服务发现通常由“服务数据库” (例如ConsuletcdZooKeeper)促进。

在 NGINX Plus R8 中,我们宣布了即时重新配置 API 的持久版本,并共享了ConsuletcdZooKeeper的演示解决方案,用于检查服务数据库并将配置更改推送到 NGINX Plus。 在 NGINX Plus R9 中,我们很高兴地宣布支持使用 DNS SRV查询的替代方法。 DNS SRV查询返回特定类型的应用服务器的 IP 地址、端口、优先级和权重。

ConsulSkyDNS for etcd都提供了客户端可以用来检索SRV记录的 DNS 接口。 NGINX Plus 通过直接查询服务的 DNS 接口来获取负载平衡配置。 NGINX Plus 会定期重新检查服务,因此任何更改都会快速自动传播。

以下示例配置 NGINX Plus 通过 DNS 获取my_service的上游服务器列表。 服务器指令的service=http参数启用对 DNS SRV记录的支持。 支持my_service的应用程序实例现在已被 NGINX Plus 自动发现。

http { 解析器dns 服务器 ip ; 上游 my_service { 区域后端 64k; 服务器my_service 的主机名服务 = http resolve; } 服务器 { # ... 位置 /my_service { # ... 代理传递 http://my_service; } } }

NGINX Plus 应用定价

按实例定价是开始使用 NGINX Plus 的好方法,它为硬件负载均衡器提供了一种非常经济高效的替代方案,但 NGINX Plus 的潜在用途远远超出了简单的硬件更换。 其轻量级的软件架构使 NGINX Plus 成为每个应用专用负载均衡的理想选择,并且由于 NGINX Plus 建立在 NGINX 开源之上,因此它也可以替换应用中的 Web 和应用服务器。 这些用例推动了越来越多的 NGINX Plus 部署,而对于这些部署而言,按实例定价既不具成本效益,也不够灵活。

通过 NGINX Plus R9,我们引入了一种新的“无限量”应用定价模型,该模型允许您根据需要为特定应用运行任意数量的 NGINX Plus 实例。 您可以在应用基础设施中,以及在开发、测试、登台、灾难恢复和生产环境中随时随地以任何需要的方式部署 NGINX Plus。 无论有多少虚拟机、容器或节点,您都只需为全年支付一个固定费率。

每个订阅都包括NGINX Plus 软件的全部功能以及我们屡获殊荣的支持和配置帮助。 此外,选择应用程序定价模型可让您享有以下权利:

  • 您可以选择NGINX 专业服务提供的安装和/或调优支持
  • 为您的团队提供 NGINX 基础知识、高级主题或两者的培训

根据每个应用的使用,其使用次数不受限制。 应用被定义为支持单个 Web应用或单独命名的桌面或移动应用的软件组件和团队。 该模型预期并包含基于微服务和其他分布式架构。

还提供站点许可订阅,可在整个组织内无限制使用 NGINX Plus。

其他功能

NGINX Plus R9 引入了许多其他改进,包括:

  • 缓存性能改进——去年,我们引入了线程池模型来改进缓存读取操作并防止它们可能阻塞 NGINX 核心。 这使得某些缓存工作负载的性能潜在提高了 9 倍。 在此版本中,NGINX Plus 还可以将缓存的磁盘写入卸载到线程中。
  • 通过 TCP 进行 DNS 查找– 默认情况下,NGINX Plus 使用 UDP 进行 DNS 查找。 但是,当 DNS 响应很大时(例如,当名称解析为大量服务器时),完整的响应可能不适合单个 UDP 数据报(限制为 512 字节)。 不完整的响应被标记为截断,NGINX Plus 现在会立即使用 TCP 重试请求。 这使得 NGINX Plus 能够更好地支持非常庞大、动态的服务器部署。
  • 重试非幂等请求- 当 HTTP 请求由于错误或超时而失败时,默认情况下 NGINX Plus 会自动与上游组中的另一台服务器重试该请求。 您可以使用proxy_next_upstream指令来定义 NGINX Plus 重复请求的错误类型,包括特定4xx5xx响应代码。

    按照惯例, POST请求通常不会重试,因为主体数据会传输到服务器,如果服务器出现故障,则无法重播。 然而,在某些故障情况下,早期版本的 NGINX Plus 会重试POST请求,这与由于它们是非幂等的而不会重试的假设不一致。

    NGINX Plus 不再自动重试失败的非幂等 HTTP 请求( POSTLOCKPATCH )。 要恢复以前的行为并允许 NGINX Plus 在可能的情况下重试失败的非幂等请求,请将新的non_idempotent参数包含在proxy_next_upstream指令中。

升级或尝试 NGINX Plus

如果您正在运行 NGINX Plus,我们强烈建议您尽快升级到版本 9。 您将获得大量修复和改进,如果您需要提出支持单,这将帮助我们为您提供帮助。

如果您还没有尝试过NGINX Plus ,我们鼓励您尝试一下它,看看它是否适用于 Web 加速、负载均衡和应用交付,或者作为具有增强监控动态重新配置API 的完全支持的 Web 服务器。 立即开始免费试用 30 天,亲自了解 NGINX Plus 如何帮助您交付和扩展您的应用。

编辑器 – 有关 NGINX Plus R9 中主要新功能的更多详细信息,请参阅这些相关资源。

 


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”