Debian 12 上的 Celery/Redis 中的 DNS 解析问题 - 特定于 VPS 提供商

Debian 12 上的 Celery/Redis 中的 DNS 解析问题 - 特定于 VPS 提供商

在某些 Debian 12 安装中,我在 Celery/Redis 设置中遇到了 DNS 解析方面的一个特殊问题。看来这个问题也可能与 VPS 网络设置有关。我不知所措,非常感谢任何专家的指导。

我们使用 Celery 每 40 秒执行一次任务,使用本地 Redis 作为队列。每个任务将当前时间戳写入中央远程 Redis:

def create_redis_connection_sync():
    return redis.Redis(
        host=settings.REDIS_URL,
        password=settings.REDIS_PASSWORD,
        port=settings.REDIS_PORT,
        db=settings.REDIS_DB,
        decode_responses=True,
    )

info = {"timestamp": datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")}
redis_instance = create_redis_connection_sync()
redis_instance.hset(settings.REDIS_VPN_SUBDOMAIN, mapping=info)
redis_instance.close()

此配置在我们公司的 60 多个 Debian 12 VPS 上无缝运行。但是,最近来自其他提供商的 VPS 行为异常。如果 systemd-resolved.service 停止,任务执行时间会从 1.38 秒大幅增加到 131 秒。

[2023-12-20 08:23:18,879: INFO/ForkPoolWorker-1] Task notify.tasks.push[7e2d2856-a472-4b49-8859-2729b5bc0b0b] succeeded in 1.3803006149973953s: None
[2023-12-20 08:25:58,725: INFO/ForkPoolWorker-1] Task notify.tasks.push[c116f662-e506-4076-9b42-32f4acd8df78] succeeded in 131.22602167900186s: None

所有系统统一使用以下 /etc/resolv.conf:

nameserver 1.1.1.1
nameserver 1.0.0.1

Redis 和 Celery 的配置在所有 VPS 服务器上都是一致的。

我试图理解:

  1. 为什么这个特定的 VPS 如此依赖 systemd-resolved.service,与其他 VPS 不同?
  2. 此 VPS 没有 /etc/network/interfaces,并且 /etc/systemd/network/ 为空。我还应该在哪里查找?
  3. 我想禁用 systemd-resolved.service,因为它与使用相同端口的 AdGuard 冲突。以下是 sudo netstat -ltnp | grep -w '53' 的输出:
tcp        0      0 172.16.96.0:53          0.0.0.0:*               LISTEN      496/AdGuardHome
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      12115/systemd-resol
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN      12115/systemd-resol
  • 当 /etc/resolv.conf 已经存在时,是否可以将系统配置为不依赖 systemd-resolved.service 进行 DNS 解析?
  • 如果其他方法都失败了,那么考虑到 AdGuard 主要绑定到 Wireguard VPN 使用的 172.16.96.0 子网,systemd-resolved.service 和 AdGuard 都在监听端口 53 是否有问题?因为目前 Wireguard 客户端尽管端口是共享的,但仍然可以连接到 Adguard。

任何见解或建议都将不胜感激。谢谢。

相关内容