目前,我们使用在英国托管的专用 Linux 机器来托管网站。但管理它们却是一场噩梦,备份、大量负载、停机等等……
我正在研究由 RackSpace 开发的 OpenStack。是否可以使用我们在服务器上托管的云平台来托管网站?
我知道云平台可以让你扩展基础设施,这正是我们所需要的。但是我们如何用它来运行 MySQL 和 Apache?对于大多数 Wordpress 网站来说?
编辑:这些网站只是使用标准 LAMP 堆栈的普通 Wordpress 网站。
答案1
大多数“云”提供商都为您提供 IaaS。这意味着您将获得一组可以随意管理的虚拟机。简而言之,这些只是 VPS 服务,并增加了 API 功能,以便在需要时创建新的服务器。有时您可以将该 API 与一些简单的指标(CPU 负载、流量等)绑定在一起,从而使其变得更容易一些。
但这不是魔法。它不会让您的网站在没有您付出任何努力的情况下变得可扩展。您需要做的是设计您的系统,以便您可以添加更多(类似)机器来分配负载,并且它可以承受其中一些机器的丢失。
第一步是:
“无共享” Web 应用程序:确保所有页面尽可能无状态。HTTP 请求之间的任何持久性都必须非本地存储。最初,这意味着所有“关键”内容都必须存储在数据库中,而所有非关键内容则存储在诸如 memcached 之类的东西中。
负载均衡器、容错分发器。由托管商提供,或由您自己的 (HAProxy、varnish、NginX) 在您的应用程序前面运行(确保也使其冗余)。
复制数据库。例如,MySQL 的主/从模式和一些故障转移机制,如果主服务器发生故障,它会将“浮动”IP 号码迁移到从服务器。或者主/主模式,也可以以延迟为代价为您提供一些额外的吞吐量。Amazon 还为您提供了与 MySQL 兼容的数据库,其中包含您可能需要的所有冗余。或者转到完全不同的东西,如 riak、cassandra... 事实上,这是最困难的部分;但仅仅在两个更大的实例上复制 MySQL 就大有裨益;特别是如果您在缓存层上很聪明的话。
答案2
听起来你正在寻找的是平台即服务或 PaaS。使用 PaaS,提供商会负责所有操作细节。部署应用程序非常简单,只需向提供商提供源代码存储库的 URL 即可。
一些支持 PHP 的
这里是这三种产品的比较,由各自的开发人员撰写。
答案3
您可以在云中做很多事情。我将详细介绍我的提供商支持的内容。我使用 Linode (http://www.linode.com/) 在全球拥有六个数据中心(其中一个位于伦敦)。它们非常出色,价格合理,功能齐全,支持工单处理速度非常快。“Linode”是您购买的虚拟机(他们的术语)。
Linode 的基于云的基础设施支持动态配置和取消配置“Linode”。这意味着如果您需要一台机器来使用一小时/一天/一周/一个月/一年,您只需支付您使用的费用。
Linode 支持所谓的 StackScripts,它允许您自动执行配置服务器的过程。我不知道细节,但据我所知,您可以指定操作系统、磁盘布局、配置文件中的交换等。
Linode 还具有用于计费、配置等的广泛 API。
Linode还以NodeBalancer的形式支持负载平衡。
这四个功能链接在一起可以让您进行如下设置:
假设您有一个用于 Web 的 Linode“东西”,例如 Apache/PHP 和一个用于 MySQL 的 Linode。如果您正确设置了所有内容,则可以使用脚本来监控机器上的资源使用情况,并自动购买、配置、启动并将其添加到 MySQL 集群或 NodeBalancer。这意味着,如果您的流量激增(例如您使用 slashdotted),您将自动扩展到您需要的任何规模,以满足流量/处理/带宽/任何要求。您将有一个来回复制的 MySQL 集群,使许多 MySQL 服务器保持同步,然后您将拥有一堆平衡 PHP 负载的 Web 服务器。
Linode 还在 IP 故障转移、带宽池、IPv6 等方面提供了相当多的冗余。我还想说,我与 Linode 没有任何关系,只是一个满意的客户。