Tomcat Web 應用程序的硬體推薦
我們像這樣在我們的測試系統(CentOS)上執行一個 Web 應用程序 - 一個 Web 伺服器(apache),兩個執行相同 Web 應用程序的 tomcat 實例,一個 PostgreSQL 數據庫 - 每個都在四個虛擬伺服器上。該應用程序是
$$ meant to be $$被成千上萬的使用者使用,並且還需要一些敏感使用者數據的儲存。我們計劃將其轉移到生產系統中,並就為該功能選擇合適的硬體尋求一些建議。我非常願意接受任何具有成本效益且最適合此環境的建議(VM 或專用或混合)。我想我正在尋找的是
instant failover
. 任何人都可以建議我執行這些服務可能需要的規格和任何額外的設備嗎? 我想到了幾件事:對於數據庫伺服器,我正在考慮一個專用伺服器 - RAID 1 鏡像用於系統磁碟,RAID10 用於數據庫(本地儲存)。還是我們應該使用 FC 進行一些共享儲存?用於 tomcat 的最快磁碟(這是瓶頸 - 不是嗎?)、用於 Web 伺服器故障轉移的循環 DNS 和用於網路 I/O 頻寬的每盒專用 GbE。但我很想看看其他人如何設計他們的系統(CPU、RAM、額外的硬體、程序等)並牢記這一要求。歡迎任何意見並非常感謝。提前致謝。乾杯!!
在 httpd/tomcat 方面,我們這樣做的方式是:
在單個伺服器上,在不同埠上執行一個 httpd 和兩個 tomcat 實例。我們使用 mod_jk 通過 ajp 與 tomcat 通信,並配置 mod_jk 以在兩者之間進行負載平衡(或者在某些情況下,主動/被動故障轉移並讓 mod_jk 確定何時進行故障轉移)。
我們執行上述的多個伺服器實例,前面有一個實際的硬體負載均衡器,它與所有 httpds 對話。為了處理硬體負載均衡器的單點故障,我們將整個設置複製到不同的數據中心,然後使用 DNS 遊戲使用 Dynect 對人們進行地理負載均衡(它還能夠將負載轉移到其他數據中心)失敗期間)。
我們在每台伺服器上執行兩個 tomcat 實例的部分原因是,我們可以更輕鬆地將軟體更新應用到應用程序,而不會影響我們處理峰值負載的能力。是的,這使我們的 RAM 需求增加了 2 倍,但這比必須將系統數量增加一倍才能按照我們的操作方式執行要便宜得多。
在您的設置中,您正在處理單個 tomcat 伺服器死亡的情況,但不是前端 httpd。您最好建構一對使用 heartbeat/corosync/pacemaker 處理前端故障轉移的前端 httpd 伺服器。它不會是“即時故障轉移”,但它會接近它。大多數人可以忍受幾秒鐘的時間,因為事情發生了變化。