zoukankan      html  css  js  c++  java
  • nginx负载均衡简单配置

    nginx负载均衡简单配置

    准备三台虚拟机来做这个实验:

    192.168.232.132        webserver
    192.168.232.133        webserver
    192.168.232.134        负载均衡server

    首先三台电脑预装nginx软件:


    1、导入外部软件库
    rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/i386/epel-release-6-5.noarch.rpm
    rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/i386/ius-release-1.0-10.ius.el6.noarch.rpm
    rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm


    下面加入凝视
    mirrorlist=http://dmirr.iuscommunity.org/mirrorlist?repo=ius-el6&arch=$basearch


    下面删除凝视
    #baseurl=http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/$basearch


    2、yum安装nginx

    yum install nginx  

    3、启动nginx

    chkconfig nginx on  
    service nginx start

    向webserver中放入測试文件:
    <html>  
    <head>  
    <title>Welcome to nginx!</title>  
    </head>  
    <body bgcolor="white" text="black">  
    <center><h1>Welcome to nginx! 192.168.232.132</h1></center>  
    </body>  
    </html>



    配置负载均衡server:

    vi /etc/nginx/nginx.conf

    内容例如以下:

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
        upstream test.miaohr.com {
    	server 192.168.232.132:80;
    	server 192.168.232.133:80;
        }
        
    
        server {   
            listen       80;   
            server_name  test.miaohr.com;   
            charset utf-8;   
            location / {   
                root   html;   
                index  index.html index.htm;   
                proxy_pass        http://test.miaohr.com;   
                proxy_set_header  X-Real-IP  $remote_addr;   
                client_max_body_size  100m;
            }   
      
      
            location ~ ^/(WEB-INF)/ {    
            deny all;    
            }    
      
            error_page   500 502 503 504  /50x.html;   
            location = /50x.html {   
                root   /var/www/html/;   
            }   
        }   
    }




    以下浏览器打开:192.168.232.134,假设132、133交替显示则表明试验成功。



    拓展:


    1、轮询(默认)
    每一个请求按时间顺序逐一分配到不同的后端server,假设后端serverdown掉。能自己主动剔除。



    2、weight
    指定轮询几率。weight和訪问比率成正比,用于后端server性能不均的情况。


    比如:
    upstream bakend {
    server 192.168.159.10 weight=10;
    server 192.168.159.11 weight=10;
    }

    3、ip_hash
    每一个请求按訪问ip的hash结果分配,这样每一个訪客固定訪问一个后端server,能够解决session的问题。


    比如:
    upstream resinserver{
    ip_hash;
    server 192.168.159.10:8080;
    server 192.168.159.11:8080;
    }


    4、fair(第三方)
    按后端server的响应时间来分配请求,响应时间短的优先分配。


    upstream resinserver{
    server server1;
    server server2;
    fair;
    }


    5、url_hash(第三方)

    按訪问url的hash结果来分配请求,使每一个url定向到同一个后端server。后端server为缓存时比較有效。
    例:在upstream中增加hash语句,server语句中不能写入weight等其它的參数,hash_method是使用的hash算法

    upstream resinserver{
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
    }

    tips:

    upstream resinserver{#定义负载均衡设备的Ip及设备状态
    ip_hash;
    server 127.0.0.1:8000 down;
    server 127.0.0.1:8080 weight=2;
    server 127.0.0.1:6801;
    server 127.0.0.1:6802 backup;
    }

    在须要使用负载均衡的server中添加
    proxy_pass http://resinserver/;


    每一个设备的状态设置为:
    1.down 表示单前的server临时不參与负载
    2.weight 默觉得1.weight越大。负载的权重就越大。


    3.max_fails :同意请求失败的次数默觉得1.当超过最大次数时。返回proxy_next_upstream 模块定义的错误
    4.fail_timeout:max_fails次失败后,暂停的时间。


    5.backup: 其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

    nginx支持同一时候设置多组的负载均衡。用来给不用的server来使用。



    client_body_in_file_only 设置为On 能够讲client post过来的数据记录到文件里用来做debug
    client_body_temp_path 设置记录文件的文件夹 能够设置最多3层文件夹
    location 对URL进行匹配.能够进行重定向或者进行新的代理 负载均衡

  • 相关阅读:
    UVALive 7509 Dome and Steles
    HDU 5884 Sort
    Gym 101194H Great Cells
    HDU 5451 Best Solver
    HDU 5883 The Best Path
    HDU 5875 Function
    卡特兰数
    UVa 11729 Commando War 突击战
    UVa 11292 The Dragon of Loowater 勇者斗恶龙
    Spark Scala Flink版本对应关系
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7015743.html
Copyright © 2011-2022 走看看