详解如何通过nginx进行服务的负载均衡

 更新时间:2023年11月28日 08:50:50   作者:upton-nan  
负载均衡器可以将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理,本文主要为大家详细介绍了如何通过nginx进行服务的负载均衡,需要的可以参考下

简单介绍

随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障的出现。应用集群是将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据。负载均衡器可以将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理。

负载均衡器

我们可以通过nginx作为负载均衡器,实现负载均衡的功能

1.首先我们需要准备Linux系统,并启动nginx服务,并在服务器上启动两个java web的spring boot项目,其中一个web服务的端口是8080,另一个web服务的端口是8081,并将服务正常启动

2.在nginx中配置负载均衡器

打开nginx的配置文件nginx.conf并增加如下配置信息

    # upstream指令可以定义一组服务器
    upstream study-balance-server {	
        server 192.168.xxx.xxx:8080;
        server 192.168.xxx.xxx:8081;
    }
 
    server {
 
        location /study-balance/ {
            # 反向代理配置,将请求转发到指定的服务
            proxy_pass http://study-balance-server;
        }
 
    }

3.重新加载nginx配置文件

sudo ./nginx -t
 
 
sudo ./nginx -s reload

4.浏览器测试访问

访问查看web项目的日志信息或者其他标记可以区分当前项目访问的是那台端口的服务:http://服务器ip地址/study-balance/

本示例中通过访问时日志的打印时间顺序可以知道负载均衡已经正常启动

负载均衡的策略

1.nginx默认策略是轮询,详细信息如下

名称说明特点
轮询默认方式
weight权重方式根据权重分发请求,权重大的分配到请求的概率大
ip_hash依据ip分配方式根据客户端请求的IP地址计算hash值, 根据hash值来分发请求, 同一个IP发起的请求, 会发转发到同一个服务器上
least_conn依据最少连接方式哪个服务器当前处理的连接少, 请求优先转发到这台服务器
url_hash依据url分配方式根据客户端请求url的hash值,来分发请求, 同一个url请求, 会发转发到同一个服务器上
fair依据响应时间方式优先把请求分发给处理请求时间短的服务器

2.示例权重配置

# upstream指令可以定义一组服务器
upstream study-balance-server {	
    server 192.168.xxx.xxx:8080 weight=10;
    server 192.168.xxx.xxx:8081 weight=5;
}

配置的weight权重是相对的,在上述的配置中,效果就是在大数据量的请求下,最终8080接收的请求数是8081的两倍

3.示例依据ip分配方式

    # upstream指令可以定义一组服务器
    upstream study-balance-server {	
        ip_hash;
        server 192.168.xxx.xxx:8080;
        server 192.168.xxx.xxx:8081;
    }

指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题

以上就是详解如何通过nginx进行服务的负载均衡的详细内容,更多关于nginx负载均衡的资料请关注脚本之家其它相关文章!

相关文章

  • ConfigMap挂载与Subpath在Nginx容器中的应用小结

    ConfigMap挂载与Subpath在Nginx容器中的应用小结

    configmap可以通过ENV环境变量和文件两种方式挂载到容器中,修改configmap后容器中对应的ENV环境变量不会更新,将配置文件nginx.conf以configmap文件的方式挂载到容器中,本文介绍ConfigMap挂载与Subpath在Nginx容器中的应用小结,感兴趣的朋友一起看看吧
    2024-03-03
  • Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

    Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

    这篇文章主要介绍了Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Windows中将Nginx添加为服务的问题

    Windows中将Nginx添加为服务的问题

    这篇文章主要介绍了Windows中将Nginx添加为服务的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Nginx源码编译安装过程记录

    Nginx源码编译安装过程记录

    本文给大家分享Nginx源码编译安装过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • 基于nginx的静态网页部署的实现

    基于nginx的静态网页部署的实现

    这篇文章主要介绍了基于nginx的静态网页部署的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • nginx+keepalived 高可用主从配置详解

    nginx+keepalived 高可用主从配置详解

    这篇文章主要介绍了nginx+keepalived 高可用主从配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx 解决WebApi跨域二次请求以及Vue单页面的问题

    Nginx 解决WebApi跨域二次请求以及Vue单页面的问题

    下面小编就为大家分享一篇Nginx 解决WebApi跨域二次请求以及Vue单页面的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Nginx反向代理中出现502错误的解决步骤

    Nginx反向代理中出现502错误的解决步骤

    反向代理是一种服务器代理的方式,它代理了客户端的请求并将请求转发给后端服务器,然后将后端服务器的响应返回给客户端,但经常会遇到502错误,所以本文给大家介绍了Nginx反向代理中出现502错误的解决步骤,需要的朋友可以参考下
    2025-03-03
  • Nginx中常见header配置及修改

    Nginx中常见header配置及修改

    在nginx中,经常需要因为各种原因,修改header,本文就来介绍一下header配置及修改,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法

    配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法

    本文主要介绍了配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12

最新评论