您好,欢迎访问三七文档
Linux(centos)+Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb构建大流量服务器集群-linux服务器应用架构Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb说明:我在设计系统架构时,进行了大胆的尝试,只用6台Web服务器,达到了可承受4000万PV(页面访问量)的性能:抛弃了Apache,因为它能承受的并发连接相对较低;抛弃了Squid,因为它在内存利用、访问速度、并发连接、清除缓存等方面不如Varnish;抛弃了PHP4,因为PHP5处理面向对象代码的速度要比PHP4快,另外,PHP4已经不再继续开发;抛弃了F5BIG-IP负载均衡交换机,F5虽然是个好东西,但由于价格不菲,多个部门多个产品都运行在其之上,流量大、负载高,从而导致性能大打折扣;利用Varnishcache减少了90%的数据库查询,解决了MySQL数据库瓶颈;利用Varnishcache的内存缓存命中加快了网页的访问速度;利用Nginx+PHP5(FastCGI)的胜过Apache10倍的高并发性能,以最少的服务器数量解决了PHP动态程序访问问题;利用Memcached处理实时数据读写;利用HAProxy做接口服务器健康检查;经过压力测试,每台Web服务器能够处理3万并发连接数,承受4千万PV完全没问题。保证4千万PV的并发连接数:(40000000PV/86400秒*10个派生连接数*5秒内响应*5倍峰值)/6台Web服务器=19290连接数实验证明:举个简单的例子,服务器192.168.0.2上运行Nginx+PHP,192.168.0.3上运行Apache+PHP,你在192.168.0.4上安装压力测试工具webbench,以30万并发连接分别请求Nginx和Apache服务器上的一个PHP文件60秒钟。在这期间,你用你的浏览器访问Apache服务器上的PHP文件,会发现要么是“该页无法显示”、要么是等待好几秒钟才能打开,而Nginx服务器的PHP文件,依然没有丝毫影响,访问速度仍然飞快。webbench-c300000-t60://192.168.0.3/index.php以下为Nginx0.5.33+PHP5.2.5(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程和250个php-cgi进程时的系统负载情况:-------------------------------------------------------------------------安装步骤:(系统要求:Linux2.6+内核,本文中的Linux操作系统为AS4.3)一、获取相关开源程序:1、下载程序源码包到当前目录:本文中提到的所有开源软件为截止到2007年9月21日的最新稳定版。我将它们打了两个压缩包。第一个压缩包:nginx_php_mysql_1.0_1of2.zip:下载地址:=2289607第二个压缩包:nginx_php_mysql_1.0_2of2.zip:下载地址:=22895952、解压缩:unzipnginx_php_mysql_1.0_1of2.zipunzipnginx_php_mysql_1.0_2of2.zip-------------------------------------------------------------------------一、)安装Nginx1.)安装Nginx(enginex)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。欢迎访问Nginx的中文维基,)安装Nginx所需的pcre库:[root@localhost]#tarzxvfpcre-7.2.tar.gz[root@localhost]#cdpcre-7.2/[root@localhost]#./configure[root@localhost]#make&&makeinstall[root@localhost]#cd../3.)Nginx的编译参数如下:[root@localhost]#./configure--user===/usr/local/nginx--with-openssl=/usr/include/openssl--with-pcre=/usr/local/lib--with-http_stub_status_module--without-http_memcached_module--without-http_fastcgi_module--without-http_rewrite_module--without-http_map_module--without-http_geo_module--without-http_autoindex_module在这里,需要说明一下,由于Nginx的配置文件中我想用到正则,所以需要pcre模块的支持。上面安装步骤里我已经安装了pcre及pcre-devel的rpm包,但是Ngxin并不能正确找到.h/.so/.a/.la文件,因此我稍微变通了一下:[root@localhost]#mkdir/usr/include/pcre/.libs/[root@localhost]#cp/usr/local/lib/libpcre.a/usr/include/pcre/.libs/libpcre.a[root@localhost]#cp/usr/local/lib/libpcre.a/usr/include/pcre/.libs/libpcre.la[root@localhost]#cp/usr/local/lib/libpcre.a/usr/include/pcre/libpcre.a[root@localhost]#cp/usr/local/lib/libpcre.a/usr/include/pcre/libpcre.la然后,修改objs/Makefile大概在908行的位置上,注释掉以下内容:./configure--disable-shared接下来,就可以正常执行make及makeinstall了。4.)修改配置文件/usr/local/server/nginx/conf/nginx.conf以下是我的nginx.conf内容,仅供参考:#运行用户usernobodynobody;#启动进程worker_processes2;#全局错误日志及PID文件error_loglogs/error.lognotice;pidlogs/nginx.pid;#工作模式及连接数上限events{useepoll;worker_connections1024;}#设定http服务器,利用它的反向代理功能提供负载均衡支持http{#设定mime类型includeconf/mime.types;default_typeapplication/octet-stream;#设定日志格式log_formatmain'$remote_addr-$remote_user[$time_local]''$request$status$bytes_sent''$http_referer$http_user_agent''$gzip_ratio';log_formatdownload'$remote_addr-$remote_user[$time_local]''$request$status$bytes_sent''$http_referer$http_user_agent''$http_range$sent_http_content_range';#设定请求缓冲client_header_buffer_size1k;large_client_header_buffers44k;#开启gzip模块gzipon;gzip_min_length1100;gzip_buffers48k;gzip_typestext/plain;output_buffers132k;postpone_output1460;#设定accesslogaccess_loglogs/access.logmain;client_header_timeout3m;client_body_timeout3m;send_timeout3m;sendfileon;tcp_nopushon;tcp_nodelayon;keepalive_timeout65;#设定负载均衡的服务器列表upstreammysvr{#weigth参数表示权值,权值越高被分配到的几率越大#本机上的Squid开启3128端口server192.168.8.1:3128weight=5;server192.168.8.2:80weight=1;server192.168.8.3:80weight=6;}#设定虚拟主机server{listen80;server_name192.168.0.1设定本虚拟主机的访问日志#access_loglogs/access.logmain;#如果访问/img/*,/js/*,/css/*资源,则直接取本地文件,不通过squid#如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好location~^/(img|js|css)/{root/home/web;expires24h;}#对/启用负载均衡location/{proxy_pass}#设定查看Nginx状态的地址location/NginxStatus{stub_statuson;access_logon;auth_basicNginxStatus;auth_basic_user_fileconf/htpasswd;}}}运行以下命令检测配置文件是否无误:如果没有报错,那么就可以开始运行Nginx了,执行以下命令即可:备注:conf/htpasswd文件的内容用apache提供的htpasswd工具来产生即可,内容大致如下:5.)查看Nginx运行状态输入地址,
本文标题:Linux(centos)+Varnish+nginx+php(FastCGI)+MYSQL5+Me
链接地址:https://www.777doc.com/doc-2884623 .html