Nginx配置负载均衡

前言

一、如何配置nginx负载均衡?

二、使用步骤

1.轮询 

2.最少连接 

3. ip hash 

总结


前言

给客户独立部署项目,为了保证稳定性,需要将服务端及接口服务配置多活,使用nginx配置负载均衡


一、如何配置nginx负载均衡?

nginx内置负载均衡策略主要分为三大类,分别是 轮询、最少连接 和 ip hash

修改nginx配置文件

二、使用步骤

1.轮询 

以循环方式分发对应用服务器的请求,将请求平均分发到每台服务器上。

在示例中,dxservers 是一个自定义的名称,用于标识负载均衡的服务器组。

1.1 普通权重轮询方式代码如下(示例):

cd /usr/local/nginx/conf/conf.d

sudo vi nginx.conf

# 添加如下内容:
    upstream dxservers{
        server  ip1:端口;
        server  ip2:端口;
     }

# 修改server
location / {
    #转发到负载服务上
    proxy_pass http://dxservers/dx/;
        proxy_cookie_path /dx/ /;
        index index.html index.htm;
    }


1.2 权重轮询方式

如果在 upstream 中配置的server参数后追加 weight 配置,则会根据配置的权重进行请求分发。此策略可以与least_conn和ip_hash结合使用,适合服务器的硬件配置差别比较大的情况。

cd /usr/local/nginx/conf/conf.d

sudo vi nginx.conf

# 添加如下内容:
    upstream dxservers{
        server  ip1:端口 weight=1;# 该台服务器接受1/3的请求量
        server  ip2:端口 weight=2;# 该台服务器接受2/3的请求量
     }

# 修改server
location / {
    #转发到负载服务上
    proxy_pass http://dxservers/dx/;
        proxy_cookie_path /dx/ /;
        index index.html index.htm;
    }


2.最少连接 

轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果,适合请求处理时间长短不一造成服务器过载的情况。

代码如下(示例):

cd /usr/local/nginx/conf/conf.d

sudo vi nginx.conf

# 添加如下内容:
    upstream dxservers{
        least_conn; # 把请求分派给连接数最少的服务器
        server  ip1:端口;
        server  ip2:端口;
     }

# 修改server
location / {
    #转发到负载服务上
    proxy_pass http://dxservers/dx/;
        proxy_cookie_path /dx/ /;
        index index.html index.htm;
    }


3. ip hash 

这个方法确保了相同的客户端的请求一直发送到相同的服务器,这样每个访客都固定访问一个后端服务器。如用户需要分片上传文件到服务器下,然后再由服务器将分片合并,这时如果用户的请求到达了不同的服务器,那么分片将存储于不同的服务器目录中,导致无法将分片合并,该场景则需要使用ip hash策略。

代码如下(示例):

cd /usr/local/nginx/conf/conf.d

sudo vi nginx.conf

# 添加如下内容:
    upstream dxservers{
        ip_hash; ## 保证每个请求固定访问一个后端服务器
        server  ip1:端口;
        server  ip2:端口;
     }

# 修改server
location / {
    #转发到负载服务上
    proxy_pass http://dxservers/dx/;
        proxy_cookie_path /dx/ /;
        index index.html index.htm;
    }


在 location 块中,可以指定需要进行负载均衡的请求路径,并使用 proxy_pass 指令将请求转发给 upstream 中定义的服务器组。

Nginx负载均衡原理解析
Nginx 实现负载均衡的原理是将进入的客户端请求分发到多个后端服务器,以达到请求的平衡分配和提高整体系统性能的目的。下面是 Nginx 实现负载均衡的工作原理:

  • 客户端发送请求:客户端发送请求到Nginx服务器,请求的URL通常是Nginx服务器的地址。
  • Nginx接收请求:Nginx服务器接收到客户端的请求。
  • Nginx进行负载均衡:Nginx使用预先定义的负载均衡算法,通过将请求分发到一个或多个后端服务器来实现负载均衡。具体步骤如下:
  1. Nginx根据配置的负载均衡策略(如轮询、IP哈希、最小连接数等)选择一个后端服务器。
  2. 根据选择的算法,Nginx将客户端请求转发给被选中的后端服务器。
  3. Nginx会维护与后端服务器之间的连接池,以提高效率和性能。
  • 后端服务器处理请求:被选中的后端服务器接收到Nginx转发的请求后,根据请求处理业务逻辑。后端服务器将响应返回给Nginx。
  • Nginx返回响应给客户端:Nginx将后端服务器返回的响应经过处理后,返回给客户端。

通过这种方式,Nginx能够在多个后端服务器之间分发请求,实现负载均衡。客户端通过与Nginx通信,不需要直接与后端服务器进行交互,使整个系统更高效、更可靠。

Nginx的负载均衡功能主要基于其反向代理的特性。Nginx同时也具备高并发处理、请求缓存、静态资源服务等特性,使得它成为一个非常受欢迎的负载均衡解决方案。


总结

这个只是使用nginx配置实现负载的一个方法,nginx还提供了几种不同算法的负载均衡策略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值