我目前所在的公司打算重新部署服务器集群架构。对于此,作为名项目开发人员本身对于 Linux 有点了解,想谈谈我的看法。
首先参看下面的网络和服务器架构图:
基本上此集群的架构可以分为三层:网络链路层、应用服务层和数据存储层。然后大体上再安排两台服务器分别作为数据备份服务器和监控服务器。
网络链路层
网络链路层主要分配请求的负载平衡。前端通过一个防火墙和交换机以后,再交由 LVS 处理。然后 LVS 决定相应的应用服务器处理请求并返回。
此端我部门里的某一成员计划采用脚本程序控制。但个人认为对于此我想一来是效率不高,二来的确对于高负载的要求来说,稳定性还是有待测试的。所以我们听从了我们的管理员的看法,采用网络层的动态分配。
应用服务层
应用服务器主要用作存放各种应用服务器,比如 Web 服务器、搜索服务器和文件服务器。Web 服务器可能要根据具体的流量来确定具体的服务器规模。
大体上按照服务器的性质来分, Web 服务器和搜索服务器对于 CPU 的要求是比较高的。而文件服务器则偏向于磁盘的吞吐性能。
数据存储层
数据存储层在这里我理解为数据库集群。按照现有的项目规划数据库的性能要求是当前的服务器集群中最高的,所以个人认为这块是重点。
其他
相对的后期扩展性问题
这点我们也已经意识到了。后期如果对于数据更新频率不是很高的应用,可以在各层之间中加入若干台缓存服务器,以提高响应速度并缓解应用服务器的压力。
预算问题
预算和现实总是有些差距的。此规模的服务器集群主要的预算基本上都应该在数据库服务器上面了。在不降低性能的前提下,可以适当的缩减服务器的规模和数量。
但是对于长期的项目规划来看,任何的付出都会获得一定的回报的。对于此,我想我的态度是乐观的。
给你们一个建议, 不要把集群全部托管在一个机房.
wiLdGoose 兄提的意见很中肯,我们的确遇到过这样的问题。对于那些“非技术”原因造成的损失,我们吃了不少的苦头。