nginx的upstream模块

1、upstream 模块介绍:

Nginx 的负载均衡功能依赖于ngx_http_upstream_modulemo模块,所支持的方式有

proxy_pass,fastcgi_pass,memcached_pass.

官方地址http://nginx.org/en/docs/http/ngx_http_upstream_module.html

upstream 模块语法:

范例(1):

upstream www_real_servers {
                #ip_hash;
                 server 10.0.0.22:80  weight=15;
                 server 10.0.0.23:80  weight=15;
                }

解释:upstream是固定的;server是固定的后面可以接域名(门户会用)或ip,如果不加端口,默认是

                    80,weight是权重,值越大被分配的几率越高

server backend2.example.com:8080 ;#域名加端口,转发到后端的端口。

server unix:/tmp/backend3       #指定socket文件

提示:Server如果接域名,需要内网有DNS服务器,或者在负载均衡器的hosts文件做域名解析。

server backup1.example.com:8080 backup;

#备份服务器,等上面指定的服务都不可以访问的时候会启用,back的用户和haproxy的用法相同。

两台keepalive+http做高可用,那么这里使用nginx的backup参数就可以实现。

2、upstream模块的相关说明

官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream

a、upstream模式应防御nginx.cnf配置的http{}标签内。

b、upstream模式默认算法是wrr(权重轮询weighted round-robin)

c、upstream模块内部部分参数说明:

server 10.0.0.22:80

负载均衡后面RS配置,可以是ip或域名,端口默认80.高并发场景ip要换成域名,通过dns做负载均衡。

weight

权重,默认是1

注意:当负载均衡调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不可以是weight和backup

max_fails=2

最大尝试失败的次数,默认为1,0表示禁止失败尝试,京东1次,蓝汛10次,根据业务配置;

如果max_fails是5,它就检测5次,如果5次都是502,他就会根据fails_timeout的值等待后再次检查。

这个参数配合proxy_next_upstream\fastcgi_next_upstream\memcached_pass 这三个参数使用,当nginx接受后端服务器返回这三个参数

定义的状态码的时候,会将这个请求转发给正常工作的后端服务器,例如404,502,503,Max_fails默认值为1(提升用户体验)

backup

热备配置(RS节点的高可用) ,当前面激活的RS 都失败后会自动启动热备RS

fail_timeout=20s

失败超时时间,默认是10s,京东3秒,蓝汛10秒,根据业务配置。常规2-3秒

down

标志服务器永远不可用,这个参数一直配合ip_hash使用。

3、特别说明:

对于nginx代理cache服务时,可能需要使用hash算法,此时,如果宕机时,可通过设置down参数确保

客户端使用安装当前的hash算法访问,很重要滴!!

官网内容如下:

If one of the servers needs to be temporarily removed, it should
be marked with the  down parameter in
order to preserve the       current hashing of client IP  addresses.

Example:

upstream backend {    ip_hash;

    server backend1.example.com;    server backend2.example.com;    server backend3.example.com down;    server backend4.example.com;}

Until versions 1.3.1 and 1.2.2, it was not possible to specify a weight for
servers using the ip_hash load balancing method.

4、upstream 算法:

rr 轮询:

按客户端请求顺序把客户端的请求逐一分配到不同的服务器后端;

weight权重:

在轮询算法的基础上加上权重(默认是rr+weight),权重轮询和访问成正比。

ip_hash:

每个请求按访问ip的hash结果分配,当新的请求到达时,先将其客户端ip通过哈希算法哈希出一

个值,在随后请求客户端,ip的哈希值只要相同,就会被分配到同一台服务器(lvs负载均衡-P参数。

keepalive里配置的persistence_timeout 50),该调度算法有效解决动态网页session共享问题,容

易造成请求分配不均。

注意:当调度算法为ip_hash时,后端服务器在负载均衡中的状态不能是weight、backup。

fair (第三方 no)

按照后端服务器相应时间分配请求,相应时间短优先分配。

范例:

upstream www_real_servers {
                 server 10.0.0.22:80  weight=15;
                 server 10.0.0.23:80  weight=15;

fair;
                }

#使用时下载nginx的upstream_fair模块

url_hash(第三方 no)

按访问url的hash结果分配请求,让每个url定向到同一个后端服务器(后端服务器为缓存服务器时效果著,cdn)。

在upstream中加入hash语句,server语句不可以加入weight等其它参数

范例:

upstream www_real_servers {
                 server 10.0.0.22:80  weight=15;
                 server 10.0.0.23:80  weight=15;

hash $request_uri;
                }

least_conn

最少连接数,那个机器连接数少就分发

一致性hash

http://tengine.taobao.org/document_cn/http_upstream_consistent_hash_cn.html

#缓存负载均衡最好的算法

http {    upstream test {        consistent_hash $request_uri;        server 127.0.0.1:9001 id=1001 weight=3;        server 127.0.0.1:9002 id=1002 weight=10;        server 127.0.0.1:9003 id=1003 weight=20;    }
时间: 2024-10-06 15:43:28

nginx的upstream模块的相关文章

Nginx专题: upstream模块和缓存的简单使用

Nginx专题: upstream模块和缓存的简单使用 前言: 本文接着上篇Nginx专题: 从编译安装到URL重写来介绍Nginx的负载均衡模块使用方法, 本文的实验没有考虑大多数情况, 例如两个web服务器之间的数据同步等, 主要写Nginx如何作为负载均衡器使用并且缓存 实验拓扑 实验环境 主机 IP地址 功用 lb.anyisalin.com 172.16.1.2 负载均衡并缓存静态资源 web1.anyisalin.com 172.16.1.3 提供web服务 web2.anyisal

Nginx之upstream模块和proxy模块简单应用

Nginx在web服务中是一个很强大的工具,可以做静态web服务,当然它的最常用的功能就是其负载均衡,下面只是应用nginx的upstream模块和proxy模块来做一个小实验.在此体现的功能也只是冰山一角. upstreem 使用注意:1.只能使用http上下文.2.各server只能直接使用IP或者主机名,不要加协议,在此次实验中使用server IP的方式来代理其后端,其后端使用Apache,提供web服务. 实验拓扑图: 实验配置 本实验主要应用nginx的upstream模块和prox

nginx的upstream模块实现负载均衡

通过nginx搭建负载均衡,这里通过这个upstream模块来实现,在nginx.org的官网可以看到相应的模块 proxy模块也可以实现负载均衡. 第一.打开lamp和lnmp  两个web服务器 Nginx-proxy这台服务器安装nginx,负载均衡需要nginx 安装nginx1.6.2 tar -xf nginx-1.6.2.tar.gz ls cd nginx-1.6.2 useradd -s /sbin/nologin -M nginx ./configure --user=ngi

nginx中upstream模块的简单示例

本文所指的upstream是nginx的http模块中的内容对nginx来说,upstream可以在nginx上将后端服务器定义为服务器组,将不同后端不同的服务器划分为不同的组,再经过不同组内的调度算法实现负载均衡.和缓存设置类似,upstream需要先在http下定义,再被调用,方可正常使用.示例: http { -- upstream webserver { #定义名为webserver的组 server 192.168.1.111:80; server 192.168.1.222:80;

nginx upstream模块

参考文档 nginx  upstream模块 http://www.nginx.cn/doc/standard/httpupstream.html #upstream模块: 用于负载均衡 ,反向代理 (proxy fastcgi uwsgi scgi memcached) #语法:  upstream name { ... } upstream static_server { server  A*:80 max_fails=2 fail_timeout=5s; serve    B*:80 ma

nginx upstream模块--负载均衡

Module ngx_http_upstream_module英文文档 upstream模块相关说明1.upstream模块应放于nginx.conf配置的http{}标签内2.upstream模块默认算法是wrr (权重轮询 weighted round-robin) 一.分配方式Nginx的upstream支持5种分配方式,下面将会详细介绍,其中前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式. 1.轮询 轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配

nginx的proxy模块及upstream模块介绍

在互联网场景,nginx通常担任处理静态文件的web文件服务器与反向代理服务器的角色. nginx反向代理的特性: 1.在上传文件的场景中,客户端与nginx反向代理建立连接,先把需要上传的文件上传到代理服务器,当代理接收完成文件后,再与上游的真实服务器建立连接,快速把文件上传到服务器(与squid的工作方式不同).为什么要这样做?客户端与代理服务器的连接是互联上慢速连接,而代理与上游服务的连接是内网的高速连接,再因为http的连接是无状态的,客户端与代理的连接可开启keep-alive功能,而

[转帖]nginx upstream模块--负载均衡

https://www.cnblogs.com/linjiqin/p/5494783.html Module ngx_http_upstream_module英文文档 upstream模块相关说明1.upstream模块应放于nginx.conf配置的http{}标签内2.upstream模块默认算法是wrr (权重轮询 weighted round-robin) 一.分配方式Nginx的upstream支持5种分配方式,下面将会详细介绍,其中前三种为Nginx原生支持的分配方式,后两种为第三方

Nginx - upstream 模块及参数测试

目录 - 1. 前言- 2. 配置示例及指令说明    - 2.1 配置示例    - 2.2 指令    - 2.3 upstream相关变量- 3. 参数配置及测试    - 3.1 max_fails 和 fail_timeout    - 3.2 proxy_next_upstream    - 3.3 nginx 与后端web连接时间的三个参数 1. 前言 当 Nginx 作为反向代理使用的时候,upstream模块有着举足轻重的地位,官方解释: 2. 配置示例及指令说明 2.1 配置