小知识:超级详细的nginx负载均衡配置

前言

nginx作为一款企业级的代理服务器,不管是大中小各类生产项目中,均有广泛的使用,尤其是在前后端分离的项目中,nginx作为路由转发的功能是非常常用的;

在一些流量比较大的项目中,为了应对高并发的场景,后端服务往往采用集群部署,这时候,就需要使用到nginx的负载均衡功能;

实验准备

nginx服务器; 两个后端服务;

实验步骤

1、启动两个后端服务

这里准备了两个springboot工程,编写了2个测试使用的接口,以端口号区分

?
1
2
3
4
5
6
7
8
@RestController
@RequestMapping(“/api”)
public class NginxController1 {
@GetMapping
public String test1(){
return “success test1 8082”;
}
}
?
1
2
3
4
5
6
7
8
@RestController
@RequestMapping(“/api”)
public class NginxController1 {
@GetMapping
public String test1(){
return “success test1 8081”;
}
}

启动之后,浏览器分别访问一下,确保服务是正常的

%小知识:超级详细的nginx负载均衡配置-猿站网-插图

%小知识:超级详细的nginx负载均衡配置-1猿站网-插图

2、nginx.conf进行配置

1)在server中添加一个location,并且配置 proxy_pass

?
1
2
3
4
location / {
#转发到负载服务上
proxy_pass http://webservers/api/;
}

2)配置upstream,指向后端服务

?
1
2
3
4
upstream webservers{
server  192.168.9.134:8081;
server  192.168.9.134:8082;
}

完整的配置参考如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#user  nobody;
worker_processes  1;
events {
worker_connections  1024;
}
http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;
upstream webservers{
server  192.168.9.134:8081 weight=8;
server  192.168.9.134:8082 weight=2;
}
server {
listen       80;
server_name  localhost;
#location / {
#   root   html;
#  index  index.html index.htm;
#}
location / {
#转发到负载服务上
proxy_pass http://webservers/api/;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
}

修改完毕后,启动nginx,或者重新加载配置

?
1
nginx.exe -s reload

浏览器访问:localhost:80,多刷几次,下面两个展示的界面轮询的出现

%小知识:超级详细的nginx负载均衡配置-2猿站网-插图

%小知识:超级详细的nginx负载均衡配置-3猿站网-插图

3、负载均衡配置说明

默认情况下,直接按照上面的配置后,如果后端有多个服务,采用的是轮询策略;

常用的可选配置包括:

weight 多台机器,可以配置权重值,权重高的服务将会优先被访问

down 某个服务配置down之后,这台服务将不会被访问

backup 配置了这个参数后,除非其他的服务都挂掉了,否则这台服务将不会被访问到

以weight 为例做简单的说明,在上面的配置中,补充weight参数

?
1
2
3
4
upstream webservers{
server  192.168.9.134:8081 weight=8;
server  192.168.9.134:8082 weight=2;
}

重新加载配置,按照上面的测试步骤再次刷新页面,这时候可以发现,8081对于的这个服务将会被更多的访问到;

其他负载均衡配置策略

默认情况下,nginx采用的是轮询策略,nginx还提供了其他几种常用的负载均衡配置

1、ip_hash

每个请求按访问IP的hash结果进行分配,这样每个访客就可以固定访问一个后端服务,一定程度上可以解决session问题;

?
1
upstream webservers {<!–{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E–> ip_hash; server 192.168.9.134:8081; server 192.168.9.134:8082;}

2、weight

weight代表权重,默认为1,权重越高,被分配的客户端请求就会越多

?
1
2
3
4
upstream webservers{
server  192.168.9.134:8081 weight=8;
server  192.168.9.134:8082 weight=2;
}

3、fair(第三方)

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

?
1
2
3
4
5
upstream webservers{
server 192.168.9.134:8081;
server 192.168.9.134:8082;
fair;
}

4、url_hash

按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。使用这种策略,可以节省缓存空间,提高缓存命中率

?
1
2
3
4
5
upstream webservers{
hash &request_uri;
server 192.168.9.134:8081;
server 192.168.9.134:8082;
}

5、least_conn

按节点连接数分配,把请求优先分配给连接数少的节点。该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况。

?
1
2
3
4
5
upstream webservers{
least_conn;
server 192.168.9.134:8081;
server 192.168.9.134:8082;
}

以上不同的负载均衡策略均有各自不同的使用场景,请结合自身的实际情况进行合理的选择,同时,各自配置策略在实际使用的时候也不是孤立的,比如最小连接数可以搭配权重数一起使用

总结

到此这篇关于nginx负载均衡配置的文章就介绍到这了,更多相关nginx负载均衡配置内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/zhangcongyi420/article/details/124542844

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:linux启动和重启nginx方法

2023-3-16 4:49:27

建站知识

小知识:Linux 配置SSH免密登录 “ssh-keygen”的基本用法

2023-3-16 4:57:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索