Failover

如何避免伺服器重啟期間超時

  • January 18, 2015

我遇到了一個使用 DNS 循環進行故障轉移的站點的問題。

有兩個網路伺服器。當我在一個盒子上關閉 apache 時,一切都很好。當瀏覽器嘗試在 apache 關閉的情況下訪問網路伺服器時,它會被拒絕連接並自動嘗試另一個連接。

但是,重新啟動時,我遇到了問題。當我重新啟動伺服器時,瀏覽器並沒有拒絕連接,而是等待超時,導致站點非常慢,直到伺服器恢復正常。

有沒有辦法設置網路(或 CentOS),以便在重新啟動期間,IP 繼續拒絕而不是花費很長時間超時?

作為一種臨時解決方法(僅在遺憾沒有負載平衡器的情況下),您可以在伺服器重新啟動時在其下一躍點(交換機、路由器、防火牆)之一進行適當的配置,例如,

  1. 停止阿帕奇
  2. 使下一跳響應明確的“不可到達”消息
  3. 重新啟動伺服器
  4. 撤消所做的更改第 2 步

具體來說,步驟 2 可能包括以下內容之一

  • 將 Web 伺服器 ip 作為輔助 IP 地址添加到其介面之一(前提是其上沒有執行 Web 伺服器)
  • 或創建一個靜態 arp 條目(即,ip 到 mac 的轉換),它指的是一個 runnnng 主機,它不執行一個 web 伺服器
  • 或使單個 ip 不可路由
  • 或添加防火牆規則以拒絕(不丟棄!)埠 80 流量到相關 IP
  • 或修改您的網路伺服器的現有 SNAT 條目以引用正在執行但不是網路伺服器的主機
  • 或將具有相同 MAC 地址的虛擬主機附加到同一區域網路

可能還存在其他變體。當然有一點很重要:**不要朝自己的腳開槍!**例如,

  • 引入此類錯誤配置時,您可能會不小心破壞其他東西
  • 您可能會忘記撤消更改
  • 您的伺服器可能無法正確關閉現有連接
  • 如果由於這種方法而無法立即看到 Internet,則重新啟動的伺服器可能會不高興(它可能非常想檢查更新、許可證、時間或……)

另外,我自己沒有測試任何這些方法,我只是想出了它們並認為它們應該可以工作。

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