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文件参考

<html>
<head>
    <meta charset="utf-8">
    <title>server1</title>
</head>
<body style="background-color:yellow;">
    <h1>server1</h1>
</body>
</html>

配置负载均衡

#定义一个负载均衡列表,名字为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;
        }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容