在 Nginx 中,负载均衡主要通过 upstream 模块实现。upstream 模块允许你定义一组上游服务器,并在请求处理中选择合适的上游服务器进行负载均衡。以下是一些常用的负载均衡算法和配置选项:

1. Round Robin(轮询)

默认的负载均衡算法,按照定义的上游服务器列表依次轮询选择一个服务器来处理请求。
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

2. Least Connections(最小连接数)

选择连接数最少的服务器处理请求,适用于处理时间较长的任务。
upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

3. IP Hash

使用客户端的 IP 地址进行哈希计算,确保相同 IP 的请求总是被发送到同一台上游服务器,有助于保持会话一致性。
upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

4. Weighted Round Robin(加权轮询)

给每个服务器分配权重,按照权重比例轮询选择服务器。
upstream backend {
    server backend1.example.com weight=3;
    server backend2.example.com weight=2;
    server backend3.example.com weight=1;
}

5. Weighted Least Connections(加权最小连接数)

与加权轮询类似,但是选择连接数最少的服务器。
upstream backend {
    least_conn;
    server backend1.example.com weight=3;
    server backend2.example.com weight=2;
    server backend3.example.com weight=1;
}

6. Backup Servers(备用服务器)

定义备用服务器,当其他服务器不可用时,请求将被转发到备用服务器。
upstream backend {
    server backend1.example.com;
    server backend2.example.com backup;
}

7. Health Checks(健康检查)

使用 health_check 指令启用健康检查,定期检测上游服务器的可用性。
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    health_check;
}

以上只是一些常见的负载均衡配置示例,实际应用中可以根据需求选择合适的算法和参数。在 Nginx 配置文件中,通常将 upstream 块定义在 http 块中,然后在 server 配置中使用 proxy_pass 将请求转发给上游服务器组。


转载请注明出处:http://www.zyzy.cn/article/detail/10156/Nginx