Nginx+SpringBoot实现负载均衡的示例

Nginx+SpringBoot实现负载均衡的示例,第1张

Nginx+SpringBoot实现负载均衡的示例

本文详细介绍了nginx优雅的负载均衡,有助于大家更好地理解和应用Nginx。有兴趣的盆友可以掌握一下。

负载平衡的详细介绍

在详细介绍Nginx的负载均衡之前,先简单描述一下负载均衡的分类。重点是硬件配置负载均衡和手机软件负载均衡。硬件配置负载均衡是一种与专业手机软硬件配置紧密结合的机械设备。机械设备之乡会展示详细完善的解决方案,比如F5,在数据可靠性和安全系数上非常可靠,但是工程造价会比手机软件贵一些。手机软件负载均衡是一个消息队列分发系统,以手机软件Nginx为主。

简单来说,负载均衡就是把很多请求分离出来,分配给不同的服务器去解决。比如我的三台服务器分别是A、B、C。然后应用Nginx进行负载均衡和轮询对策。此时,如果收到9个请求,这9个请求将被对称地分配给A、B、Cf服务器,每个服务器解决3个请求。在这种情况下,我们可以利用几个设备集群的特性来降低单个服务器的工作压力。

Nginx负载平衡示例图:

负载平衡对策

Ngx开源系统应用了四种负载均衡方法,NGINXPlus改进了两种方法。

1。循环赛:

所有请求都被轮询和推送,并且设置了默认分配方法。

nginx.conf配置示例:

upstreamxuwujing{ serverwww.panchengming.com; serverwww.panchengming2.com; }

注:以上网站域名也可以用IP代替。

2。最少连接数:

向服务器发送请求,至少要有主题活动线程数,还要考虑服务器权重值。

nginx.conf配置示例:

upstreamxuwujing{ least_conn; serverwww.panchengming.com; serverwww.panchengming2.com; }

3。IP哈希:

请求的服务器由远程服务器的IP地址决定。在这种情况下,应该使用IPv4详细地址或所有IPv6详细地址的前三个字节来计算哈希值。这种方法确保来自相同详细地址的请求到达相同的服务器,除非该服务器不可用。

upstreamxuwujing{ ip_hash; serverwww.panchengming.com; serverwww.panchengming2.com; }

4。通用哈希:

请求发送到的服务器由客户定义的密钥决定,该密钥可以是文字字符串、参数或组件的数组。

upstreamxuwujing{ hash$request_uriconsistent; serverwww.panchengming.com; serverwww.panchengming2.com; }

5。最短时间(仅限NGINXPlus)

对于每个请求,NGINXPlus都会选择平均延迟最小、活动线程数最少的服务器,其中最小平均延迟是根据包括least_time命令在内的以下主要参数计算的:

  • 头:从服务器接收第一个字节数的时间。
  • Last_byte:从服务器收到详细响应的时间。
  • Last_byteinflight:从服务器接收详细响应的时间。
  • upstreamxuwujing{ least_timeheader; serverwww.panchengming.com; serverwww.panchengming2.com; }

    6。随机:

    每个请求将被发送到任何选定的服务器。如果指定两个主要参数,首先NGINX根据权重值随机选择两个服务器,然后以特定的方式选择其中一个。

  • Least_conn:至少是主题活动加入的总数。
  • Least_time=header(NGINXPlus):从服务器接收响应头文本的最小平均时间($upstream_header_time)。
  • Least_time=last_byte(NGINXPlus):从服务器接收详细响应的最小平均时间($upstream_response_time)。
  • upstreamxuwujing{ randomtwoleast_time=last_byte; serverwww.panchengming.com; serverwww.panchengming2.com; }

    NginxSpringBoot完成负载均衡

    自然环境提前准备

  • 依赖JDK1.8以上的版本号;
  • 依托Nginx的自然环境;
  • 这里的新项目使用了我以前的springboot项目之一。SpringBoot新项目的详细地址是https://github.com/Xuwujing/springboot-study/tree/master/springboot-百里香叶。

    首先我们下载这个新项目,键入:mvncleanpackage将新项目打包到一个jar文件中,然后把application.properties和这个jar新项目放入一个文件夹名中,然后复制文件夹名(这里为了更清楚,不复制端口号重新开始也可以),改变复制的文件夹名application.properties的端口号,比如8086。

    Nginx配置

    查找nginx的配置文档nginx.conf,在nginx/conf/nginx.conf文件的目录下,然后更改配置,添加如下配置:

    upstreampancm{ server127.0.0.1:8085; server127.0.0.1:8086; }
  • 上游pancm:定义一个名字,做就行;
  • 服务器:端口号或网站域名;
  • 如果不想用循环赛,可以换成别的。

    然后向服务器添加/更改以下配置:

    server{ listen80; server_name127.0.0.1; location/{ roothtml; proxy_passhttp://pancm; proxy_connect_timeout三秒; proxy_read_timeout5s; proxy_send_timeout三秒; indexindex.htmlindex.htm; } error_page500502503504/50x.html; location=/50x.html{ roothtml; } }

    配置表明:

  • Server:云虚拟主机的名称,一个http可以配置几个服务器;
  • 监听:nginx默认设置的端口号;
  • server_name:nginx服务项目的详细地址,可以申请网站的域名。其中有几个是用空隔开的。
  • Proxy_pass:代理通道,一般在上游后面配置名字完成负载均衡,可以立即配置ip自动跳转;
  • nginx.conf的详细配置:

    events{ worker_connections1024; } error_lognginx-error.loginfo; http{ includemime.types; default_typeapplication/octet-stream; sendfileon; keepalive_timeout65; upstreampancm{ server127.0.0.1:8085; server127.0.0.1:8086; } server{ listen80; server_name127.0.0.1; location/{ roothtml; proxy_passhttp://pancm; proxy_connect_timeout三秒; proxy_read_timeout5s; proxy_send_timeout三秒; indexindex.htmlindex.htm; } error_page500502503504/50x.html; location=/50x.html{ roothtml; } } }

    负载平衡检测

    Nginx配置好后,大家启动Nginx。
    Linuxtype/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf,如果已经启动,可以应用/usr/local/nginx/sbin/nginx-sreload命令热加载配置文件。Windows立即点击nginx文件目录中的Nginx.exe或cmd *** 作startnginx来启动。如果启动了,仍然可以使用nginx-sreload开始热加载。

    Nginx推出后,大家很快就开始了免费下载的springboot,并复制了端口号改变的新项目。类型:Java-jarSpringBoot-JSP-百里香叶.jar开始。

    成功启动后,我们可以在电脑浏览器中输入服务项目的ip进行浏览。

    示例图:

    注:我这里测试用的是windows系统软件,具体linux也一样。

    然后我们再进行实际 *** 作,查询控制面板日志!

    从示例图中,我们发出了四个页面更新请求,最后将它们平均分成两个服务项。根据检测结果,我们完成了负载均衡。

    在这里,我还是说Nginx应用中的常见问题。在学习、训练和测试的情况下,应用nginx默认设置的端口号来完成负载均衡,一般是没有问题的。但是在我们新项目应用的情况下,尤其是有登录界面,端口号不是80的情况下,登录页面无法自动跳转。如果进行调整,就会像net::ERR_NAME_NOT_RESOLVED一样不正确。原因是nginx的默认端口号是80,所以默认设置会自动跳转。所以在这种情况下,proxy_set_headerHost$host:port的配置必须添加在location下,port和listen的端口号要一致。

    以上是NginxSpringBoot负载均衡例子的详细内容。关于Nginx负载均衡的资料很多,请关注其他相关文章!

    欢迎分享,转载请注明来源:内存溢出

    原文地址:https://54852.com/zz/774252.html

    (0)
    打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
    上一篇 2022-05-03
    下一篇2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

      保存