Ubuntu可伸缩nginx mongodb mongdb memcached服务器configuration

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

  • PHP 5.3.4
  • MongoDB的
  • MySQL的

我刚刚得到了我的专用服务器运行Ubuntu 10.4 LTS x64与以下硬件:

  • 100Mbit的networking速度
  • 120GB SSD
  • 16GB RAM @ 1600 MHZ
  • AMD FX 6100 6核CPU @ 1400 MHZ每个内核(总共3600 MHz)
  • Linux Kernel 2.6.33(支持SSD修剪)
  • Ubuntu 10.4 LTS x64

Web应用程序的静态内容是(未压缩的,未压缩的)总共200kb。 PHP Web应用程序需要可扩展性,它可以在开始时获得大量的stream量。

现在我有几个问题:

  • 我应该configuration什么DDOS保护,我没有竞争对手,这个项目是地下和未知的,所以我应该考虑什么? 有什么可以帮助我,因为有很多东西像使用Nginx模块或使用iptables? 我怎样才能configuration这些?
  • 如何计算带宽,以及服务器可以处理多lessstream量?

防止DDOS可能是困难的,因为ISP的资源耗尽(有状态的防火墙或带宽)的一大部分时间,并将沉没你的IP块。

如果你期待DDOS,然后select一个可以提供DDOS预防和知道如何处理高stream量负载的ISP,请他们的例子和系统,他们已经到位,可以帮助。 把你关掉不是一个答案。

准备好用iptables或者你自己的上游防火墙来阻止积极的ddos机器的networking数据块或实际的ddosnetworking数据块。

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

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

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

考虑将数据库,应用程序逻辑和Web服务分解到不同的硬件上。

考虑一个带有一些牛肉caching节点的负载均衡器来吸收小型攻击者。 但是要小心进入与攻击者的资源战争并不是最好的主意,他们会赢的! 🙁

考虑在你的应用程序和数据库之间添加一个caching层,这应该保持你的数据库服务器的重载请求

如果ddos的目标是静态内容,而不是需要数据库资源的网页脚本,那么可以考虑一些类似于CDN(云闪)的技术,它可以将实际的IP地址隐藏在互联网的其他地方,并有助于在地理上分配负载。 你得到更快的内容交付给你的用户,作为副作用,你得到一些ddos保护。

如果你不需要UDP,让你的ISP阻止边界的stream量。 如果你只需要端口80和443,那么让你的ISP在他们的networking许可证上阻止这个。 如果您的ISP不知道什么UDP或端口得到一个新的… :-)。

在不同的基础设施上托pipe你的dns,有一个可以处理ddos的大的dns。 如果您必须自己托pipeDNS,请将其放在单独的基础架构和不同的networking上。

如果您使用SSL,请确保您可以处理SSL握手的CPU命中。 SSL加速器非常昂贵。 也许开发一个系统,只有付费客户或注册authentication客户可以通过SSL连接。 端口80连接也一样,请确保您的用户在访问应用程序之前进行了注册。 可以阻止深入的ddos攻击到您的应用程序。

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

评论和其他答案是完全合理的,但我也build议将Varnish作为静态内容(以及一些dynamic)的caching,以及反向代理。 NGINX也是这样做的,但是这两个区域的清漆比较好。

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