我提到了两个配置中的两个更改,其中之一是KONG_DNS_RESOVEL。下面详细解释该配置。
1. 首先,您需要了解为什么要添加此配置。以前,如果您没有添加服务发现,则实际上不需要此配置。但随着业务数量的增加,每次部署项目时都需要更改每个网关设置的路由IP地址,这从运维角度来说非常麻烦。工作量变得巨大,尤其是到了后期,当更多的服务部署在不同的物理节点上时。因此,前面讨论的网关需要微服务网关具备服务发现能力。这意味着您可以在领事服务中心找到注册成功的服务。
我们再谈谈DNS。这里的DNS与网络通信中的DNS类似,但又有不同。首先,传统DNS的作用是解析用户提交的域名,并将其翻译成IP地址和端口号。然后用户通过IP和端口访问对应的服务器。 Kong的KONG_DNS_RESOVEL用于指定DNS解析器。客户端访问网关后,我们需要在consul8600端口上配置kong的DNS解析器,以便其请求能够映射到相应的服务。
同时,在进行负载均衡时还必须使用DNS。
2、配置DNS_RESOVEL后遇到的问题:
在Kong中设置DNS_RESOVEL后,我重新打开Konga,在连接Kong节点时发现了另一个问题。这是日志:
2021/04/13 03:10:17 [crit] 41#0: *8 [lua] Balancer.lua:540: Could not get list of upstreams : [postgres] [cosocket] DNS resolution failed : dns server error : Two servers A failure has occurred : [\’ (短的)。 Con~ Database:(na) – 缓存未命中\’,\’kong-database:33 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器故障\’,\’kong-database:1 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器失败\’,\’kong-database:5 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器故障\’], context: ngx.timer
.
2021/04/13 03:10:26 [错误] 34#0: *253 [kong] kong.lua:42 [postgres] [cosocket] DNS解析失败: DNS服务器错误: 尝试两次服务器失败: [\'(短)kong-database:(na) – 缓存。 -miss\’,\’kong-database:33 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器故障\’,\’kong-database:1 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器故障\’,\’kong-database:5 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器故障\’],客户端: 172.18.0.1,服务器: kong_admin,请求: \’GET/HTTP/1.1\’,主机: \’127.0.0.1:8001\’
.
2021/04/13 03:11:16 [错误] 34#0: *1594 [lua] Connector.lua:356: 无法清理PostgreSQL 数据库中过期的行([cosocket] DNS 解析失败: DNS 服务器错误: 2 服务器故障。尝试: [\'(短) Kong- Database:(na) – 缓存未命中\’,\’kong-database:33 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器故障\’,\’kong-database:1 – 缓存未命中/计划/查询/DNS 服务器错误: 2服务器故障\’,\’kong-database:5 – 缓存未命中/计划/查询/DNS 服务器错误: 2 服务器故障\’]), context: ngx.timer
这里的问题是在配置DNS_RESOVEL后出现的。这显然是DNS 配置问题。
经核实,问题原因是Docker自带的DNS解析器与consul中的DNS解析器冲突。具体解决办法是按照提示,更改映射数据库主机地址,如下: IPv4 地址,就是这样。
#Docker设置KONG KONG_DNS_RESOVEL时出现上述问题。 DNS解析错误相关内容来源网络仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91512.html