Nginx负载均衡

负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照事先设定分配算法分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。

均衡负载能够平均分配客户请求到服务器列阵,籍此提供快速获取重要数据,解决大量并发访问服务问题。

  1. upstream块

    upstream name {...}
    配置块 http
    upstream块定义一个上游服务器的集群,便于反向代理中的proxy_pass使用
    
    upstream mynet{
        server www.wopai1.com;
        server www.wopai2.com;
        server www.wopai3.com;
    }
    server {
        location /{
            proxy_pass http://mynet;
        }
    }
    
  2. server

    server name [paramenters]
    配置块upstream
    server配置项指定了一台上游服务器的名字,可以是域名 IP地址端口 UNIX句柄
    weight= number;设置向这台服务器转发的权重,默认为1
    max_fails=number;该选项域fail_timeout配合使用
            指在fail_timeout时间段内如果转发上游失败超过number次就认为当前的fail_timeout时间内
            这台服务器不可用,max_fails默认为1 如果设置为0 表示不检查失败次数
    fail_timeout=time; fail_timeout表示该时间内转发多少次失败后就认为上游不可用.默认10s
    down    表示上游服务器永久下线,只能在ip_hash配置时才有效
    backup  在ip_hash配置时无效.只有所有非备份机都失败,才向上游备份服务器转发请求.
    upstream mynet{
        server www.wopai1.com weight=5;
        server www.wopai2.com:8081 max_fails=3 fail_timeout=300s;
        server www.wopai2.com down;
    }
    
  3. ip_hash

    配置块 upstream
    希望来自某一个用户的请求始终落在固定的一台服务器上进行处理.
    根据客户端的IP散列计算出一个key,将key按照upstream集群中的上游服务器进行取模,求得的值对应的主机接收转发请求.
    ip_hash不可以与weight同时使用
    如果upstream配置中有一台服务器暂时不可用,不能直接删除该配置,而应该使用down标识.
    upstream mynet{
        ip_hash;
        server www.wowpai1.top;
        server www.wowpai2.top;  
        server www.wowpai3.top down;
    }
    

例子,服务器负载均衡基本配置,nginx中可以进行负载均衡的相关设置:

        upstream my.net{    #my.net是自定义的命名 在server结构中引用即可

        #代理服务器为 两台机器192.168.22.136 192.168.22.147做负载均衡操作 
        #两台机器上 可以跑apache负载功能更为强大的网页相关任务

        #max_fails 表示尝试出错最大次数 即可认为该服务器 在fail_timeout时间内不可用
        # server servername:port   servername可以写主机名 或者点分式IP
        server 192.168.22.136:80 max_fails=1 fail_timeout=300s;
        server 192.168.22.147:80 max_fails=1 fail_timeout=300s;  
        }


        server {
        listen       80;
        server_name  localhost; 
        location / {
            #upstream 块名
            proxy_pass http://my.net;
            root   html;
            index  index.html index.htm;
        }
上一篇:Nginx反向代理400错误


下一篇:Nginx负载均衡