無狀態網路層 - WordPress on AWS 的最佳實務

無狀態網路層

若要在自動擴展組態中利用多個 Web 伺服器,Web 層必須是無狀態。無狀態應用程式是不需要以前互動的知識且不會存放工作階段資訊的應用程式。在 WordPress 的情況下,這表示所有最終使用者都會收到相同的回應,而無論哪個 Web 伺服器處理他們的請求。無狀態應用程式可以水平擴展,因為任何請求都可以由任何可用的運算資源 (即 Web 伺服器執行個體) 提供服務。如果不再需要該容量,則可以安全地終止任何個別資源 (在執行的任務已耗盡之後)。這些資源不需要意識到其對等的存在,其需要的只是一種將工作負載分配給他們的方法。

談到使用者工作階段資料儲存時,WordPress 核心是完全無狀態,因為它依賴於存放在用戶端的 Web 瀏覽器中的 cookie。除非您已安裝任何依賴於原生 PHP 工作階段的自訂程式碼 (例如 WordPress 外掛程式),否則工作階段儲存不是問題。

但是,WordPress 最初的設計是要在單一伺服器上執行。因此,它會將一些資料存放在伺服器的本機檔案系統上。在多伺服器組態中執行 WordPress 時,這會產生問題,因為 Web 伺服器之間存在不一致。例如,如果使用者上傳新映像,則該映像僅會存放在其中一台伺服器上。

這便說明為什麼我們需要改善預設的 WordPress 執行組態,以將重要資料移至共用儲存。最佳實務架構會將資料庫作為 Web 伺服器外部的個別層,並利用共用儲存來存放使用者上傳、佈景主題和外掛程式。