2011-08-24 92 views
5

我正在EC2上重新啓動一個站點(每天約5mm +訪問次數),並且對如何在不同數據中心部署節點感到困惑。我最基本的設置是在Varnish服務器後面的兩個節點。使用EC2可用區域的最佳做法是什麼?

我應該在不同的可用區域有兩個Varnish實例,每個實例都有與共享的RDS數據庫交談的WWW節點?每個Varnish實例可以通過亞馬遜的負載均衡器進行負載平衡。

喜歡的東西:

1負載平衡器談話:

  • 光油在弗吉尼亞州,其中會談到自己的美東-X節點
  • 光油在加利福尼亞州,其中會談到自己的美西x個節點

在多個數據中心部署是一個新的概念對我來說,所以任何和所有幫助表示讚賞!謝謝!

回答

7

我們廣泛使用amazon EC2來做負載均衡和容錯。儘管我們還沒有廣泛使用亞馬遜提供的LoadBalancers,但我們擁有自己的負載均衡器(在亞馬遜外部運行)。亞馬遜承諾,LoadBalancers永遠不會停機,它們在內部容錯,但我沒有足夠好的測試。

一般而言,我們在每個可用區域託管兩個實例。一個充當真實服務器的鏡像服務器。如果其中一臺服務器發生故障,我們會將客戶發送給另一臺服務器。但最近亞馬遜已經顯示出單一可用區域經常下降的模式。

因此,我認爲明智的技術就是像你提到的那樣在可用區域設置服務器。我們使用postgres,我們可以在實例中複製數據庫中的內容。在9.0中,二進制複製對雙向複製非常有用。通過這種方式,兩臺服務器都可以在啓動時承擔負載,但當可用區域停機時,所有用戶都將被髮送到一臺服務器。由於通用數據庫可用,因此用戶去哪裏並不重要。只要他們會遇到輕微的緩慢,如果他們去了錯誤的服務器。

使用此方法,您可以對網站進行串聯更新。更新一個確保它運行正常,然後更新下一個。所以即使服務器升級失敗,整個網站也總是出現問題。

+0

當一個可用區域出現故障時,您如何將客戶發送到其他服務器? – Carson

+0

我們的自定義負載均衡器將每分鐘從服務器加載檢查。我們使用子域名來指導客戶。所以如果一個集羣關閉,我們會向他們發送一個不同的子網址。亞馬遜負載均衡器充當抽象層並在內部將http請求路由到服務器。它通過從服務器請求網頁來每10秒檢查一次可用性。你可以放一個blank.html。如果實例關閉,那麼亞馬遜將不會向該服務器發送任何請求。 – arunmur

相關問題