Nginx 负载均衡

nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。


1. 安装nginx

    可参考前篇文章 Ubuntu下Nginx的安装与配置

2. 负载均衡配置

    (1)测试环境的参数:
    代理服务器 192.168.1.10 ubuntu12.04 nginx/1.1.19
    WEB服务器1 192.168.1.11:8080 ubuntu12.04 tomcat 7.0.54
    WEB服务器2 192.168.1.12:8080 ubuntu12.04 tomcat 7.0.54
 
    (2)修改nginx的配置文件:/etc/nginx/nginx.conf

upstream www.test.cn {  
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}


server {
    listen       80;
    server_name  localhost;


    location / {  
             proxy_pass         http://www.test.cn;
             proxy_set_header   Host             $host;
             proxy_set_header   X-Real-IP        $remote_addr;
             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
     }
}

Note:
    (1)配置文件中参数的对应关系:upstream: www.test.cn 和 proxy_pass:  http://www.test.cn;
    (2)upstream中的server可设置多个:server 192.168.1.11:81;如果端口为80,则可省略端口号;
    (3)upstream设备上的状态设置
      - down:标记服务器为永久离线状态;
      - weight:设置服务器的权重,权重数值越高,被分配到客户端的请求次数越多,默认值为1;
      - max_fails:在参数fail_timeout指定时间内对后端服务器请求失改的次数,如果检测到后端服务器无法连接及发生服务器错误(404错误除外),则标记为失改。如果没有设置,则默认值为1,设置为0将关闭这项检查。
      - fail_timeout:max_fails次失败后,暂停的时间;
      - backup:仅在非backup服务器全部宕机或繁忙的时候才启用,这台服务器的负载会最轻;


3. 测试

    (1)修改你电脑上的hosts,以方便测试,win7下打开C:\Windows\System32\drivers\etc\hosts文件,添加 192.168.1.10    www.test.cn
    (2)修改tomcat下webapp/ROOT/index.jsp,增加特定标识以便测试;

    (3)浏览器打开:http://www.test.cn 刷新页面,会交替出现如下信息;




    (4)stop其中一个tomcat,再次访问,则只显示一个信息。


4. Nginx Upstream目前支持的分配方式

(1)轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream webserver {
  server 192.168.1.11;
  server 192.168.1.12;
}
(2)weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream webserver { 
  server 192.168.1.11 weight=5; 
  server 192.168.1.12 weight=10; 

 
(3)ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream webserver { 
  ip_hash; 
  server 192.168.1.11; 
  server 192.168.1.12; 

 
(4)fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 
upstream bakend { 
  server 192.168.1.11; 
  server 192.168.1.12; 
  fair; 

 
(5)url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backend { 
  server 192.168.1.11; 
  server 192.168.1.12; 
  hash $request_uri; 
  hash_method crc32; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值