1、服务器运行什么应用?
这是首先需要考虑的问题,在这里你要根据服务器的应用类型,也就是用途,来决定服务器 的性能、容量和可靠性需求。我们按照前端服务器+应用程序服务器+数据服务器的常见基础架 构来讨论:
(1)Web前端:正常情况下,我们认为大多数Web前端服务器(Front-end)对服务器的要 求不大,例如静态Web服务器、动态Web服务器、图片服务器等等,因为在现有的技术框架中, 我们有很多方案可以解决前端服务器的性能扩展和可靠性问题,例如LVS、Nginx反向代理、硬 件负载均衡(F5,A10,Radware)等。
(2)应用服务器:由于承担了计算和功能实现,我们需要为基于Web架构的应用程序服务 器(Application Server)选择足够快的服务器,另外应用程序服务器可能需要用大量的内存,尤其 是基于Windows基础架构的Ruby,Python,Java服务器。这一类服务器至少需要使用单路至强 的配置。对于可靠性的问题,如果你的架构中只有一台应用服务器,那肯定需要这台服务器足够 可靠,RAID绝对是不能忽视的选项。但如果有两台或更多的应用服务器,并设计了负载均衡机 制,具有冗余功能,那我们则不必将每台服务器武装到底。
(2)特殊的应用:除了作为Web架构中的应用程序服务器之外,如果你的服务器是用来处 理流媒体视频编码、服务器虚拟化、媒体服务器(Asterisk之类),或者作为游戏服务器(逻 辑、地图、聊天)运行,则同样对CPU和内存需求比较高,我们至少要考虑单路至强的服务器, 其中服务器虚拟化对存储的可靠性的要求都非常高。
(4)公共服务:我们指的是邮件服务器、文件服务器、DNS服务器、域控服务器这类服务 器。通常情况我们会部署两台DNS服务器作为互相备份,域控主服务器也会拥有一台备份服务器 (专用的或非专用的),所以对于可靠性,无需达到苛刻的地步。至于邮件服务器,至少需要具备足够的硬件可靠性和容量大小,这主要是为了对邮件数据负责,因为很多用户没有保存和归档 邮件数据的习惯,当他们重装系统后,总会依赖重新下载服务器上的数据。关于性能问题,需要 评估具体用户数量来最终决定。
(5)数据库:我们最后讨论的应用,也是要求最高,最重要的服务器。无论你使用的是 MySQL、SQLServer还是Oralce,一般情况下,我们认为它需要足够快的CPU,足够大的内 存,足够稳定可靠的硬件。单路至强CPU/4GB内存/Raid1绝对是入门配置。关于准确的配置我 们需要再讨论业务需求后才能作决定。
2、服务器需要支持多少用户访问?
服务器肯定是为了提供某种服务,而使用这些服务的用户同样是我们必须考虑的因素,有几 个具体的问题你需要做出评估:
有多少注册用户?正常情况下有多少用户会同时在线访问?每天同时在线访问的最高峰值大 概是多少?这些问题,对我们决定采用什么样的CPU,多大的内存有着至关重要的影响。对于这 些问题,建议最好和业务人员及技术服务沟通了解清楚。不过,你还要对未来的用户增长做一个 尽可能准确的预测和规划,你的服务器需要支持越来越多的用户。
3、需要多大空间来存储数据?
我们需要从两个角度来计算这个问题,一个角度是有哪些类别的数据,包括:操作系统本身 占用的空间、安装应用程序所需要的空间、应用程序所产生的数据、数据库、日志文件、邮件数 据等等,如果是Web2.0类的网站,你还要计算每个用户的存储空间;另一个角度是从时间轴来 考虑,这些数据每天都在增长,你至少要为未来1年(我们建议2~3年)的数据增长做个准确的 测算,这可能仍然需要你的软件开发人员和业务人员一起提供足够的信息。最后你仍然需要为计 算出来的数字结果乘1.5左右的系数,方便维护的时候做各种数据备份和文件转移操作。