小型网站的高可用性选项?

小型网站的高可用性选项?

我运营的网站每天大约有 1500 名访客。虽然访问量不大,但我还是想确保这个网站能够正常运行。目前,我们的网站托管在共享托管服务提供商处,由于 DDoS 攻击,该网站已经瘫痪过一两次。

我有什么办法可以确保网站正常运行?我们愿意为更多服务器或负载平衡解决方案支付额外费用,但我们的预算并不多。

这是典型的 LAMP 设置。

将代码复制到多个服务器很容易,但我更关心数据库复制——我从未处理过这个问题,我交谈过的人也没有处理过这个问题。设置真的那么难吗?

另外,我该如何分配流量?我是否应该将所有流量都通过一个平衡器,该平衡器会 ping 每个服务器,以确保它们在转发之前处于活动状态?我想这会增加一点延迟,并且仍然会给我们带来单点故障。

另一方面,我们可以使用基于 DNS 的解决方案,但这也有反对者。

答案1

如果主要是针对 DDoS 防护https://www.cloudflare.com/也许值得一试。

Cloudflare 基本上是一个分布式/基于云的 CDN/反向代理,它还自动提供 DDoS 保护。这对于静态内容来说非常完美,但对于动态内容来说则更具挑战性。基本功能免费,高级功能需要付费订阅。

答案2

我会考虑 AWS。您可以创建自动扩展组,并使用 RDS 解决数据库问题。

MySQL 复制并不难自行设置:

http://dev.mysql.com/doc/refman/5.6/en/replication.html

任何现代负载均衡器都会进行健康检查。例如,访问您的应用,如果正常则返回 200。如果 LB 得到不正常的结果,它可以从池中移除该节点。

DNS 负载平衡通常不是一个好主意,因为您对健康检查的控制较少,并且存在缓存问题。

这些是基础知识。

答案3

您有多种有效的选择。

您可以采用一种架构,其中请求由负载均衡器在前端处理(例如,在单独的服务器或其中一个服务器中使用 nginx,或者使用托管公司提供的负载均衡器),平衡器将这些请求重定向到两个或多个包含所有堆栈(代码加数据库)的“相同”服务器,您还需要复制数据库和可能的文件(例如,如果用户上传文件)。

基于 DNS 的平衡也是一个选择,有些人喜欢它(易于设置,不需要单独的负载平衡器),有些人不喜欢(DNS 切换需要一点时间,并且带有缓存信息的客户端浏览器不会立即更新等)。

复制 Mysql 并不难,如果您不需要即时数据库更新,您可以在不同的提供商和数据中心托管第二台服务器,如果您正在寻找高可用性,则建议这样做。

另外正如建议的那样,如果您主要拥有静态内容,那么您将从 cloudflare 或其他 CDN 中受益匪浅。

相关内容