答案1
答案2
除非我真的讀錯了問題,否則我想說的是,對於託管 Web 應用程序,您的處理方式是錯誤的。
我建議擁有多個節點(虛擬或實體)並使用以下命令管理它們的配置木偶。
您的節點可以是一整架 1U 伺服器,也可以是一堆正在運作的功能強大的 3U 多處理器伺服器鍵盤虛擬機然後是您選擇的作業系統作為虛擬化來賓。
給定 4 個伺服器,您可以如下設定它們:
- 伺服器 1:負載平衡器 + HTTP 節點(運行 Varnish 和 Apache)
- 伺服器 2:負載平衡器 + HTTP 節點(運行 Varnish 和 Apache)
- 伺服器3:HTTP Node + DB Master(運行Apache和MySQL)
- 伺服器4:HTTP節點+DB Slave(運行Apache和MySQL)
如果有第五台伺服器運行服務,例如用於PXE 引導環境的nagios、munin、tftpd、用於kickstart/preseed 檔案的小型HTTP 伺服器、DHCPd、可能是透過Rocketport 或類似的序列控制台,那將是有利的。
使用 Puppet 部署自己的系統(而不是使用單一映像)的巨大優勢在於資源可以有效地進行自我記錄。與僅將圖像放到伺服器上相比,它更清晰,也更少黑盒子。另外,它使圖像的更新和更改變得更加簡單。
答案3
我不確定我是否回答了您實際要問的問題,但如果您正在尋找一種獲取虛擬機器並對其進行鏡像的方法,您可以使用我所知道的任何免費虛擬化工具(VMware Server 、ESXi、 kvm 等)
- 讓您的虛擬機器包含您所需的一切
- 複製虛擬機
- 更改副本(IP 位址和主機名稱)
- 啟動兩個虛擬機
- 插入負載平衡器(硬體或軟體,無關緊要)
- ..我想不出第六步:)
答案4
儘管 SSI 聽起來很令人興奮,但它們不太可能發揮最佳性能。
由於您的主要目標是網頁應用程序,因此您可以(應該!)使用當前的最佳實踐。通常,這些開始於:
- 快取負載平衡器作為前端(squid、varnish、nginx)
- 幾個用於 Web 應用程式的 HTTP 伺服器(通常是 apache,可能是 nginx+FastCGI,等等)
- 資料庫
如果你做得好,你的第一個瓶頸將是資料庫,此時,你應該:
- 在您的網路應用程式中添加緩存,以將資料庫命中率降至最低。 (現代框架(RoR、Django),包括對 memcached 的大力支持)
- 將某些工作從資料庫轉移到更專業的應用程式。第一個候選者是任務佇列(rabbitMQ 或類似的)和鍵/值儲存(tokyo Cabinet、resis、mongoDB,很多)
- 分發資料庫。如果讀取次數多/寫入次數少,請嘗試主/從複製(在 MySQL 上很容易),但如果這是您的情況,memcached 應該已經吸收了大部分負載。還可以嘗試分片。
如果你的業務發展過度(你是 Facebook 嗎?),你將不得不重新思考你的整個結構,就像 Google 那樣(他們幾乎所有的事情都是「離線」使用 MapReduce 完成的)。