【Http】 Upstream模块详解

一、什么是HTTP Upstream模块?

Upstream模块是Nginx服务器的一个重要模块。Upstream模块实现在轮询和客户端ip之间实现后端的负载均衡。(意思就是说:客户端ip请求到服务端的时候,会从upstream的ip列表中从上到下逐个轮询,轮询到最后一个的时候,会重新跳到第一个ip,再次进行轮询选择)

二、ip_hash指令:

1、简介:
在负载均衡系统中,假如用户在某台服务器上登录,那么如果该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的一个服务器,那么此时如果将已经登录服务器A的用户在定位到其他服务器,显然不妥。故而,我们可以采用ip_hash指令解决这个问题,如果客户端请求已经访问了服务器A并登陆,那么第二次请求的时候,会将该请求通过哈希算法自动定位到该后端服务器中。

2、配置:

http {
        #设置带负载均衡的ip列表,一般是服务器集群中的那些子服务器的ip地址
        upstream mypro {
                ip_hash;
                server 182.18.79.243;
                server 140.205.140.234;
        }
        server {
                listen 8080;
                location / {
                        proxy_pass http://mypro;
                }
        }
}

上述代码中ip_hash那句话就可实现用户不管登录几次都不会因为负载均衡而乱了阵脚,都会自动定位到上次登录的那个服务器,而不同用户登录则依旧会实现负载均衡的效果。

三、Server指令的权重

http {
        #设置带负载均衡的ip列表,一般是服务器集群中的那些子服务器的ip地址
        upstream mypro {
                #ip_hash;
                #weight:权重。默认是1.数字越大,权重越大。
                #权重越大,被访问到的概率越大。
                server 182.18.79.243 weight=2;
                server 140.205.140.234;
        }
        server {
                listen 8080;
                location / {
                        proxy_pass http://mypro;
                }
        }
}

注意:要想实现权重,则必须注释掉ip_hash,因为ip_hash同一个用户每次都访问同一个服务器,这点与权重冲突。上述的权重意思是:182.18.79.243 这个ip被访问到的几率是三分之二。而下面那个ip为三分之一。

四、upstream指令及相关变量

upstream指令主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用代理服务器,默认负载均衡方式为轮询。

你可能感兴趣的:(【乌卡时代】网络协议,http,网络协议,网络)