Nginx实现负载均衡(整合SpringBoot小demo)

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: Nginx实现负载均衡(整合SpringBoot小demo)

d7199da201a2abf76c9fb0f7790a198b.jpg

1.前言

要理解负载均衡,必须先搞清楚正向代理和反向代理。

注:

正向代理,代理的是用户。

反向代理,代理的是服务器。


2.什么是负载均衡

当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

负载均衡是用反向代理的原理实现的。


3.准备工作

结合本文场景,需要安装Nginx和Java环境(运行SpringBoot项目)


3.1 关于Mac系统安装Nginx3.1 关于Mac系统安装

本次用的是 homebrew 安装的

大家也可前去官网下载


3.2 测试项目说明3

由于只是测试, SpringBoot只是映射了根路径,端口分别是 10001 和 10002 ,分别返回 demo1 和 demo2 字符串作为区分。


4.Nginx负载均衡的集中方式介绍

4.1 轮询4.1 轮询4.1 轮询

轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。

upstream  codingce-nginx {
       server    localhost:10001;
       server    localhost:10002;
}


44.2 权重.2 权重

指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍。

upstream  codingce-nginx {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}


44.3 iphash.3 iphash

每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。

upstream  codingce-nginx {
       ip_hash; 
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}


44.4 最少连接.4 最少连接

将请求分配到连接数最少的服务上。

upstream  codingce-nginx {
       least_conn;
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}


44.5 fair(第三方).5 fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream  codingce-nginx {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
       fair;  
}


44.6 url_hash(第三方).6 url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream  codingce-nginx {
       server localhost:10001;
       server localhost:10002;
       hash $request_uri;
       hash_method crc32;   
}


5.测试(以轮询为例子)

访问http://localhost:10000

a4118d3f528eb290c9cb4c94d22d2a96.png

c2188e9f0e20b70304dd9157bb31926b.png

轮询方式,刷新后依次切换后端服

如果要修改负载均衡算法修改对应upstream模块即可。

此次nginx路径展示

主配置与自定义配置

注意:下方自定义配置文件是自定义配置文件目录 vhost/

轮询配置 在nginx.conf文件中配置的

upstream codingce-nginx {
       server localhost:10001;
       server localhost:10002;
}


ecdf2bc33b0537c3f16c7c68709a2f95.png

进入自定义配置文件夹配置自定义配置

williamma@WilliamdeMacBook-Pro nginx % cd vhost 
williamma@WilliamdeMacBook-Pro vhost % ll
total 16
drwxr-xr-x   4 williamma  admin  128  5 13 15:17 ./
drwxr-xr-x  19 williamma  admin  608  5 13 15:28 ../
-rw-r--r--   1 williamma  admin  549  4 16 16:17 gulimall.conf
-rw-r--r--   1 williamma  admin  167  5 13 15:17 mytest.conf
williamma@WilliamdeMacBook-Pro vhost % vim mytest.conf

配置文件展示

server {
    listen       10000;
    server_name  localhost;
    location / {
        #用在此处
        proxy_pass http://codingce-nginx;
        proxy_redirect default;
    }
}


测试SpringBoot项目地址

[Github]:https://github.com/xzMhehe/codingce-java

[Gitee]”https://gitee.com/codingce/codingce-java

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3月前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
148 59
|
25天前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
79 9
|
2月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
117 5
|
1月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
64 3
|
3月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
197 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
2月前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
97 3
|
3月前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
3月前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
334 7
|
3月前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
下一篇
开通oss服务