虛擬機器上的 WordPress

Azure Front Door
Azure 金鑰保存庫
Azure Load Balancer
Azure 虛擬網路
Azure 虛擬機器擴展集

本文說明在 Azure 上裝載大型、需要大量儲存體的 WordPress 安裝的解決方案。 解決方案可最大化延展性和安全性。 主要解決方案元件包括Azure Front DoorAzure 虛擬機器Azure NetApp Files

架構

Azure 虛擬機器擴展集上 WordPress 部署的架構圖。Azure NetApp Files會儲存靜態內容。

下載這個架構的 Visio 檔案

注意

您可以實作不是任何特定 WordPress 主控方法專屬的秘訣和建議來擴充此解決方案。 如需部署 WordPress 安裝的一般秘訣,請參閱 Azure 上的 WordPress

資料流程

  • 使用者可透過已啟用 Azure Web 應用程式防火牆的 Azure Front Door 存取前端網站。
  • Azure Front Door 使用Azure Load Balancer的內部實例作為來源。 Azure Front Door 會擷取任何未快取的資料。
  • 內部負載平衡器會將要求分散至 Azure 虛擬機器擴展集。 擴展集是由 Ubuntu 網頁伺服器所組成。
  • 金鑰和其他秘密會儲存在 Azure 金鑰保存庫中。
  • WordPress 應用程式會使用私人端點來存取適用於 MySQL 的 Azure 資料庫的彈性伺服器實例。 WordPress 應用程式會從資料庫擷取動態資訊。
  • 所有靜態內容都會裝載于 Azure NetApp Files中,並掛接至透過 NFS 通訊協定) 的虛擬機器 (VM。

單元

  • Azure Front Door 是現代化雲端內容傳遞網路。 作為伺服器的分散式網路,Azure Front Door 有效率地將 Web 內容傳遞給使用者。 內容傳遞網路會將快取的內容儲存在終端使用者附近的目前位置,以將快取的內容儲存在邊緣伺服器上,以將延遲降到最低。
  • Azure 虛擬網路提供一種方式,讓已部署的資源彼此通訊、網際網路和內部部署網路。 虛擬網路提供隔離和分割。 它們也會篩選和路由傳送流量,並讓您能夠在各種位置之間建立連線。 在此解決方案中,這兩個網路是透過虛擬網路對等互連來連線。
  • Azure DDoS 保護 提供增強的 DDoS 風險降低功能。 當您結合這些功能與應用程式設計最佳做法時,它們有助於防禦 DDoS 攻擊。 您應該在周邊虛擬網路上啟用 DDoS 保護。
  • 網路安全性群組 會使用安全性規則清單,根據來源或目的地 IP 位址、埠和通訊協定來允許或拒絕輸入和輸出網路流量。 在此案例的子網中,網路安全性群組規則會限制應用程式元件之間的流量流動。
  • Load Balancer會根據規則和健康情況探查結果散發輸入流量。 負載平衡器提供低延遲和高輸送量。 藉由將流量分散到多部伺服器,負載平衡器會增加傳輸控制通訊協定 (TCP) 和使用者資料包通訊協定 (UDP) 應用程式的延展性。 在此案例中,負載平衡器會將流量從內容傳遞網路散發到前端 Web 服務器。
  • 虛擬機器擴展集提供一種方式來建立和管理一組相同的負載平衡 VM。 VM 執行個體的數目可以自動增加或減少,以因應需求或已定義的排程。 在此案例中會使用兩個不同的擴展集。 其中一個適用于提供內容的前端網頁伺服器,另一部適用于用來建立新內容的前端網頁伺服器。
  • Azure NetApp Files提供完全受控的效能密集和延遲敏感性儲存體解決方案。 在此解決方案中,Azure NetApp Files裝載所有 WordPress 內容,讓所有 Pod 都能存取資料。
  • Azure Cache for Redis是記憶體內部資料存放區。 您可以使用Azure Cache for Redis在此解決方案中裝載機碼/值快取。 該快取會在所有 Pod 之間共用,並用於 WordPress 效能優化外掛程式。
  • 金鑰保存庫儲存及控制密碼、憑證和金鑰的存取。
  • 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器是以開放原始碼 MySQL 資料庫引擎為基礎的關係資料庫服務。 彈性伺服器部署選項是完全受控的服務,可針對資料庫管理功能和組態設定提供細微的控制與彈性。 在此案例中,適用於 MySQL 的 Azure 資料庫儲存 WordPress 資料。

替代方案

您可以使用 VM 內的自我裝載 Pod 作為快取,而不是使用Azure Cache for Redis受控服務。

實例詳細資料

此範例案例適用于大量儲存的 WordPress 安裝。 此部署模型可以調整以符合網站流量尖峰。

潛在使用案例

  • 使用 WordPress 作為其內容管理系統的高流量部落格
  • 使用 WordPress 的商務或電子商務網站

考量

這些考慮會實作 Azure Well-Architected Framework 的要素,這是一組可用來改善工作負載品質的指引原則。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework

可靠性

可靠性可確保您的應用程式符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性要素概觀

當您部署此解決方案時,請考慮下列建議:

  • 解決方案會使用 虛擬機器擴展集 和負載平衡器來散發輸入流量。 此方法提供高可用性,即使 VM 失敗也一樣。
  • 此解決方案支援多個區域、資料複寫和自動調整。 網路元件會將流量分散至 VM。 系統會使用健康情況探查,讓流量只會散發到狀況良好的 VM。
  • 所有網路元件都由 Azure Front Door 前端。 這種方法可讓網路資源和應用程式復原到會中斷流量並影響使用者存取的問題。
  • Azure Front Door 是一項全域服務,可支援部署在另一個區域中的虛擬機器擴展集。
  • 當您使用 Azure Front Door 快取所有回應時,您會獲得較小的可用性權益。 具體而言,當來源沒有回應時,您仍然可以存取內容。 但快取不提供完整的可用性解決方案。
  • 若要增加可用性,請在配對的區域之間複寫Azure NetApp Files儲存體。 如需詳細資訊,請參閱跨區域複寫與Azure NetApp Files
  • 若要增加適用於 MySQL 的 Azure 資料庫可用性,請遵循符合您需求的高可用性選項

安全性

安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性要素的概觀

當您部署此解決方案時,請考慮下列建議:

  • 使用 Azure Front Door 上的Web 應用程式防火牆,協助保護流入前端應用層的虛擬網路流量。 如需詳細資訊,請參閱Azure Front Door 上的 Azure Web 應用程式防火牆
  • 不允許從資料庫層流出輸出網際網路流量。
  • 不允許公用存取私人儲存體。
  • 在適用的情況下停用資源的公用存取。 使用私人端點進行適用於 MySQL 的 Azure 資料庫、Azure Cache for Redis和金鑰保存庫。

如需 WordPress 安全性的詳細資訊,請參閱 一般 WordPress 安全性和效能秘訣Azure 安全性檔案

成本最佳化

成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化要素的概觀

部署此解決方案時,請檢閱下列成本考慮:

  • ) (GB/月的流量預期 。 您的流量是對您的成本產生最大影響的因素。 您收到的流量量會決定您需要的 VM 數目,以及輸出資料傳輸的價格。 流量也會直接與內容傳遞網路所提供的資料量相互關聯,其中輸出資料傳輸成本較低。
  • 裝載的資料量。 請務必考慮您裝載的資料量,因為Azure NetApp Files定價是以保留容量為基礎。 若要將成本優化,請保留資料所需的最小容量。
  • 寫入百分比。 請考慮您寫入網站的新資料,以及儲存它的成本。 針對多區域部署,您寫入網站的新資料量會與跨區域鏡像的資料量相互關聯。
  • 靜態與動態內容。 監視資料庫儲存體效能和容量,以判斷較便宜的 SKU 是否可支援您的網站。 資料庫會儲存動態內容,而內容傳遞網路會快取靜態內容。
  • VM 優化。 若要優化 VM 成本,請遵循 VM 的一般秘訣。 如需詳細資訊,請參閱 成本優化秘訣

效能效率

效能效率可讓您的工作負載進行調整,以有效率的方式符合使用者對其放置的需求。 如需詳細資訊,請參閱效能效率要件概觀

此案例會針對每個區域中的兩個前端 Web 服務器叢集使用虛擬機器擴展集。 使用擴展集時,執行前端應用層的 VM 實例數目可以自動調整以回應客戶需求。 VM 也可以根據定義的排程進行調整。 如需詳細資訊,請參閱使用 虛擬機器擴展集 自動調整的概觀

重要

為了獲得最佳效能,請務必透過 NFS 通訊協定 4.1 版掛接儲存體。 下列適用于 Ubuntu 的 bash 範例會示範如何設定 vers 選項:

# Install an NFS driver and create a directory.
$ apt-get install -y nfs-common && mkdir -p /var/www/html
# Add auto-mount on startup. (Replace the following code with
# instructions from the Azure portal, but change the vers value to 4.1.)
$ echo '<netapp_private_ip>:/<volume_name> /var/www/html nfs rw,hard,rsize=262144,wsize=262144,sec=sys,vers=4.1,tcp 0 0' >> /etc/fstab
# Mount the storage.
$ mount -a

參與者

本文由 Microsoft 維護。 最初是由下列參與者所撰寫。

主體作者:

其他參與者:

  • Adrian Calinescu |資深雲端解決方案架構設計師

若要查看非公用LinkedIn設定檔,請登入 LinkedIn。

下一步

產品文件:

Microsoft 訓練模組: