云上的多区域 wordpress 部署
Multi region wordpress deployment on cloud
我一直在寻找很多博客和站点来在云平台上部署 Wordpress 网站多区域。
我查看了 GCP App Engine 和 Kubernetes,但没有找到太多。
如何从另一个区域创建数据库连接以及如何管理 WordPress 媒体并跨区域同步它们。我也在寻找网站上的自动缩放功能。
对于数据库,我们可以使用跨区域只读副本,但如何处理媒体数据并在不同区域的所有实例之间同步它们。
要在 AWS 上部署高度可用和可扩展的 wordpress 架构,我建议阅读这份白皮书 https://aws.amazon.com/blogs/architecture/wordpress-best-practices-on-aws/
多区域部署的关键是在两个区域都有一个数据副本。如果您确实考虑拥有两个主数据库,即写入操作可能发生的位置(用 wordpress 的话来说,写入发生在您创作 post 或客户留下评论时)
自 2013 年以来,使用 Amazon RDS 可以拥有 cross-region 只读副本:https://aws.amazon.com/blogs/aws/cross-region-read-replicas-for-amazon-rds-for-mysql/
对于 master-master 设置,请查看 Amazon Aurora 全球数据库(与 MySQL 兼容):https://aws.amazon.com/rds/aurora/global-database/ 但我会认真质疑 为什么 你想先做那个。
[2019 年 7 月 17 日更新]
我刚刚发现 Wordpress 的 bitnami 发行版有一个文档解释了如何将 S3 用于媒体文件:https://docs.bitnami.com/aws/apps/wordpress-pro/configuration/wordpress-aws-s3/
即使有更好的答案,我也会 post 这个答案。此答案提供了有关一种特定设计的附加信息。
我已经在 AWS 和 Google 云上部署了多区域 WordPress。 WordPress 根本不是为此而设计的。除非你有钱和 IT 人才,否则请选择一家提供分布式 WordPress 管理的公司。您将省钱和省心。
在上一个项目中,公司不需要在全球范围内即时 updates/synchronization,但需要可以预测的高流量负载。我们决定在每个地区使用单独的 WordPress 系统。我们编写了每小时 运行 一次的软件来同步系统之间的 WordPress 内容。这涉及同步文件系统 wp-uploads
目录,将静态资产移动到 CDN 后面的云存储,并将内容更改复制到每个 MySQL 数据库。如果存在冲突,则会向管理员发送一封电子邮件以进行手动审核。每天一次软件 运行 比较最新的 post 以验证服务器之间的内容和同步。
每个区域的系统都进行了负载平衡和自动缩放。该数据库单独托管在托管的 MySQL 服务器上。 WordPress 目录托管在 NFS 共享上。我们对静态资产(css、js、图片、下载)使用了云存储+CDN。除了云存储,我们没有在区域之间共享资产。每个区域都是独立的。每个区域始终至少有两台服务器 运行。在预测的峰值负载(营销发布、活动等)期间,我们将根据时区通过 GUI 单击来扩展 up/down 每个组以预热系统。
我一直在寻找很多博客和站点来在云平台上部署 Wordpress 网站多区域。
我查看了 GCP App Engine 和 Kubernetes,但没有找到太多。
如何从另一个区域创建数据库连接以及如何管理 WordPress 媒体并跨区域同步它们。我也在寻找网站上的自动缩放功能。
对于数据库,我们可以使用跨区域只读副本,但如何处理媒体数据并在不同区域的所有实例之间同步它们。
要在 AWS 上部署高度可用和可扩展的 wordpress 架构,我建议阅读这份白皮书 https://aws.amazon.com/blogs/architecture/wordpress-best-practices-on-aws/
多区域部署的关键是在两个区域都有一个数据副本。如果您确实考虑拥有两个主数据库,即写入操作可能发生的位置(用 wordpress 的话来说,写入发生在您创作 post 或客户留下评论时)
自 2013 年以来,使用 Amazon RDS 可以拥有 cross-region 只读副本:https://aws.amazon.com/blogs/aws/cross-region-read-replicas-for-amazon-rds-for-mysql/
对于 master-master 设置,请查看 Amazon Aurora 全球数据库(与 MySQL 兼容):https://aws.amazon.com/rds/aurora/global-database/ 但我会认真质疑 为什么 你想先做那个。
[2019 年 7 月 17 日更新]
我刚刚发现 Wordpress 的 bitnami 发行版有一个文档解释了如何将 S3 用于媒体文件:https://docs.bitnami.com/aws/apps/wordpress-pro/configuration/wordpress-aws-s3/
即使有更好的答案,我也会 post 这个答案。此答案提供了有关一种特定设计的附加信息。
我已经在 AWS 和 Google 云上部署了多区域 WordPress。 WordPress 根本不是为此而设计的。除非你有钱和 IT 人才,否则请选择一家提供分布式 WordPress 管理的公司。您将省钱和省心。
在上一个项目中,公司不需要在全球范围内即时 updates/synchronization,但需要可以预测的高流量负载。我们决定在每个地区使用单独的 WordPress 系统。我们编写了每小时 运行 一次的软件来同步系统之间的 WordPress 内容。这涉及同步文件系统 wp-uploads
目录,将静态资产移动到 CDN 后面的云存储,并将内容更改复制到每个 MySQL 数据库。如果存在冲突,则会向管理员发送一封电子邮件以进行手动审核。每天一次软件 运行 比较最新的 post 以验证服务器之间的内容和同步。
每个区域的系统都进行了负载平衡和自动缩放。该数据库单独托管在托管的 MySQL 服务器上。 WordPress 目录托管在 NFS 共享上。我们对静态资产(css、js、图片、下载)使用了云存储+CDN。除了云存储,我们没有在区域之间共享资产。每个区域都是独立的。每个区域始终至少有两台服务器 运行。在预测的峰值负载(营销发布、活动等)期间,我们将根据时区通过 GUI 单击来扩展 up/down 每个组以预热系统。