lua-resty-dns-client-test

lua-resty-dns-client-2.2.0

$ opm get zhangbao0325/lua-resty-dns-client-test

概述

包含 DNS 客户端、多个实用程序和负载均衡器的 Lua 库。

该模块目前仅适用于 OpenResty,并且基于 `lua-resty-dns` 库构建。

功能

  • 解析 A、AAAA、CNAME 和 SRV 记录,包括端口。

  • 解析 /etc/hosts

  • 解析 /resolv.conf 并应用 LOCALDOMAINRES_OPTIONS 变量。

  • 将 DNS 查询结果缓存到内存中。

  • 同步请求(多个请求者的单个请求,例如在负载很重时缓存 ttl 过期)。

  • toip 在查询结果上应用本地(加权)循环轮询方案。

  • 用于循环轮询和一致性哈希方法的环形均衡器。

版权和许可

版权: (c) 2016-2018 Kong, Inc.

作者:Thijs Schreijer

许可: Apache 2.0

测试

测试使用 busted 执行,但由于它们在 resty cli 工具内部运行,因此您必须使用 rbusted 脚本。

历史

版本控制严格基于 语义版本控制

2.2.0 (28-Aug-2018) 修复和一个新选项

  • 添加:一个新选项 validTtl,如果设置,将强制覆盖任何接收到的有效答案的 ttl 值。 问题 48.

  • 修复:删除多行日志条目,现在编码为单行 json。 问题 52.

  • 修复:始终注入 localhost 值,即使不在 /etc/hosts 中。 问题 54.

  • 修复:添加了针对 Amazon Route 53 命名服务器使用 ttl=0 回复,而记录具有非 0 ttl 的解决方法。 问题 56.

2.1.0 (21-May-2018) 修复

  • 修复:均衡器的循环轮询方案从随机位置开始,以防止所有工作者从相同的对等方开始。

  • 修复:均衡器不再为没有端口的 SRV 记录返回 port = 0,现在返回默认端口。

  • 修复:不支持地址中包含范围的 IPv6 命名服务器。此修复将简单地跳过它们,而不是在解析时抛出错误。修复 问题 43.

  • 次要:改进均衡器中的日志记录。

  • 次要:将失败的 DNS 查询的默认重新查询间隔从 1 放宽到 30 秒。

2.0.0 (22-Feb-2018) 主要性能改进(均衡器)和错误修复

  • 中断:改进大型均衡器的性能和内存占用。将使用 80-85% 的更少内存,而创建时间减少了 85-90%。由于 host:getPeer() 函数签名已更改,因此这是一个重大更改。

  • 更改:中断:针对仅缓存查找失败和空记录的错误已更改。

  • 修复:如果没有命名服务器,不要失败初始化。

  • 修复:正确识别 /etc/hosts 文件中的方括号内的 IPv6。

  • 修复:不要将成功类型设置为我们不查找的类型。修复 Kong 问题 #3210.

  • 修复:将附加部分中的记录存储在缓存中。

  • 修复:不要用空记录覆盖客户端缓存中的陈旧数据。

1.0.0 (14-Dec-2017) 修复和 IPv6

  • 更改:中断:所有 IPv6 地址现在都以方括号返回。

  • 修复:正确识别方括号内的 IPv6 地址。

0.6.3 (27-Nov-2017) 修复和标记不健康的对等方

  • 添加:标记将地址标记为失败/不健康的标志,请参见 setPeerStatus

  • 添加:回调以接收均衡器更新;将地址添加到/从均衡器中移除(例如,在 DNS 更新之后)。

  • 修复:现在支持权重为 0 的 SRV 记录条目。

  • 修复:最后一个主机名解析失败(均衡器)。

0.6.2 (04-Sep-2017) 修复和重构

  • 修复:均衡器没有为命名 SRV 条目返回主机名。请参见 问题 #17.

  • 修复:修复偶尔失败的测试。

  • 重构:从记录中删除元数据,而是将其存储在自己的缓存中。

0.6.1 (28-Jul-2017) 调整随机化

  • 更改:使用不同的随机数生成器来为环形均衡器生成随机数,以便在完全相同的状态下可预测地重新创建均衡器(添加 lrandom 库作为新的依赖项)。

0.6.0 (14-Jun-2017) 重新编写解析器核心以异步解析

  • 添加:只要有可能,解析就会异步完成。为了使其正常工作,引入了新的设置 staleTtl,它决定在后台查询正在进行时陈旧记录将返回多长时间。

  • 更改:中断!以前返回和接受解析器对象的几个函数不再这样做。

  • 修复:如果查询类型不是 A 或 AAAA,则不再将 IP 地址作为名称查找。

  • 修复:在查询后将名称规范化为小写。

  • 修复:为主机文件条目和 IP 地址设置上次成功类型。

0.5.0 (25-Apr-2017) 实现 SEARCH 和 NDOTS

  • 删除:中断!stdError 函数已删除。

  • 添加:实现了 searchndots 选项。

  • 更改:resolve 不再将空结果或 DNS 错误作为表返回,而是作为 Lua 错误(nil + error)。

  • 更改:toip()resolve() 有一个额外的结果;历史。包含尝试过的名称/类型/结果列表的表。

  • 修复:resolv.conf 中的超时和重传选项被 client 模块忽略。

  • 修复:具有 IPv6 地址的命名服务器将无法正确使用。还添加了一个标志 enable_ipv6(默认 == false)以启用 IPv6 命名服务器的使用。

0.4.1 (21-Apr-2017) 错误修复

  • 修复:cname 记录缓存导致过多的 DNS 查询,请参见 Kong 问题 #2303.

0.4.0 (30-Mar-2017) 错误修复

  • 更改:中断!修改了哈希处理,现在必须是大于 0 的整数。

  • 添加:中断!一个重试计数器,用于在哈希重试上贯通(更改了 getpeer 签名)。

  • 修复:没有遵守 MAXNS (3),因此从 resolv.conf 文件中解析了超过 3 个命名服务器。修复 Kong 问题 #2290.

  • 添加:两个方便的哈希函数。

  • 性能:一些改进(为插槽列表预分配表)。

0.3.2 (6-Mar-2017) 错误修复

  • 修复:清理了禁用的地址,但没有删除它们,导致在重复添加/删除它们时出现错误。

  • 修复:在重新查询 DNS 记录时存在潜在的竞争条件。

  • 修复:在使用运行的计时器释放均衡器对象时存在潜在的内存泄漏。

0.3.1 (22-Feb-2017) 错误修复

  • Kubernetes DNS 为单个节点返回一个 SRV 记录,其中目标是同一个名称(因此会导致递归循环)。现在这些条目将被删除,如果什么都没有剩下,它将使 SRV 查找失败,导致贯通到下一个记录类型。

  • 如果 Kubernetes 没有提供/设置端口,它往往会返回端口 0,因此 toip() 函数现在忽略 port=0 并回退到传入的端口。

0.3.0 (8-Nov-2016) 重大破坏性更新

  • 中断:重命名了许多内容;方法名称、模块名称等。几乎破坏了一切... 也以一个新名称发布。

  • 功能:添加了 udp 函数 setpeername(客户端)。

  • 修复:不要为 ttl=0 请求同步 DNS 查询(客户端)。

  • 修复:完整的测试覆盖率和伴随的修复(环形均衡器)。

  • 功能:自动重试失败的 DNS 查询(环形均衡器)。

  • 功能:现在支持更新权重而无需删除/重新添加(环形均衡器)。

  • 更改:自动重试间隔可配置为失败的 DNS 查询(环形均衡器)。

  • 更改:最大生命周期间隔可配置为 ttl=0 DNS 记录(环形均衡器)。

0.2.1 (24-Oct-2016) 错误修复

  • 修复:toip() 在只有 1 个条目的 SRV 记录上失败。

0.2 (18-Oct-2016) 添加了均衡器

  • 修复:即使从缓存中提供服务,也会创建解析器对象。

  • 更改:更改解析器顺序(SRV 现在默认情况下排在第一位)以用于为每个条目创建 SRV 和 A 记录的 DNS 服务器。

  • 功能:使解析器顺序可配置。

  • 功能:环形均衡器(实验性,还没有完整的测试覆盖率)。

  • 其他:更多 DNS 客户端的测试覆盖率。

0.1 (09-Sep-2016) 初始发布版本

作者

zhangbao0325

许可

mit

版本