十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
无论是租用服务器还是托管都要面临一个问题,那就是选择服务器的硬件配置。前面也说了,选购硬件配置时要根据我们的服务器应用需求而定。因为你无法通过一台服务器来满足所有的需求、解决所有的问题。在项目实施或网站架构之前,我们应该从以下几方面来考虑如何选购Linux服务器:
创新互联公司专注于姚安网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供姚安营销型网站建设,姚安网站制作、姚安网页设计、姚安网站官网定制、微信平台小程序开发服务,打造姚安网络公司原创品牌,更为您提供姚安网站排名全网营销落地服务。服务器运行的应用
需要支持的用户访问量
需要的存储数据空间
业务的重要性
服务器网卡方面的考虑
安全方面的考虑
机架合理化安排
服务器的价格预算
下面分别来看一下。
1.服务器运行的应用
这是首先需要考虑的问题,我们通常要根据服务器的应用类型(也就是用途)来决定服务器的性能、容量和可靠性需求。下面将按照负载均衡、缓存服务器、前端服务器、应用程序服务器、数据服务器的常见基础架构来讨论。
负载均衡:它对服务器的要求非常低,尤其是用来做LVS负载时,它会直接将所有的连接要求转给后端的Web应用。所以,在保证网卡性能的前提下(很多时候我用的是品牌服务器自带的百兆网卡),可以将性能相对较差的配置用作负载均衡。
缓存服务器:主要是squid或varnish等,需要重点考虑两方面的因素,即内存尽量多些,硬盘尽量快些,不要因为硬盘的I/O影响了整体性能。
Web前端服务器:正常情况下,大多数Web前端服务器(Front-end)对服务器的要求不高,例如静态Web服务器、动态服务器、图片服务器等。事实上现在很流行在一台性能卓越的服务器上同时运行Web前端+应用服务器,比如Nginx+PHP-FPM、Nginx+Tomcat或Nginx+Resin。
应用程序服务器:由于它承担了计算和功能实现的重任,我们需要为基于Web架构的应用程序服务器(Application Server)选择足够快的服务器。另外应用程序服务器可能需要用到大量的内存,尤其是基于Windows基础架构的Ruby、Python、Java服务器,这一类服务器至少需要使用单路至强的配置。至于可靠性的问题,如果你的架构中只有一台应用服务器,那这台服务器需要足够可靠,RAID是绝对不能忽视的选项。但如果有两台或更多的应用服务器,并设计了负载均衡机制、具有冗余功能,那就不必过于担心了。
特殊的应用:除了用于Web架构中的应用程序之外,如果你的服务器还要处理流媒体视频编码、服务器虚拟化、媒体服务器(Asterisk之类),或者作为游戏服务器(逻辑、地图、聊天)运行,那同样会对CPU和内存的需求比较高,至少也要考虑单路至强的服务器。其中,服务器虚拟化对存储可靠性的要求非常高,因为一个篮子里有十几个鸡蛋,篮子一定要足够牢靠才行。
公共服务:这里指的是邮件服务器、文件服务器、DNS服务器、域控服务器等。通常我们会部署两台DNS服务器互相备份,域控主服务器也会拥有一台备份服务器(专用的或非专用的),所以对于可靠性无须过于苛刻。至于邮件服务器,至少需要具备足够的硬件可靠性和容量大小,这主要是对邮件数据负责,因为很多用户没有保存和归档邮件数据的习惯,待其重装系统后,就会习惯性地到服务器上重新下载相应的数据。至于性能问题,则应评估用户数量后再决定。另外,考虑到它的重要性,建议还要尽量选择稳定的服务器系统,比如Linux或BSD系列。
数据库:这是我们最后讨论的应用,对服务器的要求也是最高、最重要的。无论你使用的是MySQL、SQL Server还是Oracle,一般情况下,它都需要有足够快的CPU、足够大的内存、足够稳定可靠的硬件。可直接采用Dell PowerEdge R710或HP 580G5,CPU和内存也要尽可能大化。如果预算充分,建议用固态硬盘作为RAID10,因为数据库服务器对硬盘的I/O要求是最高的。
2.服务器需要支持的用户访问量
服务器就是为了给用户提供某种服务的,所以使用这些服务的用户同样是我们必须考虑的因素。我们可以从下面几个具体的问题进行评估:
有多少注册用户?正常情况下有多少用户会同时在线访问?每天同时在线访问的最高峰值大概是多少?
一般在项目实施之前,客户方面会针对这些问题给出一个大致的结果。但我们要尽量设计得比这更充分和具体。同时,我们还要对未来的用户增长做一个尽可能准确的预测和规划,因为你的服务器可能会支持越来越多的用户,所以在进行网站或系统架构时要让机器能灵活地扩展。
3.需要的存储数据空间
关于这个问题需要从两个方面来考虑,一方面是有哪些类别的数据,包括:操作系统本身占用的空间,安装应用程序所需要的空间,应用程序所产生的数据、数据库、日志文件、邮件数据等,如果网站是Web 2.0的,还要计算每个用户的存储空间;另一方面是从时间轴上来考虑,这些数据每天都在增长,你至少要为未来1年(我们建议2~3年)的数据增长做个准确的测算,这就需要软件开发人员和业务人员一起来提供足够的信息了。最后可将计算出来的结果乘上1.5左右的系数,方便维护的时候做各种数据的备份和文件转移操作。
4.业务的重要性
关于这个问题就需要根据自身的业务领域来考虑相关要求了。下面举几个简单的例子,帮助你了解这些服务器对可靠性、数据完整性等方面的要求。
如果你的服务器是用来运行一个WordPress博客、与朋友们分享观点的,那么,一台酷睿服务器、1GB的内存外加一块160GB的硬盘就足够了。就算服务器出现了一点硬件故障,导致几个小时甚至一两天不能提供访问,生活会照常继续,天也不会塌下来。
如果你的服务器是用作测试平台的,那么就不会像生产环境那样对可靠性有极高的要求,你所需要的可能只是做好例行的数据备份,若服务器宕机,只要能在当天把问题解决就行了。
如果是一个电子商务公司的服务器,运行着电子商务网站平台,那么请一定要十分重视服务器。当硬件发生故障而导致宕机时,你需要对以下“危言耸听”的后果做好心理准备:投诉电话被打爆、顾客大量流失、顾客要求退款、市场推广费用打水漂、员工无事可干、公司运营陷入瘫痪状态、数据丢失等。事实上,电子商务网站一般是需要365×24小时不间断监控的,而且要有专人轮流值守,并且要有足够的备份设备,每天还要有专人检查。个人感觉,在网站运维方面,电子商务的技术含量也是最高的。
如果是大型广告类或门户类网站,那么建议选择CDN系统。由于它有提高网站响应速度、负载均衡、有效抵御DDoS攻击等特点,相对而言,每节点都会有大量的冗余,所以,除了成本之外,CDN机器的硬盘问题不大。
这里其实只是简单地讨论了业务对服务器硬件可靠性的要求。换言之,如果你觉得业务不能承担硬盘损坏带来的停机或数据丢失风险,那么一定要选择一个合适的RAID卡。对于冗余电源问题,道理是一样的(要全面解决这个问题,不能只考虑单个服务器的硬件,还需要结合系统架构的规划设计)。
在回答了以上问题后,接下来就可以决定下面这些具体选项了:
(1)选择什么CPU
回忆一下上面关于“服务器运行的应用”和“需要支持的用户访问量”两个方面的考虑,这将帮助我们选择合适的CPU。毫无疑问,CPU的主频越高,其性能也就越高;两个CPU要比一个CPU来得更爽,至强肯定比酷睿更猛。但究竟怎样的CPU才是合适的呢?下面为你提供一些常见情况下的建议:
如果你的业务刚刚起步,预算不是很充足,建议你选择一款经典的酷睿服务器,这可以帮你节约大量成本。而且,以后可以根据业务发展的情况,随时升级到更高配置的服务器。
如果你需要在一台服务器上同时运行多种应用服务,例如.Net+Exchange+SQL Server,那么一个单核至强(例如X3330)或新一代的酷睿I3/I5(双核四线程)将是最佳的选择。虽然从技术的角度来说,这不是一个好主意,但至少能够帮你节约一大笔成本。
如果你的服务器要运行SQL Server、MySQL或Oracle,而且目前有几百个用户同时在线,未来还会不断增长,那么你至少应该选择安装一个双四核服务器。
如果需要的是Web应用服务器,双四核基本就可以满足我们的要求了。
(2)需要多大的内存
同样,“服务器运行的应用”和“需要支持的用户访问量”两方面的考虑也将帮助我们选择合适的内存容量。相比于CPU,我认为内存(RAM)才是影响性能的最关键因素。因为在相当多正在运行的服务器中,CPU的利用率一般都在10%~30%之间,甚至更低。但我们发现由于内存容量不够而导致服务器运行缓慢的案例比比皆是,如果服务器不能分配足够的内存给应用程序,应用程序就需要通过硬盘接口缓慢地交换读写数据了,这将导致网站慢得令人无法接受。内存的大小主要取决于服务器的用户数量,当然也和应用软件对内存的最低需求及内存管理机制有关,所以,最好由程序员或软件开发商给出最佳的内存配置建议。下面同样给出了一些常见应用环境下的内存配置建议:
无论是Windows下的IIS还是Linux下的Apache,一般情况下Web前端服务器不需要配置特别高的内存,尤其是在集群架构中,4GB的内存就已经足够了。如果有几千个并发用户,而且他们同时运行动态脚本程序,我们才会考虑使用8GB或更高的内存。
对于运行Tomcat、Resin、WebLogic、Websphere或.NET的应用服务器,4GB内存应该是基准配置,更准确的数字需要根据用户数量和技术架构来确定。
数据库服务器的内存由数据库实例的数量、表大小、索引、用户数来决定,一般建议配置4GB以上的内存,我们在许多项目方案中使用了24GB~48GB的内存。
诸如Postfix、Notes、Exchange这样的邮件服务器对内存的要求并不高,1GB~2GB就可以满足了。
还有一些特殊的服务器,我们需要为之配置尽可能高的内存容量,包括Squid、Varnish、Memcached的缓存服务器。
对于一台文件服务器,1GB内存可能就足够了。
事实上,上面的数字已经足够“慷慨”,由于内存技术在不断进化,价格也在不断降低,我们才得以近乎奢侈地讨论4GB、8GB、16GB这些曾经不可想象的内存容量。然而,除了花钱购买内存来满足应用程序的“贪婪”之外,系统优化和数据库优化仍然是我们需要重视的问题。
(3)需要怎样的硬盘存储系统
硬盘存储系统的选择和配置是整个服务器系统里最复杂的一部分,我们需要考虑硬盘的数量、容量、接口类型、转速、缓存大小,以及是否需要RAID卡、RAID卡的型号和RAID级别等问题。甚至在一些高可靠性、高性能的应用环境中,我们还需要考虑使用怎样的外部存储系统(SAN、NAS或DAS)。下面将服务器的硬盘RAID卡的特点归纳一下:
如果是用作缓存服务器,比如squid、varnish还有memcached,可以考虑用RAID0。
如果是运行Nginx+PHP5或tomcat、resin等应用,可以考虑用RAID1。
如是是内网开发服务器或存放重要代码的服务器,可以考虑用RAID5。
如果是运行MySQL或Oracle等数据库应用,可以考虑用固态硬盘做RAID5或RAID10。
5.网卡性能与数据方面的考虑
如果你的基础架构是多服务器环境,而且服务器之间有大量的数据交换,那么建议你为每台服务器配置两个或更多的网卡,一个用来对外提供服务,另一个用来做内部数据交换。由于现在项目外端都置于防火墙内,所以许多时候单网卡就足够了;而像LVS+Keepalived这种只用公网地址的Linux集群架构,有时可能仅仅需要一块网卡。目前,HP或Dell这种品牌服务器自带的网卡已经足够使用了。
另外,数据的备份也是很重要的。在实际工作中我们也发现,rsync和scp这些Liunx下的备份工具同样非常占带宽,所以,如果用scp,建议尽量用它的限速参数;而rsync则尽量选择在非业务时间段执行。
6.服务器安全方面的考虑
由于目前国内的DDoS攻击还是比较普遍,建议给每个项目方案和自己的电子商务网站配备硬件防火墙,比如Juniper、Cisco或神盾等。当然了,这个问题也是网站后期运营维护需要考虑的,这里只是想让大家有个概念性的认识。有时为了数据的安全,我会让所有的机器都用RAID5。另外就是定期巡视机房,检查服务器的硬盘灯指向,一有异常就迅速处理。
7.根据机架数合理安排服务器的数量
这个问题应该在项目实施前就准备好,选择服务器时应该明确1U、2U和4U到底有多少台,应该如何安排。在小项目中这个问题可能无关紧要,但在大型项目的实施过程中,这个问题就很突出了,我们应该根据现有或额定的机架数目确定到底应该选择多少个服务器。
8.成本考虑:服务器的价格问题
这个问题无论是在替公司采购时,还是在项目实施过程中,都是重要的问题。我们的方案经常被退回,理由就是超出预算。尤其是一些小项目,预算更吃紧。我做项目时经常面临的一种需求是客户做的是证券类资讯网站,只要求周一至周五的上午9点至下午3点网站不出问题即可,并不想做复杂的负载均衡高可用。所以这时候,我会做成单Nginx或Haproxy,后面接两台Web应用。这种情况还好说,如果是做中大型电子商务网站,在服务器成本上的控制就尤其重要。事实上,我们经常遇到的问题是,客户给出的成本预算有限,而我们的应用又需要更多的服务器。这时候,我们不得不选择Centos或FreeBSD下的免费虚拟化软件,这将在后面的章节中重点讲述。
以上8个方面即是我们在采购服务器时应该注意的因素,在选择服务器的组件时要有所偏重,然后根据系统或网站架构来决定服务器的数量,尽量做到服务器资源利用的大化。