代理与负载均衡

代理与负载均衡 #

知识点 #

  • 代理
    • 作用:转发请求;过滤请求;记录请求;转换请求;缓存响应;
    • 类型:
      • 开放代理(Open Proxy):由代理服务器从用户指定的位置上访问资源。
        • 匿名代理(Anonymous Proxy):隐藏原始IP。
        • 透明代理(Transparent Proxy):能够透传原始IP和请求头。
      • 反向代理(Reverse Proxy):由代理服务器从不同服务器检索资源进行返回,从用户端看起来这些数据好像就存在于代理服务器。
  • 负载均衡
    • 作用:均匀分配请求;将请求分配到正常运行的服务器节点来实现请求层面的HA。
    • 负载均衡算法:
      • 随机;
      • 最少连接(适合游戏等需要长连接的场景);
      • 最短响应时间;
      • 最少带宽;
      • 轮询(DNS仅支持该种);
      • 加权轮询;
      • Hash(适合需要实现粘性会话的场景);
    • HA:通过冗余负载均衡器加IP漂移来实现。
    • 实现方式:代理服务提供;客户端集成;
    • 集成位置:客户端与Web服务端之间;Web服务端与内部系统之间;内部系统与数据库之间等等。

alt

最佳实践 #

  • 负载均衡
    • DNS层面实现地理位置级别负载均衡。如北京用户访问北京机房。
      • DNS负载均衡原理:权威服务器每次返回不同的IP地址。具体来说,权威服务器每次返回一个IP列表,同时使用轮询算法每次更改IP列表中的排序。 客户端每次都向列表中的第一个IP发起请求,如果失败,客户端可以自行决定是否再使用列表中的其它IP做重试。
    • 硬件(F5)层面实现集群级别的负载均衡。硬件负载均衡器性能更优,但需要采购时间,专人安装和维护。
    • 软件(Nginx/OpenResty、LVS)层面实现机器级别的负载均衡。
      • Nginx 为软件层面的7层负载均衡,支持 HTTP,Email 协议。
      • OpenResty = Nginx + Lua,可以通过Lua脚本为Nginx添加业务逻辑。
      • LVS 是 Linux 内核的4层负载均衡,和协议无关。
  • Nginx高可用
    • 双机主备模式:DNS绑一个VIP + 双keepalived/Nginx。一台Nginx通过VIP提供服务,另一台Nginx仅作为备机。
    • 双机主主模式:DNS绑两个VIP + 双keepalived/Nginx。两台Nginx互备,通过两个VIP同时提供服务。
沪ICP备17055033号-2