我今天有一个谜团要告诉你。我们在 Azure 上运行一个基于 CoreOS (2023.5.0 / Linux 4.19.25-coreos) 的小型三节点 Elasticsearch 集群。Elasticsearch 在主机网络模式下的 docker 容器内运行。在几乎完全免维护运行一年多之后,我们看到机器进入了一种非常有趣的状态。
此问题已通过修复Linux 内核中的驱动程序解决。请参阅下面的答案。
基本上,受影响的机器和其他两个节点之间的网络连接失效。它们都在同一个虚拟网络和同一个子网中,通常可以与其他人通信。仍然可以从其他子网(我可以通过 ssh 进入)和不同的对等虚拟网络访问受影响的节点。这台机器也有(非常不稳定的)互联网连接,但大多数请求只是超时。
我们观察到,在受影响的节点上,报告的“使用的套接字”数量/proc/net/sockstat非常高(大约 4.5k 而不是健康节点上的大约 300)。监控显示,这个数字从节点变得不可用的那一刻起迅速上升。
有趣的是,我们似乎无法识别这些使用过的套接字的来源:
# cat /proc/net/sockstat
sockets: used 4566
TCP: inuse 2 orphan 0 tw 2 alloc 98 mem 4
UDP: inuse 1 mem 0
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
# cat /proc/net/sockstat6
TCP6: inuse 98
UDP6: inuse 1
UDPLITE6: inuse 0
RAW6: inuse 1
FRAG6: inuse …Run Code Online (Sandbox Code Playgroud) tcpdump linux-networking linux-kernel coreos azure-networking
我正在玩 mailman3,并且遇到了这个问题:mailman3、Web 界面以及 hyperkitty 已使用 mailman-bundler 安装。我已将规定的后缀配置添加到main.cf:
recipient_delimiter = +
unknown_local_recipient_reject_code = 550
owner_request_special = no
transport_maps = hash:/path/to/var/data/postfix_lmtp
local_recipient_maps = hash:/path/to/var/data/postfix_lmtp
relay_domains = hash:/path/to/var/data/postfix_domains
Run Code Online (Sandbox Code Playgroud)
列出的文件是世界可读的,因此不应该存在权限问题。我可以通过 Web 界面成功创建域/列表,但是当我尝试将邮件发送到列表地址时,邮件被拒绝,并显示以下消息:
Recipient address rejected: User unknown in virtual mailbox table
这个 postfix 安装通常使用 avirtual_transport将邮件传递到 dovecot。对应的配置如下所示:
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
local_recipient_maps = $virtual_mailbox_maps
Run Code Online (Sandbox Code Playgroud)
这是基于优秀的NSA 证明您的电子邮件在 2 小时内指南。
现在,这个 StackOverflow 问题声称virtual_transport和transport_maps不能很好地结合在一起,尽管我在后缀文档中找不到任何可以验证此声明的内容。作者仅通过使用就解决了他们的问题,transport_maps这对我来说似乎不是一个选择。
请注意,我还收到一条警告,称local_recipient_maps …