Nginx实现负载均衡

1 Nginx实现负载均衡

Nginx("engine x")是一个高性能的 HTTP反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器

1.1简介

(1)web服务器

www服务器、http服务器主要功能是提供网上信息浏览服务

(2)反向代理

反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

(3)负载均衡

负载均衡(又称为负载分担),英文名称为Load Balance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

(4)Linux下常用Web服务器对比

ApacheNginxLighttpdTomcatIBMWebSphere其中最为广泛的是Apache

1)Apache: 60%占有率重量级的Web服务器

优点跨平台、模块丰富。

缺点速度性能较其他web服务器差、消耗内存较高

2)Lighttpd

内存开销低、性能好、模块较丰富轻量级web服务器

3)Tomcat 服务器

对静态文件、高并发处理较弱

4)IBM WebSphere

Apache的基础上增加了SSL和在线网页HTTPSERVER配置功能

5) Nginx

支持高并发链接

支持高达5万个并发连接数响应

内存消耗小

Nginx+php服务器在3W并发链接下开启10Nginx进程只消耗150MB

高性能

实际生产环境两台Nginx+php5运行多个复杂性一般的纯php动态程序

处理能力可达到 700次请求/秒相当于每天可承受6000万的访问量(700*60*60*24=60480000)

同等硬件环境下,Nginx的处理能力是Apache5~10

成本低廉

购买F5 Big-IP NetScaler硬件负载均衡交换机几十万

Nginx基于BSD开源协议免费的、可商用

支持rewrite重写规则

能够根据域名、URL的不同将HTTP请求分发到不同的后端服务器群组

内置的健康检查功能

如果Nginx Proxy后端的某Web服务器宕机了,不会影响前端访问,节省带宽

支持GZIP压缩

可以添加浏览本地缓存的Header

稳定性高

使用反向代理、几乎不会宕机

支持热部署

不断服务进行更新

1.2安装与配置

准备软件:nginx-1.2.2.tar.gz , pcre-8.30.tar.gz ,zlib-1.2.3.tar

Nginx安装步骤如下:

1.将软件包上传至服务器;

2Nginx的安装依赖第三方包,首先编译安装zlibpcre

tar xvf  zlib-1.2.3.tar

tar zxvf  pcre-8.12.tar.gz

分别

./configure  &&make && make install

3.编译安装Nginx

tar zxvf  nginx-1.2.2.tar.gz

./configure  &&make && make install

4.按照以上步骤,Nginx将默认安装到/usr/local/nginx目录下

Nginx启动:

假设nginx安装在/usr/local/nginx目录下可以使用以下命令启动nginx的服务

首先进入到nginxsbin目录下,然后

./nginx

如果nginx安装时指定了其他的路径

/usr/local/nginx/sbin/nginx  –c “nginx.conf  path”

参数-c表示指向配置文件的路径

Nginx停止:

方法1:

/usr/local/nginx/sbin/nginx  –s  stop

方法2

先查询nginx的进程号

ps –aux|grep  nginx

然后使用 kill –TERM进程号

Nginx热启动:

Nginx可以在不停服务的情况下进行配置文件更新、升级、修改nginx配置文件nginx.conf后上传到服务器更新,首先需要使用

./nginx -t

检查配置文件的语法是否正确

如正确会提示

Theconfiguration file/usr/local/nginx/conf/nginx.conf syntax is ok

configurationfile/usr/local/nginx/conf/nginx.conf test is successful

./nginx –s  reload

就可在不断服务器的情况下完成nginx配置文件的更改

1.3Nginx负载均衡

nginxupstream目前支持4种方式的分配

1)轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2) weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3) ip_hash

每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

5)url_hash(第三方)

按访问urlhash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

Nginx 负载均衡核心配置

upstream demo{#定义负载均衡设备的Ip及设备状态

server127.0.0.1:9090 down;
server 192.168.1.11:8080 weight=2;

server192.168.1.12:6060;
server 192.168.1.13:7070 backup;

}

a) down 表示当前的server暂时不参与负载

b) weight 默认为1.weight越大,负载的权重就越大。

c) max_fails :在fail_timeout时间内对后台服务器请求失败的次数

d)fail_timeout:max_fails次失败后,暂停的时间。

e) backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

负载均衡实验环境:

三个节点:192.168.1.11192.168.1.12192.168.1.13

其中192.168.1.13作为负载均衡服务器,192.168.1.11192.168.1.12192.168.1.13作为应用服务器,访问nginx示例文件/html/index.html

(1)在三个节点上正确安装nginxweb服务器;

修改192.168.1.13节点上nginx的配置文件:nginx.conf如下,实验中采用weight策略实现负载均衡。

nginx.conf文件如下:

#user  nobody;

worker_processes  1;

events {

use epoll;

worker_connections  1024;

}

http {

include  mime.types;

default_type  application/octet-stream;

sendfile  on;

keepalive_timeout  65;

upstream  demo{

server  192.168.1.13:5000 down;

server  192.168.1.12:5000 weight=3;

server  192.168.1.11:5000;

}

server {

listen  5000;

server_name  www.sugon.com;

#charset  koi8-r;

#access_log  logs/host.access.log main;

location /  {

root html;

index  index.html index.htm;

proxy_pass  http://demo;

proxy_set_header  Host $host;

proxy_set_header  X-Real-IP $remote_addr;

proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

}

# redirect  server error pages to the static page /50x.html

error_page  500 502 503 504 /50x.html;

location =  /50x.html {

root html;

}

}

}

(2)在本地浏览器上输入以下地址:

http://192.168.1.13:5000/

可以发现,在每4次请求中,有1次是访问192.168.1.11节点,3次访问192.168.1.12节点.

1.4参考文献

http:/nginx.org/

http:/wiki.nginx.org/NginxChs

http://wiki.nginx.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值