Ubuntu 可扩展 nginx mongodb mongdb memcached 服务器配置

Ubuntu 可扩展 nginx mongodb mongdb memcached 服务器配置

在过去的两个月中,我一直在使用以下技术构建 PHP Web 应用程序:

  • PHP 5.3.4
  • MongoDB
  • MySQL的

我刚刚获得了运行 Ubuntu 10.4 LTS x64 的专用服务器,其硬件如下:

  • 100Mbit 网络速度
  • 120GB 固态硬盘
  • 16GB 内存 @ 1600 MHZ
  • AMD FX 6100 6 核 CPU @ 每核 1400 MHZ(总共 3600 MHz)
  • Linux 内核 2.6.33(支持 SSD 修剪)
  • Ubuntu 10.4 LTS x64

Web 应用程序的静态内容(未压缩、未缩小)总计 200kb。PHP Web 应用程序需要可扩展性,它在开始时可能会获得大量流量。

现在我有几个问题:

  • 我应该在 DDOS 保护方面进行哪些配置,我没有竞争对手,该项目是地下的和未知的,那么我应该考虑什么?什么对我有帮助,因为周围有很多东西,例如使用 Nginx mod 或使用 Iptables?我该如何配置这些?
  • 我如何计算带宽以及服务器可以处理多少流量?

答案1

防范 DDOS 可能很困难,因为您的 ISP 大部分时间都会耗尽资源(状态防火墙或带宽),并会破坏您的 IP 块。

如果您预计会遭受 DDOS 攻击,请选择能够提供 DDOS 防护并知道如何处理高流量负载的 ISP,向他们询问示例和他们已建立的可以提供帮助的系统。关闭您的服务并不是解决办法。

准备好使用 iptables 或您自己的上游防火墙来阻止攻击性 ddos​​ 机器的网络块或事实上的 ddos​​ 网络块。

如果只有少数 IP 使用了超过 90% 的资源,请阻止它们。

开发检测滥用客户端的方法(访问某些脚本或页面、奇怪的请求、无序的页面请求等并阻止它们)。

考虑使用入站/出站 qos 来公平地控制客户端的出站带宽。

考虑将数据库、应用程序逻辑和网络服务拆分到不同的硬件上。

考虑使用带有一些牛肉缓存节点的负载平衡器来吸收小型攻击者。但要注意与攻击者进行资源战争并不是最好的主意,他们会赢!:-(

考虑在应用程序和数据库之间添加一个缓存层,这样可以减轻数据库服务器的重复请求负载

如果 ddos​​ 针对的是静态内容,而不是需要数据库资源的 Web 脚本,请考虑使用 CDN(cloud flare)之类的东西,它可以向互联网的其余部分隐藏您的实际 IP 地址,并有助于在地理上分配负载。您可以更快地向用户提供内容,并且作为副作用,您会获得一些 ddos​​ 保护。

如果您不需要 UDP,请让您的 ISP 在其边界阻止流量。如果您只需要端口 80 和 443,请让您的 ISP 在其网络许可方阻止这些端口。如果您的 ISP 不知道什么是 UDP 或端口,请获取一个新的... :-)。

将您的 DNS 托管在单独的基础设施上,并委托一些能够处理 DDoS 的大型机构。如果您必须自己托管 DNS,请将其放置在单独的基础设施和不同的网络上。

如果您使用 SSL,请确保您可以处理 SSL 握手的 CPU 负载。SSL 加速器价格昂贵。也许可以开发一个系统,只有付费客户或经过注册的认证客户才能通过 SSL 连接。端口 80 连接也是如此,请确保您的用户在访问应用程序之前已注册。可以阻止对您的应用程序的深度 DDoS 攻击。

无论如何,听起来很有趣。你在做什么?

答案2

评论和其他答案完全正确,但我还建议将 Varnish 放在前面作为静态内容(和一些动态内容)的缓存以及反向代理。 NGINX 也可以做到这一点,但 Varnish 在这两个方面更胜一筹。

这基本上描述了我以前公司的基础设施,我们在那里为 PHP 和 Rails 应用程序运行该设置。

相关内容