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

简介: 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
12月前
|
负载均衡 网络协议 算法
一文读懂什么是Nginx?它能否实现IM的负载均衡?
Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡方案,从某种意义上来讲,Nginx几乎是低成本、高负载Web服务端代名词。 如此深入人心的Nginx,很多人也想当然的认为,在IM或消息推送等场景下是否也能使用Nginx来解决负载均衡问题? 另外,即时通讯网的论坛和QQ群里也经常有人问起,Nginx是否能支持TCP、UDP、WebSocket的负载
314 4
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
399 59
|
9月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
285 21
|
9月前
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
278 14
|
9月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
365 11
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
1253 152
|
11月前
|
负载均衡 算法 应用服务中间件
Nginx长连接负载均衡详细说明以及案例
本文详细介绍了Nginx长连接负载均衡的配置与原理。长连接(Keepalive)允许客户端和服务器保持连接,减少建立和关闭连接的开销。Nginx支持多种负载均衡算法,如轮询、IP哈希等。通过在Nginx配置文件中使用`upstream`模块和`keepalive`指令,可以实现长连接负载均衡,从而提高系统的性能和响应速度。示例配置展示了如何设置后端服务器组、长连接数及HTTP/1.1协议,确保连接复用,降低延迟。
661 5
|
11月前
|
负载均衡 应用服务中间件 nginx
如何使用nginx实现负载均衡?
如何使用nginx实现负载均衡?
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
2065 56
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
889 9

热门文章

最新文章