Ubuntu

HTTP 請求在其他工作的 VLAN 設置中掛起

  • January 13, 2019

我有 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. 我的日誌中沒有錯誤或任何內容。知道這可能是什麼原因嗎?

根據 VLAN 實施,您可能需要降低 MTU。

嘗試將介面的 MTU 降低到 1400,如下所示:

ifconfig ens6 mtu 1400

引用自:https://serverfault.com/questions/947113