基于LVS负载均衡的高性能Web站点设计与实现

1、部署环境架构设计


随着Web站点访问量的不断提高,Web服务器处理请求的压力将会日益增大,进而影响到Web站点的性能。当单台Web服务器所能承受的压力到达极限时,就需要有更多的服务器来分担工作,将流量合理转移到更多的服务器上。本文主要介绍通过LVS来组建服务器集群,同时配置反向代理服务器实现Web页面的动静分离,以满足高并发、高可用的生产环境要求。

机器清单列表:
两台LVS服务器,两台反向代理服务器,两台静态内容缓存服务器,两台动态请求处理服务器,具体用途说明详见下表。

说明:

(1) zone(区域)可以代表为机柜、交换机甚至是数据中心,将站点架设在不同的zone上,是出于容灾的考虑,以此减小Web站点因单点故障而造成无法访问的风险;

(2) 使用nginx作为纯粹的反向代理服务器,将静态页面的访问请求交给Varnish,动态请求交给Apache处理,nginx本身只负责记录请求访问的接入状况以及wap请求的跳转; 

(3) 静态资源模块选用Varnish做cache缓存,与传统的Squid相比,Varnish具有性能更高、速度更快、管理更方便等诸多优点,分析如下:
第一, 稳定性更高,在同等负荷的压力下,Squid发生故障的几率要比Varnish高,Squid需要经常重启;
第二, 访问速度更快,Varnish采用了“Visual Page Cache”技术,缓存数据直接从内存读取,内存管理和回收的机制健全,当缓存内容超过内存阈值时,内核会自动将一部分缓存存入swap中让出内存,从而避免了频繁地在内存和磁盘之间进行文件交换;
第三, Varnish便提供了一个命令行的状态监控程序varnishstat,从整体上了解Varnish的命中率和缓存状态,对缓存性能调优有很大的帮助;
第四, 相比Squid而言,Varnish可以通过管理端口,使用正则表达式快速、批量地清除部分缓存。
然而,其弊端还是比较明显的:
第一, Varnish在高并发状态下CPU、I/O和内存等资源开销都高于Squid;
第二, Varnish进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有的请求都会被发送到后端服务器,在高并发情况下,这会给后端服务器造成很大压力;
第三, 重启Varnish后,在上线前需要重新计算请求数据,预热缓存。 

(4) 动态请求模块,采用Apache和PHP-FPM相结合,以FastCGI模式运行PHP,其好处在于:
第一, 具有灵活性和可扩展性,在Web服务器和具体CGI程序之间建立了一个智能可持续的中间层,把PHP动态语言和Web服务器分离开来,Web服务器只需将请求提交到中间层,再由中间层分配到若干个可服用的CGI程序实例中,一方面便于大规模的扩展和改进安全性,另一方面避免了进程反复地fork,根据不同的状况fork或者回收实例,达到灵活性和稳定性兼得的目的;
第二, 出现故障时,可以更好地定位到是Web服务器还是PHP的问题,当PHP出错时不会搞垮Web服务器,将PHP进程kill掉以后便立即重新启动一个新的PHP进程替代;
第三, 可以通过中间层的控制和探测机制来监视实例的运行情况,根据实际的应用进行合理配置达到最佳效果。

2、安装与配置说明

系统环境:CentOS6.4 x86_64,内核:Linux version 2.6.32-358.el6

2.1 Apache与PHP-FPM

安装动态请求模块的机器IP如下:
192.168.85.93
192.168.85.97

1. 安装编译相关的依赖包
# yum install httpd httpd-devel apr apr-devel libtool make gcc
# /etc/init.d/httpd start 
这时,直接在浏览器中输入服务器的IP地址,即可看到Apache2的默认页面。

2. 下载mod_fastcgi源代码
# cd /opt/
# wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz

3. 解压并进行编译安装
# tar zxvf mod_fastcgi-2.4.6.tar.gz
# cd mod_fastcgi-2.4.6
# cp Makefile.AP2 Makefile
# vim Makefile
修改top_dir目录,64位系统的路径为lib64,32位系统的路径为/usr/lib/httpd

保存退出后,开始进行编译安装。
# make
# make install

4. 加载模块
# vim /etc/httpd/conf/httpd.conf
找到LoadModule部分,添加一行加载语句

5. 重启服务
# /etc/init.d/httpd restart

如果能正常启动,则log里面将显示以下信息 
# grep -i "FastCGI" /var/log/httpd/error_log
[Mon Jul 29 06:54:27 2013] [notice] FastCGI: process manager initialized (pid 2098) 
[Mon Jul 29 06:54:27 2013] [notice] Apache/2.2.15 (Unix) DAV/2 mod_fastcgi/2.4.6 configured -- resuming normal operations 

6. 安装PHP-FPM(FastCGI进程管理器)
PHP-FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。
# yum install php-fpm
# /etc/init.d/php-fpm start
# chkconfig php-fpm on
# netstat -anp |grep php
tcp   0      0    127.0.0.1:9000     0.0.0.0:*        LISTEN  2575/php-fpm        
unix  3      [ ]         STREAM     CONNECTED     25812  2575/php-fpm        
unix  3      [ ]         STREAM     CONNECTED     25811  2575/php-fpm        

7. 修改配置
新建一个配置文件/etc/httpd/conf.d/fastcgi.php.conf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值