常用的负载均衡算法(NGINX篇)

        

        负载均衡算法用于在多个服务器或资源之间分配工作负载,以优化资源利用率、降低延迟、提高吞吐量并确保系统的容错性。

        这里介绍并实验4种负载均衡算法(随机的方法理论上也算,但一般不会这么搞),在NGINX上。

目录

轮询 (Round Robin)

加权轮询(Weighted Round Robin)

最少连接(Least Connections)

源地址哈希(Source IP Hash)


 

轮询 

        轮询算法将请求按顺序分配给服务器列表中的每个服务器。当分配到最后一个服务器后,算法重新开始从第一个服务器分配。轮询算法简单且易于实现,但它可能无法充分考虑服务器之间的性能差异

        示例:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

加权轮询

        加权轮询算法为每个服务器分配一个权重值,以表示其处理能力。具有较高权重的服务器将处理更多的请求。加权轮询算法可以更好地处理服务器性能差异,但权重分配可能需手动调整

http {
    upstream backend {
        server backend1.example.com weight=1;
        server backend2.example.com weight=2;
        server backend3.example.com weight=3;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

最少连接

        最少连接算法将请求分配给当前连接数最少的服务器。这种算法可以更好地处理不同请求处理时间的情况,但可能需实时监控服务器的连接数

        例:假设有3个服务器A、B和C,当前连接数分别为3、1和2。最少连接算法会将下一个请求分配给服务器B,因为它的连接数最少。

http {
    upstream backend {
        least_conn;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

        在backendupstream块中添加了ip_hash指令。Nginx会根据客户端IP地址的哈希值将请求分配给这些服务器。

源地址哈希

        源地址哈希算法根据客户端的IP地址计算哈希值,然后将请求分配给相应的服务器。这种算法可以确保来自同一客户端的请求始终分配给同一个服务器,从而实现会话保持。

http {
    upstream backend {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

        在backendupstream块中添加了ip_hash指令。Nginx会根据客户端IP地址的哈希值将请求分配给这些服务器。

猜你喜欢

转载自blog.csdn.net/lxd_max/article/details/132197862