内容提要
该文章讨论了在Apisix中处理路由和上游的过程。当有上游时,将使用上游,否则将使用路由。如果路由包含域名,则会解析该域名。文章还提到了一个问题,即当DNS服务器短时间不可用后恢复时,Apisix中的DNS解析仍然会持续失败,需要重启Apisix或执行reload命令来解决。修复方式是在解析域名的过程中添加判断。
关键要点
-
文章讨论了在Apisix中处理路由和上游的过程。
-
当有上游时,将使用上游,否则将使用路由。
-
如果路由包含域名,则会解析该域名。
-
提到的问题是当DNS服务器短时间不可用后恢复时,Apisix中的DNS解析仍然会持续失败。
-
需要重启Apisix或执行reload命令来解决DNS解析失败的问题。
-
修复方式是在解析域名的过程中添加判断。
-
解析域名的过程涉及多个函数调用,包括handle_upstream和parse_domain_for_nodes。
-
在parse_domain_for_nodes函数中,没有检测最终结果是否为空,可能导致解析失败。
-
之前有一个issue提到DNS解析未能立即恢复,已被关闭但实际上可以复现。
-
目前的修复方式是对parse_domain_for_nodes函数进行补丁修改。
延伸问答
在Apisix中如何处理路由和上游?
在Apisix中,如果有上游,则使用上游;如果没有,则使用路由。如果路由包含域名,则会解析该域名。
当DNS服务器短时间不可用后,Apisix中的DNS解析会发生什么?
当DNS服务器短时间不可用后,Apisix中的DNS解析会持续失败,直到重启Apisix或执行reload命令。
如何解决Apisix中的DNS解析失败问题?
解决DNS解析失败的问题需要重启Apisix或执行reload命令,此外可以在解析域名的过程中添加判断。
在解析域名的过程中涉及哪些函数调用?
解析域名的过程涉及多个函数调用,包括handle_upstream和parse_domain_for_nodes等。
为什么在parse_domain_for_nodes函数中可能导致解析失败?
在parse_domain_for_nodes函数中,没有检测最终结果是否为空,可能导致解析失败。
之前提到的DNS解析未能立即恢复的问题是什么?
之前提到的DNS解析未能立即恢复的问题是由于DNS服务器恢复后,Apisix中的DNS解析仍然失败,直到重启或reload。