你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

虚拟机上的 WordPress

Azure Front Door
Azure Key Vault
Azure 负载均衡器
Azure 虚拟网络
Azure 虚拟机规模集

本文介绍在 Azure 上托管大型存储密集型 WordPress 安装的解决方案。 该解决方案可最大程度地提高可伸缩性和安全性。 关键解决方案组件包括 Azure Front DoorAzure 虚拟机Azure NetApp 文件

体系结构

在 Azure 虚拟机规模集上部署 WordPress 的体系结构图。Azure NetApp 文件可存储静态内容。

下载此体系结构的 Visio 文件

注意

可以通过实现不特定于任何具体 WordPress 托管方法的提示和建议来扩展此解决方案。 有关部署 WordPress 安装的常规提示,请参阅 Azure 上的 WordPress

数据流

  • 用户可通过已启用 Azure Web 应用程序防火墙的 Azure Front Door 访问前端网站。
  • Azure Front Door 使用 Azure 负载均衡器的内部实例作为源。 Azure Front Door 可检索未缓存的任何数据。
  • 内部负载均衡器将请求分发到 Azure 虚拟机规模集。 规模集由 Ubuntu Web 服务器组成。
  • 密钥和其他机密存储在 Azure 密钥保管库中。
  • WordPress 应用程序将使用专用终结点访问 Azure Database for MySQL 的灵活服务器实例。 WordPress 应用程序将从数据库中检索动态信息。
  • 所有静态内容托管在 Azure NetApp 文件中,并通过 NFS 协议装载到虚拟机 (VM)。

组件

  • Azure Front Door 是一种新式云内容分发网络。 作为分布式服务器网络,Azure Front Door 可有效地向用户提供 Web 内容。 通过将缓存的内容存储在靠近最终用户的接入点位置中的边缘服务器上,内容分发网络可以在最大程度上减少延迟。
  • 借助 Azure 虚拟网络,已部署的资源可以彼此通信、与 Internet 通信、与本地网络通信。 虚拟网络提供了隔离和分段。 它们还可以筛选和路由流量,并可以在不同位置之间建立连接。 在此解决方案中,两个网络将通过虚拟网络对等互连进行连接。
  • Azure DDoS 防护提供了增强的 DDoS 缓解功能。 将这些功能与应用程序设计最佳做法相结合时,它们将有助于抵御 DDoS 攻击。 应在外围虚拟网络上启用 DDoS 防护。
  • 网络安全组可使用一组安全规则,以根据源或目标 IP 地址、端口及协议允许或拒绝入站或出站网络流量。 在此方案的子网中,网络安全组规则会限制应用程序组件之间的流量。
  • 负载均衡器会根据规则和运行状况探测结果来分配入站流量。 负载均衡器提供了低延迟和高吞吐量。 通过将流量分散到多个服务器,负载均衡器可提高传输控制协议 (TCP) 和用户数据报协议 (UDP) 应用程序的可伸缩性。 在此方案中,负载均衡器将流量从内容分发网络分发到前端 Web 服务器。
  • 使用虚拟机规模集,可以创建并管理一组完全相同且负载均衡的 VM。 可以根据需求或定义的计划自动增减 VM 实例的数目。 此方案使用两个单独的规模集。 一个用于提供内容的前端 Web 服务器,一个面向用于创建新内容的前端 Web 服务器。
  • Azure NetApp 文件提供了完全托管的性能密集型和对延迟敏感的存储解决方案。 在此解决方案中,Azure NetApp 文件将托管所有 WordPress 内容,以便所有 Pod 有权访问数据。
  • Azure Cache for Redis 是一种内存中数据存储。 可以使用 Azure Cache for Redis 在此解决方案中托管键值缓存。 该缓存在所有 Pod 之间共享,并用于 WordPress 性能优化插件。
  • 密钥保管库可存储密码、证书和密钥并控制对它们的访问。
  • Azure Database for MySQL - 灵活服务器是基于开放源代码 MySQL 数据库引擎的关系数据库服务。 灵活服务器部署选项是一种完全托管的服务,可提供对数据库管理功能和配置设置的精细控制和灵活性。 在此方案中,Azure Database for MySQL 负责存储 WordPress 数据。

备选方法

可以使用 VM 中的自承载 Pod 作为缓存,而不是使用 Azure Cache for Redis 托管服务。

方案详细信息

此示例方案适用于 WordPress 的大型存储密集型安装。 此部署模型可以缩放以满足站点流量高峰。

可能的用例

  • 使用 WordPress 作为内容管理系统的高流量博客
  • 使用 WordPress 的企业或电子商务网站

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

可靠性

可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性支柱概述

在部署此解决方案时,请考虑以下建议:

  • 该解决方案使用虚拟机规模集和负载均衡器来分配入口流量。 即使 VM 发生故障,此方法也能提供高可用性。
  • 此解决方案支持多个区域、数据复制和自动缩放。 网络组件可将流量分发到 VM。 使用运行状况探测,以便仅将流量分发到运行正常的 VM。
  • 所有网络组件位于 Azure Front Door 前面。 使用此方法,在发生导致流量中断并影响最终用户访问的问题时,网络资源和应用程序可以复原。
  • Azure Front Door 是一项全球服务,支持部署在另一个区域中的虚拟机规模集。
  • 在使用 Azure Front Door 缓存所有响应时,可以获得少许可用性优势。 具体而言,如果源未响应,你仍然可以访问内容。 但缓存不提供完整的可用性解决方案。
  • 要提高可用性,请在配对区域之间复制 Azure NetApp 文件存储。 有关详细信息,请参阅使用 Azure NetApp 文件进行跨区域复制
  • 要提高 Azure Database for MySQL 的可用性,请按照可满足需求的高可用性选项进行操作。

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

在部署此解决方案时,请考虑以下建议:

  • 使用 Azure Front Door 上的 Web 应用程序防火墙来帮助保护流入前端应用程序层的虚拟网络流量。 有关详细信息,请参阅 Azure Front Door 上的 Web 应用程序防火墙
  • 不允许出站 Internet 流量从数据库层流出。
  • 不允许对专用存储进行公共访问。
  • 禁用对资源的公共访问(如果适用)。 将专用终结点用于Azure Database for MySQL、Azure Cache for Redis 和密钥保管库。

有关 WordPress 安全性的详细信息,请参阅常规 WordPress 安全性和性能提示Azure 安全性文档

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述

在部署此解决方案时,请查看以下成本注意事项:

  • 流量预期(GB/月)。 流量是影响成本最大的因素。 你接收的流量的量决定了所需的 VM 数以及出站数据传输的价格。 流量的量还与内容分发网络提供的数据量直接相关,其中出站数据传输成本更低。
  • 托管数据量。 请务必将托管的数据量考虑在内,因为 Azure NetApp 文件定价是基于预留容量的。 要优化成本,请保留数据所需的最小容量。
  • 写入百分比。 考虑你向网站写入多少新数据,以及存储这些数据的成本。 对于多区域部署,写入网站的新数据量与跨区域镜像的数据量相关联。
  • 静态内容与动态内容。 监视数据库存储性能和容量,以确定价格较低的 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 培训模块: