Linux
如何提高啟動 PHP+MySQL 應用程序的可用性?
昨天,Rackspace DFW 數據中心宕機了幾個小時,這讓我考慮採取延遲行動來改善我的伺服器結構。到目前為止,我一直在使用單個 CentOS 實例來處理我的 PHP+MySQL 應用程序的基本 LAMP 設置。所以昨天我的申請連續三個多小時都被關閉了,這太糟糕了。
我想了想:
- 至少有兩個實例處理跨至少兩個數據中心(機架空間或非機架空間)的應用程序。
- 至少有兩個 MySQL 主/從配置實例來託管數據,分佈在至少兩個數據中心。
- 在應用程序實例前面放置一個負載均衡器,以避免處理 DNS 傳播,並且能夠隨意添加或刪除應用程序實例。
所以我的問題是:
- 以上三項措施聽起來如何?還有什麼可以做的?
- 在不停機的情況下實施它們的最佳方法是什麼?
- 如何處理程式碼部署
- 您可以推薦任何書籍/白皮書/等來幫助我嗎?
- 獎勵:怎麼做?:P
底線
@HTTP500 是對的:可擴展性是一項不平凡的任務。即使一切都基於 EC2 LoadBalancer & co 等基礎設施工具,您仍然需要一個專家小組來操作它。
LAMP 網路託管的高可用性
假設您想確保您可以非常快速地擴展 X 個網站展示次數。但是,為了幫助您,您確實需要有關您的應用程序的更多資訊。我仍然建議查看Amazee、fortrabbit等團隊提出的解決方案。
為了給你一些關於***“入門”***的想法,這裡有一個圖表(由Amazee提供):
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 希望這能讓您更深入地了解如何實現您的目標。