我正在考虑在数据中心为我们的网络项目设置一个网络服务器。我们每天将有最多 100 万名独立访客。
我们主要会做一些像渲染页面这样的轻松工作,“最难”的任务是在用户请求时为他们生成单页 PDF 报告,并在用户购买时从他们的信用卡中扣除费用。
哪一个方法更聪明、更稳定:
包含 Web 服务器(apache、php 等)和数据库(mssql)的单个服务器
两台服务器,一台用于 Web 服务器(apache、php 等),另一台用于数据库服务器(mssql)。
您还可以推荐您自己的理想设置的想法:)
附加问题:购买我们自己的服务器并购买主机托管或直接从数据中心购买专用服务器是否更明智?
谢谢
答案1
我不知道您的业务逻辑对 CPU 的依赖程度如何,您对增长的希望/计划是什么。但我首先会考虑可扩展性,即使现在有点过度。
您可以在一两台强大的服务器上将所有机器作为虚拟机运行,然后添加更多硬件 - 这显然效率较低,但可以更容易地处理未来的增长。
我的看法是:
- 具有故障转移机制的反向代理对,因此一个是主动的,一个是被动的。你可以从阿帕奇2或者nginx,稍后转向硬件解决方案。服务器之间的故障转移可以通过心跳。
- 代理内的负载平衡机制在实际应用服务器之间分配流量,并处理任何
- 一开始有两个应用服务器
- 要么是粘性会话 [ 因此客户端一旦连接到 appserv #n 就可以从中获取所有查询服务器 ] 要么是单独的会话服务器 [ 因为其他一切都具有高可用性 ]
- 可以对 mysql 数据库进行分区 [同样 - 很大程度上取决于您的要求和数据集,如果您无法想象拥有超过 5-10GB 的数据 - 可能就没有必要这样做]。每个实例都使用 drbd 复制或主从或主主复制进行保护。
如果您选择虚拟化方法,您可以从租用的机器开始,然后再弄清楚要做什么......虚拟机是相当便携的。
所有这些可能都有些过度,但我认为至少前端的反向代理 + 虚拟化是值得实现的,而分区也是值得考虑的。
答案2
我会投票支持两台独立的服务器。我建议阅读这篇文章的答案,其中讨论了两台机器还是一台机器更好: 关于小型操作单点故障的问题
有很多很好的论据可以说明为什么将应用程序分散在多台服务器上是更好的选择。