HTTP 请求在原本可以正常运行的 VLAN 设置中挂起

HTTP 请求在原本可以正常运行的 VLAN 设置中挂起

我有 2 台 kvm 虚拟化服务器。每台服务器都有一个面向互联网的接口ens3和一个ens6用于主机之间 VLAN 的接口。我运行的是 Ubuntu 18.04。

我已经通过 配置了接口netplan

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: yes
    ens6:
      dhcp4: no
      addresses: [10.0.0.10/24]

另一台机器有10.0.0.20/24

一台机器运行多个服务,另一台机器运行 Prometheus。我node_exporter在两台机器上都进行了设置,并监听了私有网络的 IP 地址。我可以从一台机器 ping 到另一台机器,也可以通过它们之间进行连接ssh。看来连接总体上是可行的。

node_exporter我甚至可以从第二台机器卷曲

curl http://10.0.0.10:9100 -v
* Rebuilt URL to: http://10.0.0.10:9100/
*   Trying 10.0.0.10...
* TCP_NODELAY set
* Connected to 10.0.0.10 (10.0.0.10) port 9100 (#0)
> GET / HTTP/1.1
> Host: 10.0.0.10:9100
> User-Agent: curl/7.58.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 31 Dec 2018 09:00:42 GMT
< Content-Length: 150
< Content-Type: text/html; charset=utf-8
< 
<html>
            <head><title>Node Exporter</title></head>
            <body>
            <h1>Node Exporter</h1>
            <p><a href="/metrics">Metrics</a></p>
            </body>
* Connection #0 to host 10.0.0.10 left intact

现在,问题出现在实际尝试提取指标时:

curl http://10.0.0.10:9100/metrics -v
*   Trying 10.0.0.10...
* TCP_NODELAY set
* Connected to 10.0.0.10 (10.0.0.10) port 9100 (#0)
> GET /metrics HTTP/1.1
> Host: 10.0.0.10:9100
> User-Agent: curl/7.58.0
> Accept: */*
> 
^C

连接就挂起了。

curl当从另一台机器执行相同的命令时,它会按预期工作。 我也尝试将绑定node_exporter0.0.0.0。 这也有效,我可以通过服务器的公共 IP 地址获取指标。

我很困惑,为什么调用http://10.0.0.10:9100有效,但调用 无效http://10.0.0.10:9100/metrics。我的日志中没有任何错误或任何内容。知道这是什么原因吗?

答案1

根据 VLAN 的实现,您可能需要降低 MTU。

尝试将接口的 MTU 降低到 1400,如下所示:

ifconfig ens6 mtu 1400

相关内容