nginx负载均衡

负载均衡架构:gslb(针对广域网的一种负载均衡架构)、slb(常见负载均衡架构,针对服务器)

负载均衡方式:四层负载(传输层)、七层负载(应用层)


七层负载均衡

使用模块:upstream

配置在http层

nginx监听三个不同端口,模拟三台nginx节点

server {
        listen 8001;
        server_name localhost;
        location / {
                root /soft/code/server1;
                index index.html;
        }
}
server {
        listen 8002;
        server_name localhost;
        location / {
                root /soft/code/server2;
                index index.html;
        }
}
server {
        listen 8003;
        server_name localhost;
        location / {
                root /soft/code/server3;
                index index.html;
        }
}

对应html文件参考



    
    server1


    

server1

配置负载均衡

#定义一个负载均衡列表,名字为test1。同时定义列表中需要代理的地址
upstream test1 {
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
}
server {
        listen 80;
        server_name www.ylw.com;
        location / {
                proxy_pass http://test1;#调用负载均衡列表
        }
}

访问测试(默认是按照次数轮询分配,第一次请求分发给server1,第二次请求分发给server2,第三次请求分发给server3)

负载均衡配置进阶

1、backup参数

upstream test1 {
        server 127.0.0.1:8001 backup;#8002,8003节点都无法使用时,才启动8001
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
}
server {
        listen 80;
        server_name www.ylw.com;
        location / {
                proxy_pass http://test1;
        }
}

2、down参数

upstream test1 {
        server 127.0.0.1:8001 down;#该节点不参与负载均衡
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
}
server {
        listen 80;
        server_name www.ylw.com;
        location / {
                proxy_pass http://test1;
        }
}

3、max_fails、fail_timeout

upstream test1 {
        server 127.0.0.1:8001 max_fails=1 fail_timeout=10s;#当请求失败一次的时候,就将它判定为不可用,同时十秒钟后再次尝试请求
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
}
server {
        listen 80;
        server_name www.ylw.com;
        location / {
                proxy_pass http://test1;
        }
}

4、nginx负载均衡分配策略

轮询:按照时间顺序逐一分配到不同的后端服务器

加权轮询:weight值越大,分配到的机率越高

ip_hash:每个请求访问ip的hash结果分配,这样每个ip固定访问一个后端服务器

url_hash:按照访问的url的hash结果来分配请求

least_conn:最少连接数,哪个机器连接上少就分发

hsah关键数值:根据自定义的key值分发

4.1、加权轮询

upstream test1 {
        server 127.0.0.1:8001 weight=5;#每七个请求中,会有五个请求分配给这台节点
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
}
server {
        listen 80;
        server_name www.ylw.com;
        location / {
                proxy_pass http://test1;
        }
}

4.2、ip_hash

upstream test1 {
        ip_hash;#使用ip_bash,可以解决会话信息不一致
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
}
server {
        listen 80;
        server_name www.ylw.com;
        location / {
                proxy_pass http://test1;
        }
}

4.3、url_hash

upstream test1 {
        hash $request_uri;
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
}
server {
        listen 80;
        server_name www.ylw.com;
        location / {
                proxy_pass http://test1;
        }
}

你可能感兴趣的:(nginx负载均衡)