Nginx、HAProxy、LVS三者的对比

Nginx、HAProxy、LVS三者的对比

nignx

优点:

  • 工作在网络7层,针对http做分流策略,支持正则
  • 配置简单,方便
  • 对网络的依赖性小,一般可以ping通就可以进行负载
  • 可以通过端口检查到服务器内部故障,根据网页的返回的状态码,将返回错误的请求重新提交到另一个节点上

缺点

  • 应用范围较小,仅支持http、https、Email协议

LVS

优点

  • 工作在网络4层
  • 抗负载能力强,可以支持双机热备份:LVS+keepalived的
  • 支持多种负载均衡算法:rr(轮询),wrr(带权轮询)、lc(最小连接)、wlc(带权最小连接)
  • LVS工作模式有4种:
    (1) nat 地址转换
    (2) dr 直接路由
    (3) tun 隧道
    (4) full-nat

缺点

  • 软件本身不支持正则表达式

haproxy

优点

  • 可以工作在4、7层
  • 支持Session的保持,Cookie的引导
  • 单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
  • 4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。

三大主流软件负载均衡器适用业务场景

1. 网站建设初期,可以选用Nginx、HAProxy作为反向代理负载均衡(流量不大时,可以不选用负载均衡),因为其配置简单,性能也能满足一般业务场景。如果考虑到负载均衡器是有单点问题,可以采用Nginx+Keepalived/HAproxy+Keepalived避免负载均衡器自身的单点问题。
2. 网站并发到达一定程度后,为了提高稳定性和转发效率,可以使用lvs,毕竟lvs比Nginx/HAProxy要更稳定,转发效率也更高。
注:nginx与HAProxy比较:nginx只支持七层,用户量最大,稳定性比较可靠。Haproxy支持四层和七层,支持更多的负载均衡算法,支持session等。

haproxy+keepalived高可用负载均衡构建。

  • 用haproxy构建群集的时候,比如后方代理两个http,如果haproxy宕机,后方的http正常运行网站也是瘫痪状态,这就造成了单点故障。
  • 这时keepalived就登场了,keepalived基于vrrp协议,两台主机之间生成一个虚拟的ip,我们称漂移ip,漂移ip由主服务器承担,一但主服务器宕机,备份服务器就会抢占漂移ip,继续工作,有效的解决了群集中的单点故障

keepalived

  • 配置文件/etc/keepalived/keepalived.conf
  • vrrp_instance VI_1分区里
    • state MASTER为主分区
    • state BACKUP为备份分区
  • priority设置优先级
  • virtual_ipaddress: 设置浮动IP

HAproxy

  • 配置文件再/etc/haproxy/haproxy.cfg
  • frontend http_fort:定义监听服务器浮动IP及端口
  • backend http_back: 定义调度的IP服务器

mencached实现session共享

  • cookie与session的区别

    • cookie是位于用户的计算机上的,用来维护用户计算机的信息
    • session位于web服务器上的,主要负责访问者与网站的交互
    • cookie数据存放在客户的浏览器上,session数据放在服务器上

[高可用Mysql架构_Haproxy+keepalived+mycat集群的配置]

图解说明:
(1) HAProxy 实现了 Mycat 多节点的集群高可用和负载均衡, 而 HAProxy 自身的高可用则可以通过Keepalived 来实现。 因此, HAProxy 主机上要同时安装 HAProxy 和 Keepalived, Keepalived 负责为该服务器抢占 vip(虚拟 ip,图中的 192.168.9.190),抢占到 vip 后,对该主机的访问可以通过原来的 ip(192.168.9.174)访问,也可以直接通过 vip(192.168.9.190)访问。
(2) Keepalived 抢占 vip 有优先级, 在 keepalived.conf 配置中的 priority 属性决定。但是一般哪台主机上的 Keepalived服务先启动就会抢占到 vip,即使是 slave,只要先启动也能抢到(要注意避免 Keepalived的资源抢占问题)。
(3) HAProxy 负责将对 vip 的请求分发到 Mycat 集群节点上, 起到负载均衡的作用。 同时 HAProxy 也能检测到 Mycat 是否存活, HAProxy 只会将请求转发到存活的 Mycat 上。
(4) 如果 Keepalived+HAProxy 高可用集群中的一台服务器宕机, 集群中另外一台服务器上的 Keepalived会立刻抢占 vip 并接管服务, 此时抢占了 vip 的 HAProxy 节点可以继续提供服务。
(5) 如果一台 Mycat 服务器宕机, HAPorxy 转发请求时不会转发到宕机的 Mycat 上,所以 Mycat 依然可用。
综上: Mycat 的高可用及负载均衡由 HAProxy 来实现,而 HAProxy 的高可用,由 Keepalived 来实现。

你可能感兴趣的:(Nginx、HAProxy、LVS三者的对比)