您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Nginx的负载均衡入门
使用Nginx轻松实现开源负载均衡2008.9.20北京什么是Nginx?•Nginx(“enginex”)是俄罗斯人IgorSysoev(塞索耶夫)编写的一款高性能的HTTP和反向代理服务器。•Nginx已经在俄罗斯最大的门户网站──RamblerMedia()上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。•在国内,已经有新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线等多家网站使用Nginx作为Web服务器或反向代理服务器。使用Nginx做七层负载均衡的理由•1、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。•2、内存消耗少:在3万并发连接下,开启的10个Nginx进程才消耗150M内存(15M*10=150M)。•3、配置文件非常简单:风格跟程序一样通俗易懂。•4、成本低廉:Nginx为开源软件,可以免费使用。而购买F5BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。使用Nginx做七层负载均衡的理由•5、支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。•6、内置的健康检查功能:如果NginxProxy后端的某台Web服务器宕机了,不会影响前端访问。•7、节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。•8、稳定性高:用于反向代理,宕机的概率微乎其微。Nginx负载均衡的典型应用硬件、软件七层负载均衡对比:NetScaler与Nginx硬件、软件七层负载均衡对比:NetScaler与Nginx五分钟搞定Nginx负载均衡编译安装Nginx1、创建供Nginx使用的组和帐号:/usr/sbin/groupadd、编译安装rewrite模块支持包wget编译安装Nginx3、编译安装Nginxwget===/usr/local/nginx--with-http_stub_status_module--with-http_ssl_modulemake&&makeinstallcd../4、备份默认nginx.conf配置文件mv/usr/local/nginx/conf/nginx.conf/usr/local/nginx/conf/nginx.old创建nginx.conf配置文件(1)1、创建Nginx配置文件vi/usr/local/nginx/conf/nginx.conf2、输入配置文件内容user{useepoll;worker_connections51200;}创建nginx.conf配置文件(2)http{includemime.types;default_typeapplication/octet-stream;#charsetgb2312;server_names_hash_bucket_size128;client_header_buffer_size32k;large_client_header_buffers432k;sendfileon;tcp_nopushon;keepalive_timeout60;tcp_nodelayon;创建nginx.conf配置文件(3)#gzipon;#gzip_min_length1k;#gzip_buffers416k;#gzip_http_version1.0;#gzip_comp_level2;#gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;#gzip_varyon;创建nginx.conf配置文件(4)upstreamweb.abc.com{server192.168.1.10:80;server192.168.1.11:80;server192.168.1.12:80;server192.168.1.13:81;}upstreamsquid.abc.com{server192.168.1.20:80weight=3;server192.168.1.21:80;server192.168.1.22:80;}创建nginx.conf配置文件(5)server{listen80;server_name*.abc.com;proxy_redirectoff;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_headerX-Forwarded-For$remote_addr;if($request_uri~*.*\.(js|css|gif|jpg|jpeg|png|bmp|swf)$){proxy_pass}if($request_uri~*^/view/(.*)$){proxy_pass}proxy_pass创建nginx.conf配置文件(6)#定义日志格式log_formataccess'$remote_addr-$remote_user[$time_local]$request''$status$body_bytes_sent$http_referer''$http_user_agent$http_x_forwarded_for';#打日志access_log/usr/local/nginx/logs/access.logaccess;创建nginx.conf配置文件(7)#允许客户端请求的最大的单个文件字节数client_max_body_size10m;#缓冲区代理缓冲用户端请求的最大字节数可以理解为先保存到本地再传给用户client_body_buffer_size128k;#跟后端服务器连接的超时时间_发起握手等候响应超时时间proxy_connect_timeout600;#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理proxy_read_timeout600;#后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据proxy_send_timeout600;创建nginx.conf配置文件(8)#代理请求缓存区_这个缓存区间会保存用户的头信息以供Nginx进行规则处理_一般只要能保存下头信息即可proxy_buffer_size8k;#同上告诉Nginx保存单个用的几个Buffer最大用多大空间proxy_buffers432k;#如果系统很忙的时候可以申请更大的proxy_buffers官方推荐*2proxy_busy_buffers_size64k;#proxy缓存临时文件的大小proxy_temp_file_write_size64k;}}配置文件编写完毕启动Nginx/usr/local/nginx/sbin/nginx–t如果屏幕显示以下两行信息,说明配置文件正确:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisoktheconfigurationfile/usr/local/nginx/conf/nginx.confwastestedsuccessfully那么,则可以启动Nginx服务:ulimit-SHn51200/usr/local/nginx/sbin/nginx不中断服务平滑修改Nginx配置①、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:/usr/local/nginx/sbin/nginx-t如果屏幕显示以下两行信息,说明配置文件正确:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisoktheconfigurationfile/usr/local/nginx/conf/nginx.confwastestedsuccessfully②、这时,输入以下命令查看Nginx主进程号:ps-ef|grepnginx:masterprocess|grep-vgrep|awk-F'''{print$2}'屏幕显示的即为Nginx主进程号,例如:6302这时,执行以下命令即可使修改过的Nginx配置文件生效:kill-HUP6302或者用更简便的方法:kill-HUP`cat/usr/local/nginx/logs/nginx.pid`编写每天定时切割Nginx日志的脚本1、创建脚本/usr/local/nginx/sbin/cut_nginx_log.sh,输入以下内容:#!/bin/bash#Thisscriptrunat00:00#TheNginxlogspathlogs_path=/usr/local/nginx/logs/mkdir-p${logs_path}$(date-dyesterday+%Y)/$(date-dyesterday+%m)/mv${logs_path}access.log${logs_path}$(date-dyesterday+%Y)/$(date-dyesterday+%m)/access_$(date-dyesterday+%Y%m%d).logkill-USR1`cat/usr/local/nginx/logs/nginx.pid`2、设置crontab,每天凌晨00:00切割nginx访问日志crontab-e输入以下内容:0000***/bin/bash/usr/local/nginx/sbin/cut_nginx_log.sh总结1、对于中、小型企业,如果没有资金去购买昂贵的四/七层负载均衡交换机,那么Nginx是不错的七层负载均衡选择,并且可以通过Nginx+Keepalived实现Nginx负载均衡器双机互备,任意一台机器发生故障,对方都能够将虚拟IP接管过去。2、对于有资金购买四/七层负载均衡交换机的大型网站,Nginx也有其用武之地。以门户类网站为例,F5BIG-IP等四/七层交换机由于负责了全站多个产品的服务,并发数非常高,而内容转发规则等七层交换业务,用不到F5BIG-IP的四层硬件芯片,极大地消耗了F5的CPU和内存资源,成为高并发应用的制约条件。而Nginx的出现,成为了F5BIG-IP七层交换的有力补充。结束谢谢各位!
本文标题:Nginx的负载均衡入门
链接地址:https://www.777doc.com/doc-6219948 .html