架構 nginx 以實現冗餘
這可能是一個愚蠢的問題,但在Google上搜尋了一段時間後,我找不到答案,或者只是不知道如何問它。
我有一個在名為“myserver1”的伺服器上執行的網路應用程序。我已經使用相同的 Web 應用程序實例啟動了“myserver2”,並在兩個盒子上的兩個數據庫之間設置了複製。現在,我想使用 Nginx 來做一些負載平衡,如果另一台伺服器崩潰,則讓一台伺服器接管。
大多數 nginx 文件都是圍繞這樣一個簡單的場景編寫的,但它似乎表明您將 nginx 伺服器放在 Web 伺服器的前面。這似乎是另一個單點故障。你如何讓 nginx 本身變得多餘?你可以在兩個 Web 伺服器上執行 nginx 嗎?如果是這樣,您將 myapp.mydomain.com 的 DNS 條目指向哪裡?
編輯:我想我應該補充一點,這是針對使用者群相對較小的內部應用程序。我主要擔心的是,如果我們失去伺服器或與其中一個數據中心的連接,我們的內部使用者仍然可以使用它。如果不引入另一個單點故障,我只是看不到如何在 nginx 上做到這一點。
在 nginx 中進行負載平衡的唯一方法是擁有一個前端(反向代理)主機負載平衡後端伺服器。
這種設計背後的想法/假設是負載將僅發生在後端,並且您的單個入口點將始終能夠處理它應該處理的任何數量的流量,因為它只是重定向並且從不處理任何本身。
您所說的實際上是故障轉移,而不是負載平衡。您擔心的是單個入口點的失敗。
正如@coding_hero 解釋的那樣,這與 nginx 無關,它需要在底層(作業系統/網路)處理。
可以在以下頁面上閱讀一種方法(雖然舊範例談論 Debian oldstable,但可能需要更新命令): http: //linuxmanage.com/fast-failover-configuration-with-drbd-and- heartbeat-on-debian-squeeze.html。Heartbeat 是一項眾所周知的技術,它允許多個相同的伺服器相互監控,選擇一個主伺服器並在需要時故障轉移到從伺服器。
您甚至可以通過將流量重新路由(或者可能即時重新配置路由器以重新路由?)將流量重新路由到目前選定的主機來完成相同的工作。