【问题标题】:libsoup Ignores DNS TTLs in load-balanced architecture AWS Elastic Load Balancerlibsoup 忽略负载平衡架构中的 DNS TTL AWS Elastic Load Balancer
【发布时间】:2018-02-14 03:19:58
【问题描述】:

根据这个链接http://www.chaseventers.org/2010/09/libsoup-ignores-dns-ttls.html

来自 libsoup 的代码 /* 需要锁定 host_lock */

static SoupSessionHost *
get_host_for_uri (SoupSession *session, SoupURI *uri)
{
    SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
    SoupSessionHost *host;

    host = g_hash_table_lookup (priv->hosts, uri);
    if (host)
        return host;

    host = soup_session_host_new (session, uri);
    g_hash_table_insert (priv->hosts, host->uri, host);

    return host;
}

不幸的是,除非 SoupSession 对象本身消失,否则此哈希表中的条目永远不会被删除或过期。

这很糟糕有几个原因:

  1. DNS TTL 值被忽略。相反,DNS 查询的结果会被永久缓存。显然,这意味着如果记录发生更改,则需要重新启动 libsoup 客户端才能了解它。

  2. DNS 负载平衡被 libsoup 破坏,无论 A 查询的响应中是否包含多个 IP,它都会重复连接到同一个 IP 地址。

所以看起来 libsoup 在负载平衡 aws 云环境中会表现得很糟糕。请确认。

【问题讨论】:

  • libsoup 中的最新代码库似乎包含了这种类型的错误,那么在 libsoup 方面是否有适当的解决方案?

标签: amazon-web-services cloud libsoup


【解决方案1】:

您可以迁移到Network Load Balancer,它提供静态 IP 地址,而不是解析每个可用区不同 IP 的 DNS 名称,因此即使库不遵守 TTL,这对您来说也不成问题。

【讨论】:

  • 我们无法迁移网络负载均衡器,需要在 libsoup 中找到根本原因
猜你喜欢
  • 2020-12-31
  • 1970-01-01
  • 2023-02-09
  • 2016-12-26
  • 1970-01-01
  • 2014-09-28
  • 2017-03-10
  • 2020-04-29
  • 2017-09-21
相关资源
最近更新 更多