Amazon-Web-Services

AWS 網路負載均衡器後面的 Zabbix 代理偶爾超時

  • August 21, 2019

我在 AWS 中的架構如下:

有 2 個相同的 zabbix 代理(基於 zabbix/zabbix-agent:centos-4.0.11),每個代理在不同的 EC2 實例上執行。Zabbix 伺服器在第三個實例上執行(也使用 4.0 版本與 docker 化),它們都在同一個 VPC 中。

這個想法是有一個網路負載均衡器,它監聽兩個代理執行的埠 (10050),並在目標組上註冊上述 2 個實例。然後,這個 NLB 的 DNS 將作為介面提供給 Zabbix 主機配置。目標是讓多個 zabbix 主機針對同一個 NLB,並根據流量負載將它們的請求路由到不同的代理。每個主機中都有一個 zabbix 代理項,它呼叫在兩個 zabbix 代理 conf 文件中的每一個中定義的 UserParameter(python 腳本)。

我的問題如下:zabbix_get(以及根據主機conf中設置的間隔自動進行的等效呼叫)偶爾超時。有一次我得到了成功的回應

{“響應”:“成功”,“資訊”:“已處理:4;失敗:0;總計:4;花費的秒數:0.000106”}

(使用的 python 腳本非常快,只需要 1 秒),其他時候我會得到如下響應:

zabbix_get

$$ 4515 $$: 執行操作超時。

這種情況一個接一個地發生。所以一個成功,下一個超時,然後下一個成功,依此類推。

我曾嘗試測試與 telnet 的連接,並且它一直有效。我什至嘗試使用一個簡單的 tcp echo 容器,它也一直執行良好。

任何關於可能出錯的想法將不勝感激:)

編輯:只是想注意,這種行為不僅發生在我自定義的 UserParameter 定義的腳本中,還發生在內置代理呼叫中,例如agent.versionoragent.pingnet.tcp.port[<serverIp>, 10051]

EDIT2:在tcpdump src <serverIp>代理實例內部執行時,似乎發生了類似的流量,響應成功且超時

所以顯然我需要為我的內部 nlb 啟用跨 AZ 負載平衡。這就是為什麼它每隔一個請求就會超時,因為我的所有實例都在一個可用區域中。

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