這是一個相當普遍的問題。假設我有三個ec2框:兩個應用框和一個將nginx作爲反向代理的框,將請求委託給兩個應用框(我的數據庫託管在其他地方)。現在,這兩款應用程序可以吸收其中的失敗,但第三個應用程序代表了單點故障。如何配置我的設置,以便反向代理服務器停止運行時,該站點仍然可用?Amazon aws上的故障轉移代理?
我正在看keepalived和HAproxy。對我而言,這件事並不明顯,對於初學者耳朵的任何幫助表示讚賞。
這是一個相當普遍的問題。假設我有三個ec2框:兩個應用框和一個將nginx作爲反向代理的框,將請求委託給兩個應用框(我的數據庫託管在其他地方)。現在,這兩款應用程序可以吸收其中的失敗,但第三個應用程序代表了單點故障。如何配置我的設置,以便反向代理服務器停止運行時,該站點仍然可用?Amazon aws上的故障轉移代理?
我正在看keepalived和HAproxy。對我而言,這件事並不明顯,對於初學者耳朵的任何幫助表示讚賞。
如果您的nginx沒有比代理HTTP請求多得多,請查看Amazon Elastic Load Balancer。您可以設置兩個(或更多)應用程序框,留下一些備用的應用程序框(爲了始終保持兩個或更多,如果需要),設置運行狀況檢查,在平衡器上使用SSL終止,使用粘性會話等等。
雖然有很多人希望看到爲ELB設置彈性IP地址的能力,還有一些人提出了不錯的理由,爲什麼它不需要。
我的建議是,你看看ELB documentation,因爲它看起來完全符合你的需求。我也建議閱讀這個interesting post關於這個問題的一個很好的討論。
我也被建議看看Nagios和Heartbeat。謝謝! – 2012-02-09 19:40:01
是的。我的團隊調查了Nagios,它很棒。但用於監控,而不是用於故障轉移。您應該結合冗餘(通過向負載平衡器和/或集羣添加多個節點)**並使用像Nagios這樣的監視工具。 – Viccari 2012-02-09 21:37:58
我認爲如果您是初學者,那麼您的最佳解決方案就是Amazon的Elastic Load Balancer(ELB)。它們自動擴展並實現高可用性的平衡器集羣。因此,使用ELB服務可以減輕您評論的故障點。同樣重要的是要記住,ELB比AWS中的兩個實例便宜。當然,啓動和維護起來更容易。
您看不到多個ELB,因爲它是一項服務,所以您不必關心可用性。
其他重要的一點是,AWS彈性IPS沒有分配給您的操作系統實例的NIC接口,因此在經典基礎架構中使用虛擬IPS也很困難。
經過這個解釋,如果你仍然希望Nginx作爲AWS中的代理反向,因爲你的理由,我認爲你可以實現一個具有由Nginx實例組成的圖層的自動縮放組。但是如果你不擅長自動縮放技術,那可能非常棘手。
一個可能相關的問題是,我可以在一個彈性IP地址後面有幾個EC2實例嗎?這樣,我可以在那裏放置兩臺帶有反向代理的機器,如果一臺機器出現故障,另一臺機器繼續運行? – 2012-02-07 01:14:55