当前位置: 代码迷 >> 综合 >> Nginx upstream
  详细解决方案

Nginx upstream

热度:20   发布时间:2023-12-17 11:58:48.0

配置语法:

upstream backend{

    server backend1.example.com    weight=5;                        weight 代表权重

    server backend2.example.com:8080;

    server unix:/tmp/backend3;

    server backup1.example.com:8080 backup;                        backup:表示备份节点

    server backup2.example.com:8080 backup;

}

后端服务器在负载均衡调度中的状态

down                                             当前的server暂时不参与负载均衡(不对外提供服务)           

backup                                           预留的备份服务器(当其他的节点挂掉,备份服务器启动)

max_fails                                        允许请求失败的次数

fail_timeout                                    经过max_fails失败后,服务暂停的时间(默认10s)

max_conns                                      限制最大的接受的连接数

-------------------------------------------------------------------------------------------------------------------------

配置演示:

        

        8001 不对外开放

        8002是备份节点,当8003挂掉的时候,节点8002会开启,当8003可以访问的时候,节点8002关闭

        8003 请求失败的次数是1次,时间是10s。

-------------------------------------------------------------------------------------------------------------------------

调度算法                                                    

轮询                                                         按时间顺序逐一分配到不同的后端服务器(基于请求)

加权轮询                                                  weight值越大,分配到的访问几率越高  (基于请求)

ip_hash                                                    每个请求按访问IP的hash结果分配,这样来自同一个IP的固定访问一个后端服务器

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

url_hash                                                    按照访问的额URL的hash结果来分配,是每个URL定向到同一个后端服务器

hash关键数值                                             hash自定义的key

--------------------------------------------------------------------------------------------------------------------------------

基于ip_hash 来控制访问的服务器

    

这样如果是一个ip访问了服务端,那么就会记录这个ip,使每次是这个ip的请求都会访问之前的服务节点。根据remote_addr。

缺陷:如果是代理,无法获取真实的ip。

--------------------------------------------------------------------------------------------------------------------------------

基于url_hash  和 hash 关键数值

配置语法:

    Syntax : hash key [consistent];

    Default: ——

    Context : upstream

    This directive appeared in version 1.7.2.

演示:

    

------------------------------------------------------------------------------------------------------------------