Linux

如何提高啟動 PHP+MySQL 應用程序的可用性?

  • April 14, 2013

昨天,Rackspace DFW 數據中心宕機了幾個小時,這讓我考慮採取延遲行動來改善我的伺服器結構。到目前為止,我一直在使用單個 CentOS 實例來處理我的 PHP+MySQL 應用程序的基本 LAMP 設置。所以昨天我的申請連續三個多小時都被關閉了,這太糟糕了。

我想了想:

  • 至少有兩個實例處理跨至少兩個數據中心(機架空間或非機架空間)的應用程序。
  • 至少有兩個 MySQL 主/從配置實例來託管數據,分佈在至少兩個數據中心。
  • 在應用程序實例前面放置一個負載均衡器,以避免處理 DNS 傳播,並且能夠隨意添加或刪除應用程序實例。

所以我的問題是:

  • 以上三項措施聽起來如何?還有什麼可以做的?
  • 在不停機的情況下實施它們的最佳方法是什麼?
  • 如何處理程式碼部署
  • 您可以推薦任何書籍/白皮書/等來幫助我嗎?
  • 獎勵:怎麼做?:P

底線

@HTTP500 是對的:可擴展性是一項不平凡的任務。即使一切都基於 EC2 LoadBalancer & co 等基礎設施工具,您仍然需要一個專家小組來操作它。

LAMP 網路託管的高可用性

假設您想確保您可以非常快速地擴展 X 個網站展示次數。但是,為了幫助您,您確實需要有關您的應用程序的更多資訊。我仍然建議查看Amazeefortrabbit等團隊提出的解決方案。

為了給你一些關於***“入門”***的想法,這裡有一個圖表(由Amazee提供):

LAMP HA 方案

Scheme 很好地說明了 HTTP 請求是如何被服務的(從負載均衡器開始)。這樣的解決方案需要很多好的計劃,這將幫助你決定你是否真的要這樣做。

要實現原始的乒乓球和重生 - 您將需要心跳故障轉移。我建議嘗試http://www.keepalived.org/。對於您的 LAMP,您可以擁有以下類別的 VM 實例:

  • 一個負載平衡器(就像在圖表上一樣 - 我推薦ngnix,由俄羅斯聰明人編寫)
  • Apache(PHP 應用程序網路伺服器)
  • Memcache 或其他類型的記憶體伺服器(如果知道 memcache,您的應用程序可以更智能)
  • 類似 NFS 的文件系統,但不是 NFS!GlusterFS 是一個很好的候選者。
  • Mysql從主數據庫集群

如您所見,您將不得不自動化監控,即執行類似基於keepalive 的腳本的操作,以確保一切都處於活動狀態。該腳本可以檢查每個實例的毫秒“可用性分數”。

附言

繼續幻燈片http://www.slideshare.net/AmazeeAG/php-high-availability-high-performance 希望這能讓您更深入地了解如何實現您的目標。

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