资讯专栏INFORMATION COLUMN

反向代理 and 负载均衡

OnlyLing / 1737人阅读

摘要:负载均衡的平衡机制轮询,向应用服务器的请求以循环方式分发。服务器健康检查中的反向代理实现包括带内或被动服务器运行状况检查。

nginx 负载均衡的平衡机制

轮询,向应用服务器的请求以循环方式分发。

最少连接,下一个请求被分配给具有最少数量活动连接的服务器(最清闲的服务器)。

ip-hash,哈希函数用于确定下一个请求(基于客户端的IP地址)应选择哪个服务器(相同IP 的发送到同一个服务器,解决 session 问题)。

轮训方式负载均衡
// 代理服务器的配置文件
http {
    // 针对 http://test.com 域名的访问,将会按照默认 轮训的方式分配给列表中的服务器
    upstream http://test.com { 
        server srv1.example.com; // 服务器 A 
        server srv2.example.com; // 服务器 B
        server srv3.example.com; // 服务器 C
    }
}

// 具体负载均衡的服务器 A 配置文件
http {
    server { 
        listen 80;

        location / { 
            proxy_pass http://test.com; 
        } 
    } 
}

// 具体负载均衡的服务器 B 配置文件
http {
    server { 
        listen 80;

        location / { 
            proxy_pass http://test.com; 
        } 
    } 
}

....同上
最少连接数方式负载均衡
// 代理服务器的配置文件
http {
    // 针对 http://test.com 域名的访问,将根据服务器的负载情况进行分配
    upstream http://test.com {
        least_conn; # 表示采取 最少连接数 的负载均衡机制
        server srv1.example.com; // 服务器 A 
        server srv2.example.com; // 服务器 B
        server srv3.example.com; // 服务器 C
    }
}

// 具体负载均衡的服务器 A 配置文件
http {
    server { 
        listen 80;

        location / { 
            proxy_pass http://test.com; 
        } 
    } 
}

....同上
ip-hash 方式负载均衡 解释

请注意,通过循环或最少连接的负载平衡,每个后续客户端的请求可能潜在地分配到不同的服务器。不能保证同一客户端始终被定向到同一个服务器。

使用ip-hash,客户端的IP地址用作哈希键,以确定应为客户端请求选择服务器组中的哪个服务器。该方法确保来自同一客户端的请求将始终被定向到同一台服务器,除非该服务器不可用。

解决 session 问题。

// 代理服务器的配置文件
http {
    // 针对 http://test.com 域名的访问,将确保同一IP始终访问到同一服务器
    upstream http://test.com {
        ip_hash; # ip_hash 的负载均衡机制
        server srv1.example.com; // 服务器 A 
        server srv2.example.com; // 服务器 B
        server srv3.example.com; // 服务器 C
    }
}

// 具体负载均衡的服务器 A 配置文件
http {
    server { 
        listen 80;

        location / { 
            proxy_pass http://test.com; 
        } 
    } 
}

....同上
加权负载均衡
  upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }

当 为服务器指定权重参数时,权重将作为负载均衡决策的一部分进行计算。

通过这种配置,每5个新请求将分布在应用程序实例中,如下所示:3个请求将被定向到srv1,一个请求将转到srv2,另一个请求将转到srv3。

服务器健康检查

nginx 中的反向代理实现包括带内(或被动)服务器运行状况检查。如果特定服务器的响应失败并出现错误,nginx会将此服务器标记为失败,并尝试避免为此后续入站请求选择此服务器一段时间。

max_fails 设置失败重试次数。 fail_timeout 设置重试间隔时间。默认情况下, max_fails 设置为 1。 当设置为 0 时,对该服务器禁用运行状况检查。该 fail_timeout 参数还定义如何,只要服务器失败将被标记。在 服务器故障后的 fail_timeout间隔之后,nginx将开始以实时客户端的请求来优雅地探测服务器。如果探针成功,则将服务器标记为实时的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39568.html

相关文章

  • 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

    摘要:现有的服务器和应用程序服务器相结合并在一个冒泡中运行,无法直接接触网络流量,由反向代理服务器提出填鸭式请求。赋予高可用性让你的反向代理服务器镜像到在线备份,同时拥有备用的应用程序服务器,让你的站点高度可用。 【编者按】本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能。本文系国内 ITOM 管理平台 OneAPM 编译呈现。 本文上一篇系: 利用...

    zhangrxiang 评论0 收藏0
  • 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

    摘要:现有的服务器和应用程序服务器相结合并在一个冒泡中运行,无法直接接触网络流量,由反向代理服务器提出填鸭式请求。赋予高可用性让你的反向代理服务器镜像到在线备份,同时拥有备用的应用程序服务器,让你的站点高度可用。 【编者按】本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能。本文系国内 ITOM 管理平台 OneAPM 编译呈现。 本文上一篇系: 利用...

    Snailclimb 评论0 收藏0
  • Nginx

    摘要:此外,其也能够提供强大的反向代理功能。是由为俄罗斯访问量第二的站点开发的,第一个公开版本发布于年月日。 keepalived+nginx 实现高可用双机热备 + 负载均衡架构 1 准备4个ubuntu16.04虚拟机(启用网卡二并使用桥接模式):A服务器:192.168.0.103 主B服务器:192.168.0.104 主(备) 前端工程师学习 Nginx ...

    syoya 评论0 收藏0
  • 分布式系统的负载均衡 | 架构干货

    摘要:是的默认负载均衡策略。一致性哈希负载均衡。所以负载均衡是分布式系统架构设计中必须考虑的因素之一。考虑主要是如何让下游接收到的请求是均匀分布的第层客户端层反向代理层的负载均衡。通过轮询第层反向代理层层的负载均衡。 一、 什么是负载均衡? 什么是负载均衡? 记得第一次接触 Nginx 是在实验室,那时候在服务器部署网站需要用 Nginx 。Nginx 是一个服务组件,用来反向代理、负载平衡...

    twohappy 评论0 收藏0

发表评论

0条评论

OnlyLing

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<