Azure Kubernetes Service 上的 WordPress

Azure Cache for Redis
Azure Front Door
Azure Kubernetes Service (AKS)
Azure Load Balancer
Azure NetApp Files

本文說明在 Azure 上裝載大量 WordPress 儲存體密集安裝的容器解決方案。 此解決方案可最大化延展性和安全性。 主要元件包括 Azure Front Door Azure Kubernetes Service (AKS) Azure NetApp Files

架構

Architecture diagram of an AKS WordPress deployment. Azure NetApp Files stores static content. Private endpoints provide access to other services.

下載此架構的 Visio 檔案

注意

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

資料流程

  • 使用者透過已啟用 Azure Web 應用程式防火牆的 Azure Front Door 存取前端網站。
  • Azure Front Door 會使用 Azure Load Balancer 的內部實例作為來源。 內部負載平衡器是 AKS 的隱藏元件。 Azure Front Door 會擷取任何未快取的資料。
  • 內部負載平衡器會將輸入流量分散到 AKS 內的 Pod。
  • Azure 金鑰保存庫會儲存秘密,例如私密金鑰,也就是 X.509 憑證。
  • WordPress 應用程式會使用私人端點來存取適用於 MySQL 的 Azure 資料庫的彈性伺服器實例。 WordPress 應用程式會從這個受控資料庫服務擷取動態資訊。
  • 所有靜態內容都裝載在 Azure NetApp Files 中。 解決方案會使用 Astra Trident Container 儲存體 Interface (CSI) 驅動程式搭配 NFS 通訊協定。

元件

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

替代項目

  • 您可以使用 AKS 叢集中的自我裝載 Pod 作為快取,而不是使用 Azure Cache for Redis 受控服務。
  • 您可以使用像是 Rook-Ceph 儲存體的自我裝載解決方案,而不是使用 Azure NetApp Files 之類的 受控儲存體 解決方案。 如需詳細資訊,請參閱如何在 Azure Kubernetes Service 上使用 Rook Ceph。

案例詳細資料

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

潛在的使用案例

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

考量

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

可靠性

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

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

  • 解決方案會使用 AKS 中的 Pod 和負載平衡器來分散輸入流量。 即使 Pod 失敗,此方法仍可提供高可用性。
  • 此解決方案支援多個區域、資料複寫和自動調整。 元件會將流量散發至 Pod。 系統會使用健康情況探查,讓流量只散發到狀況良好的 Pod。
  • 所有網路元件都由 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、金鑰保存庫和 Azure Container Registry。 如需詳細資訊,請參閱 Azure Private Link

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

成本最佳化

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

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

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

效能效益

效能效率是工作負載調整的能力,以符合使用者以有效率的方式滿足其需求。 如需詳細資訊,請參閱 效能效率要素概觀

此案例會使用 AKS 中的 Pod 來裝載前端。 使用自動調整功能,執行前端應用層的 Pod 數目可以自動調整以回應客戶需求。 它們也可以根據定義的排程進行調整。 如需詳細資訊,請參閱 Azure Kubernetes Service (AKS) 中應用程式的調整選項。

重要

為了獲得最佳效能,必須掛接使用 NFS 通訊協定 4.1 版的永續性磁片區。 下列 YAML 範例示範如何為此目的設定 PersistentVolume 物件。 請注意欄位的值 mountOptions

kind: PersistentVolume
...
    accessModes:
    - ReadWriteMany
    mountOptions:
    - vers=4.1
    nfs:
      server: xx.xx.xx.xx

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主體作者:

其他投稿人:

  • 阿德里安·卡利內斯庫 |資深雲端解決方案架構師

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

下一步

產品檔:

Microsoft 訓練模組: