nginx 负载均衡

一、七层负载均衡

 在反向代理的基础上,把用户请求根据指定算法分发到一组 upstream虚拟服务池

后台启动两个网站 5000    6001

upstream 后的名字 www.test.com 是随便起的,最好是见名知意

weigth 表示访问到该网址的权重,数字越大访问到的几率越大

配置后重启

 upstream www.test.com{
        server 127.0.0.1:5000 weight=1;
        server 127.0.0.1:6001 weight=1;
    }
 location /{
            proxy_pass http://www.test.com;
        }

负载状态

#down标记永久不可用       
server 127.0.0.1:5000 down;
#backup 标记为备份服务器,主服务器不可用时,启用
server 127.0.0.1:6001 backup;
#max_fails=3 设置允许请求代理失败的次数,默认为1
#fail_timeout=15 设置经过max_fails失败后,服务暂停的时间,默认10秒
server 127.0.0.1:7001 max_fails=3 fail_timeout=15;

负载均衡策略

1 轮询  默认方式

2 weight  权重

不设置,默认为1

        server 127.0.0.1:5000 weight=2;
        server 127.0.0.1:6001 weight=5;

3 ip_hash 依据ip分配方式

把同一个ip分配到同一个后端服务器,可以解决session问题等

upstream xx{
ip_hash;
server 127.0.0.1:5000;
server 127.0.0.1:6001;
}

 缺点是负载均衡能力会下降,所以session一般用redis

4 least_conn 依据最少连接方式

upstream xx{
least_conn;
server 127.0.0.1:5000;
server 127.0.0.1:6001;
}

 适合请求时间长短不一造成服务器过载的情况

5 url_hash  依据url分配方式

 需要配合缓存命中

upstream xx{
hash &request_uri;
server 127.0.0.1:5000;
server 127.0.0.1:6001;
}

6 fair 依据响应时间方式

 可以根据页面大小,加载时间长短只能进行负载

需要添加upstream-fair模块

 

二、四层负载均衡

 四层比七层效率高,四层不识别域名

 LVS  HAProxy F5 nginx

添加模块 --with-stream

stream{
upstream xxx{
        server 192.168.200.1:6001;
        server 192.168.200.1:6002;
    }
server{
    listen 81;
    proxy_pass xxx;
    }
} 

其他负载均衡

 二层负载均衡

基于mac地址

三层负载均衡

网络层采用虚拟ip

原文地址:https://www.cnblogs.com/buchizaodian/p/15580172.html