四、Nginx配置文件-负载均衡

目录

一、负载均衡的作用

二、负载均衡状态

三、负载均衡的指令

1、upstream 指令

2、server指令

四、负载均衡几种方式

1、轮询(Round Robin 常用)

2、IP Hash (较少)

3、最少连接数(Least Connections 较少)

4、加权轮询(Weighted Round Robin 常用)

5、fair(较少)

6、backup(一般)


一、负载均衡的作用

  1. 解决服务器的高并发压力,提高应用程序的处理性能。
  2. 提供故障转移,实现高可用。
  3. 通过添加或减少服务器数量,增强网站的可扩展性。
  4. 在负载均衡器上进行过滤,可以提高系统的安全性。

二、负载均衡状态

状态

概述

down

当前的server暂时不参与负载均衡

backup

预留的备份服务器,当主服务器不可用时,将用来传递请求

max_fails

允许请求失败的次数

fail_timeout

经过max_fails失败后, 服务暂停时间

max_conns

限制最大的接收连接数

三、负载均衡的指令

1、upstream 指令

        该指令是用来定义一组服务器,它们可以是监听不同端口的服务器,并且也可以是同时监听TCP和Unix socket的服务器。服务器可以指定不同的权重,默认为1。

2、server指令

        该指令用来指定后端服务器的名称和一些参数,可以使用域名、IP、端口或者unix socket。与之前的server指令不一样。

四、负载均衡几种方式

1、轮询(Round Robin 常用)

        轮询是最常见的负载均衡方式,Nginx会按照请求的顺序依次将请求分发给后端服务器。例如,如果有3台后端服务器,Nginx会将第1个请求分发给服务器A,第2个请求分发给服务器B,第3个请求分发给服务器C,然后循环重复。适于无状态的请求。

配置示例:

upstream backend {
    server backend1;
    server backend2;
    server backend3;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

示例:
upstream backend{
    server 192.168.153.128:8081;
    server 192.168.153.128:8082;
    server 192.168.153.128:8083;
}
server {
    listen 8080;
    server_name localhost;
    location /{
        proxy_pass http://backend;
    }
}

   
示例2:对特定资源负载

upstream videobackend{
    server 192.168.153.128:9001;
    server 192.168.153.128:9002;
}
upstream filebackend{
    server 192.168.153.128:9003;
    server 192.168.153.128:9004;
}
server {
    listen 8084;
    server_name localhost;
    location /video/ {
        proxy_pass http://videobackend;
    }
    location /file/ {
        proxy_pass http://filebackend;
    }
}

示例3:对不同域名实现负载

upstream qwe{
    server 192.168.153.128:9001;
    server 192.168.153.128:9002;
}
upstream asd{
    server 192.168.153.128:9003;
    server 192.168.153.128:9004;
}
server {
    listen    8085;
    server_name www.qwe.cn;
    location / {
        proxy_pass http://qwe;
    }
}
server {
    listen    8086;
    server_name www.asd.cn;
    location / {
        proxy_pass http://asd;
    }
}

2、IP Hash (较少)

        IP Hash方式根据客户端的IP地址进行哈希计算,将同一个客户端的请求始终转发到同一台后端服务器上。这样可以保证同一个客户端的请求都由同一台服务器处理,适合于需要保持会话的应用场景。

配置示例:

upstream backend {
    ip_hash;
    server backend1;
    server backend2;
    server backend3;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

3、最少连接数(Least Connections 较少)

        最少连接数方式会将请求分发给当前连接数最少的后端服务器,以达到负载均衡的效果。这种方式适用于后端服务器性能不一致的情况。

配置示例:

upstream backend {
    least_conn;
    server backend1;
    server backend2;
    server backend3;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

4、加权轮询(Weighted Round Robin 常用)

        加权轮询方式可以根据后端服务器的性能配置不同的权重,来调整请求的分发比例。权重越高的服务器会接收到更多的请求。

配置示例:

upstream backend {
    server backend1 weight=3;
    server backend2 weight=2;
    server backend3 weight=1;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

示例:
upstream backend{
    server 192.168.153.128:9001 weight=7;
    server 192.168.153.128:9002 weight=5;
    server 192.168.153.128:9003 weight=3;
}
server {
    listen 8083;
    server_name localhost;
    location /{
        proxy_pass http://backend;
    }
}

5、fair(较少)

upstream backend {
    fair;
    server backend1 weight=3;
    server backend2 weight=2;
    server backend3 weight=1;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

        fair模块是比上面几个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块;再次不做演示

6、backup(一般)

        backup关键字用于定义备份服务器。当主服务器宕机或无法处理请求时,备份服务器将接手处理请求。

upstream backend {
    server backend1;
    server backend2 backup;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

当 backend1 处于在线状态并且能够处理请求时,Nginx将只将请求发送到backend1。
只有当backend1 宕机或者由于某些原因无法处理请求时,Nginx才会将请求发送到backend2。
这种配置通常用于高可用性部署,确保在主服务器宕机时,有一个备用服务器可以接手处理请求,从而减少服务中断的影响。

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

繁华依在

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

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

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

打赏作者

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

抵扣说明:

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

余额充值