橫向擴展Wordpress的最佳方式
大小:0.2 MB 人氣: 2017-10-11 需要積分:1
我在一家托管公司工作,我們總是為客戶推薦解決方案。最痛苦的事情就是內容的上傳,這些內容或者得放在集中的地方,或者需要一個管理節點將所有新文件推送到伺服器上。
我一般采用的解決方案就是下面這樣:
負載均衡器1x 裝有lsyncd,inotify和rsync的主服務器(Apache, mod_php),并通過這些應用將增刪/修改的文件發送到從屬服務器上。1x 從屬服務器(Apache, mod_php),搭載有Apache proxypass,負責將POST請求發送給主服務器,以確保新上傳的文件是通過主服務器添加的,然后再分別同步到從屬服務器上。我們公司使用Percona和Redis服務器,分別負責提供數據庫與緩存服務。
我的問題是:
Wordpress的最佳方案怎么設計?你們用什么工具進行會話?Redis/Memcached怎樣在多臺服務器上執行文件復制?性能方面有什么問題嗎?你們用的哪種數據庫,為什么?
回復1:Zm3tta:
我們托管了大約2000個WordPress實例,目前正在進行架構升級,以獲得可擴展性與安全性的提升。應用服務器的CPU利用率是主要的瓶頸,我們希望能在需要時,快速在資源池中部署新的應用服務器。
我們使用Nginx Web服務器來處理靜態內容請求、所有vhost路由、Redis緩存以及php請求的負載均衡。通過Nginx的iphash設置定向到多臺應用服務器上,從而可以為Redis緩存設置最小規則,并以相對透明的方式來處理會話。
針對文件復制的問題:利用NFS4將各網站的doc-root安裝到應用服務器上,這樣無論哪個節點的內容有修改,都能立即發現。我們使用PHP-FPM數據池監聽多臺應用服務器,從而使得擴展應用服務器層非常簡單與快速,可以按需求向多臺或幾臺服務器執行資源請求的分發。并在最后設有獨立的數據庫服務器,針對未能緩存的內容請求作出回應。
雖然彼此的架構差別很大,不過至少可以做些了解。
提問者回復:
問題在于……NFS仍是一個單點故障,如果不用GlusterFS之類的東西,怎么解決這個問題?
回復2:csmicfool
我們有個大型的WPMU網絡(3000多個網站),使用NFS掛載上傳目錄,無需擔心用rsync同步的問題,也無需設定“管理”或主/從服務器,所有虛擬器地位相同,從而使得按需擴展更合理。這種方式比我們原本的預期更為有效。
在NFS服務器上,我們使用rsync將上傳的內容增量復制到另一個(用s3fs)裝有S3 bucket的文件夾中,因此存有離線留存和冗余副本。切記:不要在web服務器上使用s3fs來處理目錄。
想要節省開支,可以在管理頁面強制使用SSL,并且只開啟節點上的SSL,然后通過rsync或類似的方式來執行從管理到其他網頁的分發。
提問者回復:
我們有很多客戶想要尋求更廉價的解決方案,因此我認為強制使用SSL的方案非常棒!
回復3:springer70
這里分享一則Joomla網站托管實例,事實上在wordpress上,原理是相同的。
我們使用Elastic Beanstalk托管到亞馬遜上,根據需求和流量執行向上/向下的擴展都很簡單。一開始網站流量很低,公司進行大規模宣傳之后,流量猛增。因此使用彈性架構就非常有用。
我們有一個負載均衡器,將流量引導到可用的前端服務器池中。在這些服務器上設有應用作為zip文件的容器,在需要新服務器時,只要執行部署,zip文件就會解壓并部署到新服務器上。這就代表著(你提到的)文件上傳很棘手。我們使用獨立的云存儲來管理媒體和上傳(亞馬遜s3),并使用插件將用戶的上傳內容導入s3存儲中,而不是存在本地文件系統中。(有趣的是:媒體的這種通用存儲對于開發/staging/qa/生產環境來說尤其有用,因為它們全都使用同一個存儲文件系統)。
我們還有個中央單一數據庫,不保留實時冗余副本;一份故障轉移備份,最多5分鐘就能恢復生產環境。
這個解決方案不算便宜,我們有:
S3存儲的成本;EC2前端服務器(每次至少2臺,保留冗余副本);2臺數據庫服務器;負載均衡器;開發與staging服務器,staging復制了生產環境;
我們在數據庫中管理會話,因此如有用戶從一個前端服務器換到另一個,會話就會被保留。還有備選方案,就是使用“粘滯會話(sticky sessions)”——強制用戶一直停留在同一臺前端服務器上。
我們的復制計劃非常簡單,因為沒有真正復制任何東西。前端服務器將zip文件保存在應用中,因此也不包含“真正的”數據。所有數據都在S3或數據庫中。
結果性能很不錯,我們的前端服務器速度很快,由于存在一些前端緩存,數據庫(mysql)很少使用(相對而言)。我們使用的所有服務器都“很小”或“超級小”,因此無需性能特別強大。抱歉寫了一大堆東西。
回復4:applextrent
我們在WPdocker.com是使用SaaS平臺和云服務器管理器作為通用的容器管理方案。使用補丁管理來解決更新的問題。關于容器可以查看這里獲取更多詳情。
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
橫向擴展Wordpress的最佳方式下載
相關電子資料下載
- 如何三步實現高性能 WordPress 網站的部署 219
- 使用Docker安裝WordPress教程 416
- 恒訊科技介紹:虛擬主機托管WordPress的常見問答 155
- 如何破解wordpress 272
- Wasm container 如何運行服務WordPress的php.wasm鏡像 385
- WordPress正在測試對SQLite的支持 196
- 使用podman-compose部署wordpress的示例 2000
- WordPress 一鍵式全站優化插件:WPJAM-Basic 1291
- vps搭建wordpress網站的3個步驟介紹 2741
- 如何在樹莓派上托管WordPress網站 1598