Nginx 配置负载均衡 学习笔记

Nginx配置三台tomcat集群

nginx的负载均衡,配置上游服务器upstream模块即可。

当前我们有如下三台服务器已配置好tommcat:

192.168.1.173:8080
192.168.1.174:8080
192.168.1.175:8080

然后去nginx.conf配置文件中的http模块中添加如下配置:

upstream tomcats {
    server 192.168.1.173:8080;
    server 192.168.1.174:8080;
    server 192.168.1.175:8080;
}
server {
    listen 80;
    server_name www.tomcats.com;
    
    location /{
        proxy_pass httpd://tomcat;
    }
}

其中在upstream模块添加上游服务器,在server的location 中使用proxy_pass 命令指向此代理转发到upstream模块中的server。

Nginx配置负载均衡权重

在如上第一节中的upstream模块配置其实就是一个轮询模式的负载均衡配置。我们可以对server加上权重配置以区分。

upstream tomcats {
    server 192.168.1.173:8080 weight = 1;
    server 192.168.1.174:8080 weight = 2;
    server 192.168.1.175:8080 weight = 5;
}
server {
    listen 80;
    server_name www.tomcats.com;
    
    location /{
        proxy_pass httpd://tomcat;
    }
}

Upstream 指令参数

max_conns

限制配置的上游服务器的最大连接量。

默认值为0,即不限制。

upstream tomcats {
    server 192.168.1.173:8080 max_conns = 2;
    server 192.168.1.174:8080 max_conns = 2;
    server 192.168.1.175:8080 max_conns = 4;
}
slow_start

注意,只有商业版的nginx可以使用

使得服务器缓慢加入集群,因为集群缓慢启动,有些服务需要逐步启动,流量接入缓慢增加

# 语法: slow_start = time

upstream tomcats {
    server 192.168.1.173:8080 weight = 1;
    server 192.168.1.174:8080 weight = 2 slow_start = 60s;
    server 192.168.1.175:8080 weight = 5;
}
down

使得此服务器访问不了

upstream tomcats {
    server 192.168.1.173:8080 weight = 1 down;
    server 192.168.1.174:8080 weight = 2 slow_start = 60s;
    server 192.168.1.175:8080 weight = 5;
}
backup

标记此台server为备用的机器,当其他所有的server挂掉之后才会使用此机器

upstream tomcats {
    server 192.168.1.173:8080 weight = 1 backup;
    server 192.168.1.174:8080 weight = 2 slow_start = 60s;
    server 192.168.1.175:8080 weight = 5;
}
max_fails

最大失败的重试次数

fail_timeout

失败后多久再次请求,会按照max_fails循环此重试操作

默认值为10s

upstream tomcats {
    server 192.168.1.173:8080 weight = 1 backup;
    server 192.168.1.174:8080 weight = 2 slow_start = 60s;
    server 192.168.1.175:8080 weight = 5 max_fails = 2 fail_timeout = 8s;
}

keepalive

控制常连接的数量

upstream tomcats {
    server 192.168.1.173:8080 weight = 1 backup;
    server 192.168.1.174:8080 weight = 2 slow_start = 60s;
    server 192.168.1.175:8080 weight = 5 max_fails = 2 fail_timeout = 8s;
    
    keepalive 32;
}

ip_hash

将不同的ip 通过hash到不同的server

upstream tomcats {
    ip_hash;

    server 192.168.1.173:8080 weight = 1;
    server 192.168.1.174:8080 weight = 2;
    server 192.168.1.175:8080 weight = 5;
}

算法原理:

将ip地址的前24位进行hash ,如192.168.7.1, hash会使用192.168.1计算。

注意:

如果添加了ip_hash,那么就不要轻易的移除server,最好使用down参数,这样ip_hash是不会变化的,用户的缓存等就不会发生变化。

一致性哈希算法:

当有一个服务器down后,其hash计算的参数会变化,为了不影响已哈希映射的连接和服务器上的缓存等,这里引入一致性哈希算法:

  • 将哈希的结果当做一个闭环
  • 服务器映射到环上的点
  • 用户的ip映射到环上点,然后顺时针找到第一个服务器即可

在这里插入图片描述

url_hash

原理:将url哈希取模服务器节点数,映射到对应的服务器。

hash(url) % node_counts = index

例子:

upstream tomcats {
    hash $request_uri; # 通过访问的uri来哈希

    server 192.168.1.173:8080 weight = 1;
    server 192.168.1.174:8080 weight = 2;
    server 192.168.1.175:8080 weight = 5;
}

least_conn

最少连接数的负载均衡算法:根据谁最少连接数就分配给谁

upstream tomcats {
    least_conn;

    server 192.168.1.173:8080 weight = 1;
    server 192.168.1.174:8080 weight = 2;
    server 192.168.1.175:8080 weight = 5;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlwaysDayOne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值