Azure Kubernetes 服务上的 WordPress
本文介绍在 Azure 上托管 WordPress 大型存储密集型安装的容器解决方案。 该解决方案可最大程度地提高可伸缩性和安全性。 关键组件包括 Azure Front Door、Azure Kubernetes 服务 (AKS) 和 Azure NetApp 文件。
体系结构
下载此体系结构的 Visio 文件。
注意
可以通过实现适用于任何 WordPress 托管方法的提示和建议来扩展此解决方案。 有关如何部署 WordPress 安装的常规提示,请参阅 Azure 上的 WordPress。
数据流
以下数据流对应于上图:
用户可通过已启用 Azure Web 应用程序防火墙的 Azure Front Door 访问前端网站。
Azure Front Door 使用 Azure 负载均衡器的内部实例作为源。 内部负载均衡器是 AKS 的隐藏组件。 Azure Front Door 可检索未缓存的任何数据。
内部负载均衡器会将入口流量分配到 AKS 中的 Pod。
Azure Key Vault 存储机密,包括私钥(即 X.509 证书)。
WordPress 应用程序使用专用终结点访问 Azure Database for MySQL 的灵活服务器实例。 WordPress 应用程序会从此托管数据库服务中检索动态信息。
所有静态内容托管在 Azure NetApp 文件中。 该解决方案使用 Astra Trident 容器存储接口 (CSI) 驱动程序和网络文件系统 (NFS) 协议。
组件
AKS 是一种托管的 Kubernetes 服务,可用于部署、管理和缩放容器化应用程序。 在此体系结构中,AKS 托管 WordPress 容器,并提供运行容器化 WordPress 应用程序的业务流程平台,以确保高可用性和可伸缩性。
Azure Redis 缓存 是一种托管的内存中数据存储和缓存服务。 在此体系结构中,Azure Redis 缓存托管所有 Pod 共享的键值缓存。 WordPress 性能优化插件使用缓存来改善响应时间。
Azure Database for MySQL 灵活服务器 是基于开源 MySQL 数据库引擎的托管关系数据库服务。 在此体系结构中,此数据库存储 WordPress 数据。
Azure DDoS 防护 是一种网络安全服务,提供增强的分布式拒绝服务(DDoS)缓解功能。 在此体系结构中,DDoS 防护在与应用程序设计最佳做法相结合并在外围网络上启用时有助于抵御 DDoS 攻击。
Azure Front Door 是一个现代云内容分发网络和全球负载均衡器。 在此体系结构中,Azure Front Door 是 WordPress 部署中的公共入口点。
Azure NetApp 文件 是托管的、性能密集型和延迟敏感的存储解决方案。 在此体系结构中,Azure NetApp 文件托管 WordPress 内容,以便所有 Pod 都可以通过高性能文件存储访问共享数据。
Azure 虚拟网络 是一种网络服务,它使部署的资源能够相互通信、Internet 和本地网络。 在此体系结构中,虚拟网络提供隔离和分段。
Key Vault 是一种云服务,用于存储和控制对机密、证书、密钥和密码的访问。 在此体系结构中,如果 Pod 需要机密,Key Vault 会向 AKS 群集提供机密。
负载均衡器 是一个第 4 层负载均衡器,它根据规则和运行状况探测结果分配入站流量。 在此体系结构中,负载均衡器通过低延迟和高吞吐量将流量从 Azure Front Door 分发到入口控制器 Pod。
网络安全组(NSG) 是使用安全规则根据源或目标 IP 地址、端口和协议允许或拒绝入站或出站网络流量的安全功能。 在此体系结构中,NSG 规则限制子网中应用程序组件之间的流量流。
备选方法
可以使用 AKS 群集中的自承载 Pod 作为缓存,而不是使用 Azure Cache for Redis 托管服务。
可以使用 Rook-Ceph 存储 等自承载解决方案,而不是使用 Azure NetApp 文件等托管存储解决方案。 有关详细信息,请参阅 在 AKS 上使用 Rook Ceph。
可以使用 Azure 容器应用 托管容器化 WordPress 工作负载,而不是使用 AKS。 容器应用是一种托管的无服务器容器服务,适用于更简单或较小的方案。 对于大型、存储密集型且高度可自定义的部署,请使用 AKS。
方案详细信息
此示例方案最适合用于 WordPress 的大型存储密集型安装。 此部署模型可以缩放以满足站点流量高峰。
可能的用例
- 使用 WordPress 作为内容管理系统的高流量博客
- 使用 WordPress 的企业或电子商务网站
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负荷质量的指导原则。 有关详细信息,请参阅 Well-Architected Framework。
可靠性
可靠性有助于确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅可靠性设计评审核对清单。
在部署此解决方案时,请考虑以下建议:
使用 AKS 中的 Pod 和负载均衡器来分配入口流量。 即使 Pod 发生故障,此方法也提供高可用性。
将所有网络组件放在 Azure Front Door 后面。 此方法使网络资源和应用程序能够灵活应对可能会中断流量并影响用户访问的问题。
使用 Azure Front Door 缓存所有响应以获得较小的可用性优势。 具体而言,如果源未响应,你仍然可以访问内容。 但缓存不提供完整的可用性解决方案。
在配对区域之间复制 Azure NetApp 文件存储以提高可用性。 有关详细信息,请参阅了解 Azure NetApp 文件复制。
遵循满足需要提高 Azure Database for MySQL 可用性的 高可用性选项 。
该解决方案支持多个区域、数据复制和自动缩放。 组件会将流量分配到 Pod。 运行状况探测可确保只有正常的 Pod 接收流量。
Azure Front Door 是一项全局服务,支持在另一个区域中部署的虚拟机规模集。
安全性
安全性提供针对故意攻击和滥用宝贵数据和系统的保证。 有关详细信息,请参阅可靠性设计审查检查表。
在部署此解决方案时,请考虑采用以下最佳做法:
使用 Azure Front Door 上的 Web 应用程序防火墙来帮助保护流入前端应用程序层的虚拟网络流量。 有关详细信息,请参阅 Azure Front Door 上的 Web 应用程序防火墙。
不允许出站 Internet 流量从数据库层流出。
不允许对专用存储禁用公共访问,并禁用对资源的公共访问。 将专用终结点用于 Azure Database for MySQL、Azure Cache for Redis、密钥保管库和Azure 容器注册表。 有关详细信息,请参阅 Azure 专用链接。
有关详细信息,请参阅 常规 WordPress 安全性和性能提示 以及 Azure 安全文档。
成本优化
成本优化侧重于减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅成本优化设计评审核对清单。
在部署此解决方案时,请查看以下成本注意事项:
流量预期(GB/月): 流量对成本影响最大。 收到的流量量决定了所需的 AKS 节点数以及出站数据传输的价格。 流量还直接与内容分发网络提供的数据量相关联,其中出站数据传输成本更低。
托管数据量: 考虑托管的数据量,因为 Azure NetApp 文件定价基于预留容量。 若要优化成本,请保留数据所需的最小容量。
写入百分比: 考虑向网站写入的新数据以及存储数据的成本。 对于多区域部署,写入网站的新数据量与跨区域镜像的数据量相关联。
静态内容与动态内容: 监视数据库存储性能和容量,以确定更便宜的 SKU 是否可以支持站点。 数据库可存储动态内容和内容分发网络缓存静态内容。
AKS 群集优化: 遵循 AKS 的一般提示(例如有关虚拟机(VM)大小和 Azure 预留的指南,以优化 AKS 群集成本。 有关详细信息,请参阅 AKS 成本优化。
性能效率
性能效率是指工作负荷能够高效地缩放以满足用户需求。 有关详细信息,请参阅性能效率设计评审核对清单。
此方案使用 AKS 中的 Pod 来托管前端。 自动缩放功能使运行前端应用程序层的 Pod 数量能够自动缩放以满足客户需求。 还可以根据已定义的计划进行缩放。 有关详细信息,请参阅 AKS 中应用程序的缩放选项。
重要
为了获得最佳性能,请装载使用 NFS 协议版本 4.1 的永久性卷。 以下 YAML 示例演示了如何为此目的配置 PersistentVolume 对象。 请注意 mountOptions 字段的值。
kind: PersistentVolume
...
accessModes:
- ReadWriteMany
mountOptions:
- vers=4.1
nfs:
server: xx.xx.xx.xx
作者
Microsoft维护本文。 以下参与者撰写了本文。
主要作者:
- Vaclav Jirovsky | 云解决方案架构师
其他参与者:
- Adrian Calinescu | 高级云解决方案架构师
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
产品文档:
- Azure Front Door 概述
- Web 应用程序防火墙概述
- Azure NetApp 文件概述
- 创建用于 Azure NetApp 文件的 NFS 卷
- 为 AKS 配置 Azure NetApp 文件
- Azure Database for MySQL - 灵活服务器
- 虚拟网络概述
- Key Vault 概述
- 负载均衡器概述
- DDoS 防护概述
Microsoft 培训模块: