Gus*_*rez 5 domain-name-system mod-proxy apache-2.4
我们\xe2\x80\x99正在尝试设置一堆Apache 2.4.18来代理将其收到的请求传递到我们合作伙伴的上游服务器。我们的合作伙伴使用 Amazon\xe2\x80\x99s Elastic Load Balancing,因此我们对他们服务器的唯一了解就是其 DNS 名称。
\n\nDNS 记录的 TTL 是 60 秒,我想知道 Apache 是否可以遵守该 ttl,只要 DNS 记录有效就保持连接处于活动状态,然后在 TTL 过期时请求转换。
\n\n每次上游需要资源时,使用 mod_proxy DisableReuse = on 强制打开一个新连接。只要底层操作系统执行 DNS TTL 缓存,就可以实现这一目的。否则,每次需要新资源时,Apache 都会强制发出新的 DNS 请求,从而增加响应时间。
\n\n我\xe2\x80\x99ve想过使用mod_proxy ttl和超时参数,但我认为我\xe2\x80\x99m没有正确解决问题。根据文档, mod_proxy\xe2\x80\x99s 超时参数控制套接字等待来自上游的数据的时间,但 I\xe2\x80\x99m 不确定 Apache 实例是否会关闭连接并打开一个新连接。此外,使用超时很容易出错,因为较低的值可能会向客户端发送错误的答案。
\n\n我\xe2\x80\x99已经花了一些时间尝试解决这个设置,但没有任何乐趣。是否有任何特殊设置可以满足该场景?或者也许我\xe2\x80\x99已经跳过了一些东西?任何帮助,将不胜感激。
\n\n最好的,
\n\n古施陶
\n对您的用例有帮助的唯一选项是disablereuse=On
。
DNS 查询由 glibc 的解析器部分执行。结果不被该库或操作系统缓存。在 apache 情况下,DNS 结果由 apache 工作进程缓存。您可以使用 DNS 服务(例如nscd
或dnsmasq
)来执行 DNS 缓存。
以下是 apache 文档的摘录。
https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#workers
源域的 DNS 解析
当第一次创建到原始域的套接字时,会发生 DNS 解析。启用连接重用后,每个子进程仅解析每个后端域一次,并缓存所有进一步的连接,直到子进程被回收。在规划涉及后端域的 DNS 维护任务时应考虑此信息。另请检查 ProxyPass 参数以获取有关连接重用的更多详细信息。
https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass
disablereuse(默认为“Off”) 当您想要强制 mod_proxy 在使用后立即关闭与后端的连接,从而禁用该后端的持久连接和池时,应使用此参数。这在 Apache httpd 和后端服务器(无论协议如何)之间的防火墙倾向于默默地断开连接或后端本身可能处于循环 DNS 下的各种情况下很有帮助。启用连接重用后,每个子进程仅解析(使用 DNS 查询)每个后端域一次,并缓存所有进一步的连接,直到子进程被回收。要禁用连接重用,请将此属性值设置为“开”。
Qua*_*ind -1
对于您的情况,最好使用 nginx 或 haproxy。Apache 非常适合代理查询。
Nginx 可以设置解析器,例如:
server {
...
resolver 127.0.0.1;
set $backend_upstream "http://dynamic.example.com:80";
proxy_pass $backend_upstream;
...
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处了解 haproxy 中的超时,以及在此处了解 nginx 中的超时。热衷于设置 nginx。
归档时间: |
|
查看次数: |
12046 次 |
最近记录: |