Haproxy

HaProxy 解析器是否有任何預設名稱伺服器?

  • February 19, 2019

我使用 HaProxy 將流量轉發到具有 dns 名稱而不是網路地址的後端伺服器:

backend default-backend
   server external somedomain.com:80

問題是存在無法解決的情況。在這種情況下,HaProxy 說:

伺服器預設後端/外部正在關閉以進行維護(DNS NX 狀態)。剩下 0 個活動伺服器和 0 個備用伺服器。0 個會話處於活動狀態,0 個已重新排隊,0 個仍在隊列中。後端預設後端沒有可用的伺服器!

我希望 HaProxy 再次檢查 DNS 解析,並在目標 DNS 名稱再次可解析時開始轉發流量。問題是我必須聲明resolvers部分和至少一個nameserver可以解決這樣的地址的部分:

resolvers rslvr
   nameserver dns0 8.8.8.8:53

如果我不想聲明任何解析器怎麼辦?我只想讓 HaProxy 在啟動時檢查 DNS 解析。是否可以?

如果我不使用解析器,後端將停止工作並且不會檢查此域是否再次可用。當我沒有任何nameserverinresolvers部分時,也會發生同樣的事情。

有什麼方法可以省略顯式nameserver聲明,或者使用 HaProxy 在啟動時使用的一些預設解析器?

haproxy 1.9 版為解析器部分引入了一個新參數,無需手動列出名稱伺服器。

parse-resolv-conf

有關更多資訊,請參閱他們的文件,但本質上這允許您替換

resolvers mydns
 nameserver dns1 10.0.0.1:53
 nameserver dns2 10.0.0.2:53
 hold valid           10s

resolvers mydns
 parse-resolv-conf
 hold valid           10s

假設您的 resolv.conf (當您沒有解析器部分時由 haproxy 讀取)配置了 10.0.0.1:53 和 10.0.0.2:53 。

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