从Web服务器分离MySQL服务器

你好,ServerFault社区,

我通常是一个StackOverflow lurker / contributor,但是我一直在玩最近的服务器云服务,并且会很感激你的想法。

我构build了web应用程序(通常是小到中等大小的低stream量),目前我有3个在Debian上运行的虚拟机,通过Apache提供networking文件,用MySQL提供数据。 每个VPS运行10到30个站点; 一些自定义应用程序,一些Wordpress和一些静态的HTML网站。

随着我正在玩的新的云服务(目前处于testing阶段,所以它是免费的!)我有能力开始/停止和扩展服务器,我喜欢。 我名单上的第一个实验是用Nginx取代Apache,到目前为止这样做还不错。 然而,我开始怀疑是否有一个优化的服务器通过Nginx服务文件和存储媒体文件,然后是另一个优化的服务器通过MySQL运行和服务数据会有什么好处。

我不知道是否可以做很多事情来优化每个服务器的Web或数据库托pipe,或者是否有任何其他分离服务的好处? 对于这个问题以及我可能错过的其他选项,我将不胜感激。

旁注:使用云服务,我可以select完全自定义服务器,包括内存,磁盘空间和磁盘速度(SATA,SAS,SSD)。

通常

  • 数据库需要尽可能多(如果不是全部)在内存和CPU中的数据,硬盘的速度并不重要。
  • 由于文件是从磁盘提供的,因此HTTPD需要HDD I / O。

如果你可以指定任何types的服务器,那么我看不出为什么你不能创build高规格的服务器,同时在同一台机器上运行数据库和HTTPD,但是我们认为这些是主要的优点和缺点:

优点

  • 加载一个不会影响其他
  • 可根据需要独立调整
  • 内核的调整可以专门用于手头的任务
  • 需求特定机器的规格(DB = RAM,HTTPD = SSD)
  • 更容易configuration/pipe理(我的意见)
  • 今后更容易转移到CDN [?]
  • 孤立的机器意味着更less的安全漏洞可能被破坏

缺点

  • MySQL TCP / IP与Unix SOCKs(DB延迟)
  • 两倍的失败点

不确定哪里成本适合(这是更昂贵的)。

虽然不是特定于拆分服务器,但可能有用的一件事是将Web内容拆分为静态和dynamic内容,以减less处理静态内容的开销(如果您只是发送静态文件,则不需要加载PHP)。

个人注意事项我们在数据中心(租用一些刀片)和本地运行VMware。 我更喜欢保持DB / HTTPD分开。 我们在数据中心有单独的DB / HTTPD虚拟机,但不在本地。 我更喜欢前者,虽然我没有统计数据中心的虚拟机运行在更低的规格上,但是我们的组合HTTPD /数据库虚拟机本地执行的性能问题较less。