本文章主要讲解大型网站构建,全部采用开源软件和开源的操作系统,构架采用 LAMP (Linux+Apache+Mysql+Php)模式实现。
大型网站集群构建之: 需求分析篇
大型网站集群构建之:DNS配置篇
大型网站集群构建之:共享session讨论篇
大型网站集群构建之:负载均衡篇
一、大型网站的服务器集群构建思路
(这里讲解的是高可用集群,暂不涉及科学计算集群)
1、由于这次介绍的重点是大型网站构架,因为内容太多,所以在这里我要把主要部分划分成几个模块来作介绍,可能不适合你的实际情况,但希望能起到抛砖引玉的作用。
2、所谓大型网站主要的特点是访问量大,既然是海量访问,那么带宽就一定要大,而且在中国的网络环境中单单靠一家也难保访问的快速、稳定,所以我们这里选择三家网络运营商,也许你的环境更复杂,需要的更多,我们这里就暂时以三家为例,我们现在分别使用,网通,电信,其他线路,3条线路。为了能让访问达到最佳效果,这里使用linux-bind 中的view技术+iptables+iproute2来解决,这就是我要介绍的第一个模块,解决线路问题的模块,当然如果你很有钱,可以去购买F5的 3DNS和LINK-CONTROL.
3、web集群,这个相对简单一点,主要分两步解决这个问题,第一提高单台服务器的吞吐能力,第二使用多台服务器共同为一个需求服务,这里采用apache+lvs+rsync解决,当然有钱购买硬件也可以轻松实现这个功能,例如F5的BIGIP+SAN,这就是我说的第二个模块,web服务器模块。
4、数据库集群,这个是比较头疼的一个问题,我们先分析一下,数据库的基本功能有4个,分别是增、删、查、改、对这四个功能在分一下类,其中增、删、改,是写操作,查是读操作,首先你要确定的是你要做的数据库集群是那个需求比较多,这里我所做的是读非常多的数据库,那么写非常多的数据库将在这个帖子后面继续讨论,这里就需要程序的开发人员区分不同操作来访问不同的机器来完成。这里使用mysql+replication+lvs来解决查询大的问题,这就是第3个模块。
5、为了解决以上问题中出现的单点故障给网络带来的问题,这里使用ucarp和heartbeat来解决以上所有单点故障的问题。本文中介绍的很多软件功能上有很多重复,实际操作中你可能仅仅需要使用其中的几个或部分功能,这里尽可能的多使用只是为了让大家方便对比,并根据自己的喜好选择软件。
6、安装,这么大量的流量必须有大量的机器来保证,如何快速准确的安装好每一台机器。
7、监控维护,这里讨论如何监控维护一个集群。
8、这篇文章是我个人的学习笔记,本系列中的全部代码均来自实际生产运行的服务器,完全实地配置运行,并非实验脚本。