Nginx/LVS/Haproxy 企业级负载集群介绍

Nginx

反向代理 + 四层或七层负载均衡 + 虚拟主机。

LVS

四层负载均衡。

  • LVS集群采用三层架构:负载调度器、服务器池和共享存储
  • LVS包含ipvs内核模块和ipvsadm管理工具两个部分
  • 负载均衡模式包括:NAT、TUN 和 DR

NAT模式(网络地址转换)

  • 很好配置,原理简单易懂
  • 由于调度器的工作量太大,很容易成为整个集群系统的瓶颈
  • RS应该使用私有地址;RS的网关的必须指向DIP
  • RIP和DIP必须在同一网段内
  • 请求和响应的报文都得经过Director,在高负载场景中,Director很可能成为系统性能瓶颈
  • 支持端口映射
  • RS可以使用任意支持集群服务的OS

TUN模式(IP隧道)

  • RIP、VIP、DIP全是公网地址
  • RS的网关不会也不可能指向DIP
  • 不支持端口映射
  • RS的系统必须支持隧道

DR模式(直接路由)

  • 在前端路由器做静态地址路由绑定,将对于VIP的地址仅路由到Director Server
  • arptables:在arp的层次上实现在ARP解析时做防火墙规则,过滤RS响应ARP请求。修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在网卡接口的别名上,并限制其不能响应对VIP地址解析请求。
  • RS可以使用私有地址,但也可以使用公网地址,此时可以直接通过互联网连入RS以实现配置、监控等
  • RS的网关一定不能指向DIP
  • RS跟Dirctor要在同一物理网络内(不能由路由器分隔)
  • 请求报文经过Director,但响应报文一定不经过Director
  • 不支持端口映射
  • RS可以使用大多数的操作系统

调度算法

  • 静态调度算法:rr(常用),wrr(常用),dh,sh
  • 动态调度算法:wlc(常用),lc(常用),lblc,lblcr, sed, nq
  • 生产环境选型:
    • 一般的网络服务,如http,nginx,mysql等常用的LVS调度算法为:基本轮询调度rr、加权最小连接调度wlc、加权轮询调度wrr
    • 基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于web cache和DB cache
    • 源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一

Session持久机制

  • session绑定:始终将同一个请求者的连接定向至同一个rs(第一次请求时仍由调度方法选择)。没有容错能力,有损均衡效果
  • session复制:在rs之间同步session,因此,每个RS持集群中所有的session。对于大规模集群环境不适用
  • session共享或服务器机制:利用单独部署的服务器来统一管理session

健康检查

  • ldirectord

LVS高可用

  • keepalived:无状态服务的高可用、LVS的高可用,使用的vrrp协议方式,虚拟路由冗余协议
  • heartbeat:有状态服务的高可用、业务的高可用、大型集群管理,基于主机或网络的服务的高可用方式
  • 使用建议:
    • 优先使用Keepalived,当Keepalived不够用的时候才选择Heartbeat
    • LVS的高可用建议用Keepavlived
    • 业务的高可用用Heartbeat

Haproxy

四层或七层负载均衡。

posted @ 2021-09-14 11:14  Varden  阅读(119)  评论(0编辑  收藏  举报