nginx-反向代理/负载均衡

反向代理(Reverse Proxy)
定义:反向代理是位于服务器端的代理服务器,它接收来自客户端的请求,然后将这些请求转发给后端的多个服务器,最终返回给客户端。客户端不直接与后端服务器通信,而是与反向代理服务器通信。
在这里插入图片描述

作用:反向代理可以用于隐藏真实的服务器信息,提供负载均衡、缓存加速、安全策略等功能。

配置:在 Nginx 中配置反向代理通常涉及配置一个 server 块,将请求的地址指向后端服务器,并可以通过多种方式进行负载均衡。

负载均衡(Load Balancing):
定义:负载均衡是一种将请求分发到多个服务器上的技术,以平衡服务器的负载,提高系统的性能、可用性和可扩展性。

作用:通过在多个服务器之间分发请求,负载均衡可以避免单点故障,并确保系统在高负载时仍能提供稳定的服务。

算法:Nginx 支持多种负载均衡算法,包括轮询(round-robin)、最小连接数(least connections)、IP 哈希(ip-hash)等。每种算法都有不同的特点,适用于不同的场景。

健康检查:Nginx 可以配置健康检查机制,定期检查后端服务器的健康状态,并根据检查结果调整请求的分发策略。

在 Nginx 中,反向代理和负载均衡通常结合使用,通过反向代理将请求转发给后端的负载均衡器,再由负载均衡器将请求分发给多个后端服务器,从而实现高性能、高可用性的服务架构。

Nginx中常用的6种负载均衡策略

https://mp.weixin.qq.com/s/E4yXg6YFBkXIZwZEPll5bg?poc_token=HMx1EmajMuDkn_ApzFxnqkZrFl_Tze-gaNZeGsBf

1.轮询(Round Robin)

将请求按顺序依次分配给后端服务器,默认的负载均衡策略。

如下图所示:
在这里插入图片描述

图片

假设有三台后端服务器:A、B、C。

请求依次按顺序分配给后端服务器:A → B → C → A → B → C → …

配置如下:

http {
    upstream backend {
        server 192.168.0.1;
        server 192.168.0.2;
        server 192.168.0.3;
    }

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

2.IP 哈希(IP Hash)

根据客户端的IP地址将请求分配给后端服务器,相同IP的客户端总是被分配到同一台服务器上,有利于保持会话信息。

如下图所示:

图片

配置如下:

http {
    upstream backend {
        ip_hash;
        server 192.168.0.1;
        server 192.168.0.2;
        server 192.168.0.3;
    }

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

3.最少连接(Least Connections)

将请求分配给当前连接数最少的后端服务器,通过实时监测后端服务器的连接数来决定请求的分配。

如下图所示:

图片

假设有三台后端服务器:A、B、C

当前连接数为:A(5)、B(3)、C(2)

新的请求将被分配给连接数最少的服务器C

配置如下:

http {
    upstream backend {
        least_conn;
        server 192.168.0.1;
        server 192.168.0.2;
        server 192.168.0.3;
    }

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

4.加权轮询(Weighted Round Robin)

为每个后端服务器分配一个权重值,根据权重值比例分配请求,权重越高的服务器分配到的请求数量越多。

如下图所示:

图片

假设有三台后端服务器:A(权重2)、B(权重1)、C(权重3)。

请求将按照权重比例分配给后端服务器:A(2次)→ B(1次)→ C(3次)→ A(2次)→ C(3次)→ …

配置如下:

http {
    upstream backend {
        server 192.168.0.1 weight=2;
        server 192.168.0.2 weight=1;
        server 192.168.0.3 weight=3;
    }

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

5.加权最少连接(Weighted Least Connections)

结合了加权和最少连接策略,连接数越少且权重越高的服务器将获得更多的请求。

配置如下:

http {
    upstream backend {
        least_conn;
        server 192.168.0.1 weight=2;
        server 192.168.0.2 weight=3;
    }

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

6.随机负载均衡策略

随机负载均衡策略,就是每次请求到来时从一组可用的后端服务器中,随机选择一个来处理请求。

实现简单,不需要复杂的算法或状态维护,通常只需要一个随机数生成器即可。

如下图所示:

图片

随机负载均衡策略适用于后端服务器之间性能相近,请求没有特定顺序要求的场景,然而,需要注意的是,随机性会带来的不确定性,可能会导致负载分布不均匀。

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值