upstream负载均衡

upstream模块是Nginx中用于负载均衡的组件,它可以定义一组服务器并分配权重,实现轮询、ip_hash和最少连接等负载均衡算法。ip_hash确保相同IP的请求始终定向到同一台服务器,而round-robin则根据权重进行轮询分配。此外,还可以通过max_fails和fail_timeout参数来设置服务器故障检测。
部署运行你感兴趣的模型镜像

upstream 模块

==========================================
与 proxy 模块结合使用的模块中,最常用的当属upstream模块。
upstream模块可定义一个新的上下文,它包含了一组upstream服务器,
这些服务器可能被赋予了不同的权重、不同的类型甚至可以基于维护等原因被标记为down。

示例:==================

upstream  mywebs {
	  ip_hash;
	  server 192.168.10.61  weight=5   max_fails=3  fail_timeout=10s;  
	  server 192.168.10.62  weight=5   max_fails=3  fail_timeout=10s;
	}
	
   location / {
        proxy_pass  http://mywebs;
        proxy_redirect  default;
        }

upstream模块常用的指令有:==============

负载均衡算法 :

========================================
upstream模块的负载均衡算法主要有三种,轮调(round-robin)、ip哈希(ip_hash)和 最少连接(least_conn)三种。

ip_hash:基于客户端IP地址完成请求的分发,它可以保证来自于同一个客户端的请求始终被转发至同一个upstream服务器;
round-robin : 基于 权重的轮询。不需要明确注明,在各个节点中设置 权重 weight 即可。
least_conn: 最少连接调度算法;

定义一个upstream服务器的地址,还可包括一系列可选参数,如:============
weight:权重(主要用于 轮询调度。)

max_fails:
fail_timeout:

某个server连接失败了max_fails次,则nginx会认为该server不工作了。
同时,在接下来的 fail_timeout 时间内,nginx不再将请求分发给失效的server。

fail_timeout默认为10s,max_fails默认为1。就是说,只要某个server只要失败过一次,就会计数,
当台服务器重新上线时,检查它的失败次数,如果达到一次,就在10s内先不要发送请求给它。


backup:用于fallback的目的,所有服务均故障时才启动此服务器,可以用它来设置一台  Sorry Server ;
down:手动标记其不再处理任何请求;

**例如:============================**
在这里插入图片描述
配置示例, 代理服务器本机的 8080 作为 sorry Server : =======================

upstream mywebs {
	#ip_hash;
	server 192.168.10.5:80  weight=1  max_fails=1 fail_timeout=3s;
	server 192.168.10.6:80  weight=1  max_fails=1 fail_timeout=3s;
	server 192.168.10.14:8080   backup;
    }

    server {
        listen       80;
        server_name  www.baby.com;
        access_log  /usr/local/nginx/logs/new.com.access.log  main;

	location = /status {
		stub_status on;
		allow 192.168.10.1;
		deny all;
	}

   location   /  {
	proxy_pass http://mywebs;
	proxy_set_header X-Real-IP  $remote_addr;
	proxy_redirect off;
	#proxy_set_header Host  $host;
	#proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
	proxy_connect_timeout 30;
	proxy_send_timeout 15;
	proxy_read_timeout 15;
	    }
	}

	server {
	listen  192.168.10.14:8080;
	location / {
	 	root  /data/web-data/sorry.com;
		index  index.html;
	   }
	}

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

在现代Web架构中,Nginx是负载均衡和反向代理的事实标准,upstream模块是Nginx实现这一切的核心引擎,承担着流量分发的重任[^3]。 ### 基本组成 负载均衡模块的配置区集中在`upstream{}`块中。其回调函数体系以`init_upstream`为起点,经历`init_peer`,最终到达`peer.get`和`peer.free`。`init_peer`负责建立每个请求使用的server列表,`peer.get`负责从server列表中选择某个server(一般是不重复选择),而`peer.free`负责server释放前的资源释放工作[^2]。 ### 功能特点 upstream模块不仅可以作为负载均衡,更重要的是实现冗余。对于单机部署的web应用,在出现节点故障时服务即无法访问,而通过upstream可以实现多节点冗余。例如停止`s142`的web服务后,应用可自动切换到`s141`节点[^4]。 ### 负载均衡算法 负载均衡算法默认是`rr`轮询,即按客户端请求顺序把客户端的请求逐一分配到不同的后端服务器,这相当于LVS中`rr`算法。如果后端服务器宕机(默认只检测80端口,如果后端报错状态码为502、404、403、503,还是会直接返回给用户),宕机服务器会被自动剔踢出,用户访问不会受影响,请求会分配给正常的服务器[^5]。 ### 配置示例 以下是一个简单的`upstream`模块配置示例: ```nginx upstream backend { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } ``` 在上述示例中,`upstream`块定义了一个名为`backend`的服务器组,包含两个后端服务器`backend1.example.com`和`backend2.example.com`。在`server`块中,通过`proxy_pass`指令将请求转发到`backend`这个服务器组。 ### 使用方法 在Nginx配置文件中添加`upstream`块来定义后端服务器组,然后在`server`块的`location`中使用`proxy_pass`指令将请求转发到定义好的`upstream`组。配置完成后,重新加载Nginx配置使其生效,可使用命令`nginx -s reload`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值