Nginx负载均衡+宝塔


什么是负载均衡

在高并发的情况下,一台服务器的负载承受不住,我们就需要使用服务器集群来解决高并发,但是又会出现另一个问题,就是客户端的请求如何分配给多个服务器,所以在服务器集群中,需要一个服务器充当一个【负载均衡器-Nginx】【NameServer-也可以是一个集群】的作用,用户的所有请求都会都会由负载均衡器【NameServer】进行接收,调度者根据每台服务器的负载情况通过负载均衡算法将请求分配给某一台后端服务器进行处理。

负载均衡算法比如轮询、权重、随机、区域等等

 

a、准备工作

 需要对应的负载均衡转发服务器应用服务器

 

1、添加应用站点

在应用服务器中添加对应的 【内网IP+端口号】 的网站

IP:当前服务器的公网或内网IP地址

端口号:自定义一个端口,比如我这里设置的是9027,需要保证端口权限。

 

2、添加转发入口

在准备做负载均衡的服务器上添加一个站点 可以是解析备案过的域名,也可以是公网IP+端口(一般测试的时候用,正式用域名)

 

然后打开站点 设置->配置文件,在配置文件中的最上方添加下面的代码

upstream xch {
	server 192.168.0.1:9027 weight=100;
	server 92.168.0.2:9027 weight=100;
}

然后增加代理,并把css ,js 图片资源的处理注释。

  location / {
     proxy_pass http://xch/; # 负载均衡访问地址
     proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }

    # location ~ .*\.(js|css)?$
    # {
    #     expires      12h;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }
    access_log  /www/wwwlogs/123.6.102.106.log;
    error_log  /www/wwwlogs/123.6.102.106.error.log;

 

更新时间:2024-06-24

在使用发现有个接口一直请求超时,导致其他接口也是一直返回502。需要将配置调整为如下参数:

upstream xch {
	server 192.168.0.1:9027 max_fails=1 fail_timeout=1 weight=100;
	server 192.168.0.2:9027 max_fails=1 fail_timeout=1 weight=100;
	server 192.168.0.2:9027 max_fails=1 fail_timeout=1 weight=100;
}
   location / {
    	proxy_pass http://xch/; # 负载均衡访问地址
    	proxy_http_version 1.1;
    	proxy_next_upstream_tries 3;
    	proxy_next_upstream error timeout invalid_header http_503 http_404;
    	proxy_set_header Connection "";
	    proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 3;
      proxy_read_timeout 3;
      proxy_send_timeout 3;
      proxy_ignore_client_abort on;
    }

 

max_fails允许请求失败的次数默认为1

fail_timeout=60 s fail_timeout=60s失败暂停的时间

down表示当前的服务器暂时不参与负载

backup 所有非backupi机器忙的时候会请求backup,因此其压力会最轻

 

Nginx常用的实现负载均衡的4种方式

轮询(Round Robin):

        这是默认的负载均衡算法,Nginx按照请求的顺序依次将请求分配给后端的服务器。每个服务器按照其权重来处理请求,然后按顺序循环分配。这种算法简单且平均地将负载分配给后端服务器,适用于后端服务器配置相同、处理能力相当的场景。

upstream backend {
        server 192.168.1.101:8080;
        server 192.168.1.102:8080;
        server 192.168.1.103:8080;
    }

 

IP哈希(IP Hash):

        Nginx根据客户端的IP地址进行哈希运算,并根据计算结果将请求分配给固定的后端服务器。这种算法保证了相同的客户端IP每次请求都会被分配到相同的服务器,适用于需要保持会话状态的应用。

upstream backend {
        ip_hash;
        server 192.168.1.101:8080;
        server 192.168.1.102:8080;
        server 192.168.1.103:8080;
    }

 

加权轮询(Weighted Round Robin):

        Nginx根据每个后端服务器的配置权重将请求分配给服务器。权重越高的服务器,处理的请求就越多。这种方式适用于后端服务器之间配置不同、处理能力不同的情况下。

upstream backend {
        server 192.168.1.101:8080 weight=3;
        server 192.168.1.102:8080 weight=2;
        server 192.168.1.103:8080 weight=1;
    }

 

 最少连接(Least Connections):

        Nginx会统计每个后端服务器当前的活动连接数,并将请求分配给活动连接数最少的服务器,以实现负载均衡。这种算法适用于后端服务器配置和处理能力不同、连接持续时间不均衡的场景。

 

upstream backend {
        least_conn;
        server 192.168.1.101:8080;
        server 192.168.1.102:8080;
        server 192.168.1.103:8080;
    }
发布时间 : 2024-05-08,阅读量:1091 , 分类: PHP Nginx
本文链接:https://upwqy.com/details/946.html
thinkphp6 使用 monolog/monolog socket进行日志处理 macOS 系统设置java环境变量