美文网首页
LVS、Nginx、HAProxy、keepalive 的工作原

LVS、Nginx、HAProxy、keepalive 的工作原

作者: 哪吒小子 | 来源:发表于2018-12-25 14:53 被阅读9次

1.LVS

LVS 不像 HAProxy 等七层软负载面向的是 HTTP 包,所以七层负载可以做的 URL 解析等工作,LVS 无法完成。
LVS 是四层负载均衡,也就是说建立在 OSI 模型的第四层——传输层之上,传输层上有我们熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的负载均衡。

1.1 LVS 的优点

  1. 抗负载能力强:是工作在传输层上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和 cpu 资源消耗比较低。
  2. 配置性比较低:这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
  3. 工作稳定:因为其本身抗负载能力很强,自身有完整的双机热备方案,如 LVS+Keepalived。
  4. 无流量:LVS 只分发请求,而流量并不从它本身出去,这点保证了均衡器 IO 的性能不会受到大流量的影响。
  5. 应用范围比较广:因为 LVS 工作在传输层,所以它几乎可以对所有应用做负载均衡,包括 http、数据库、在线聊天室等等。

1.2 LVS 的缺点

  • 软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是 Nginx、HAProxy+Keepalived 的优势所在。
  • 如果是网站应用比较庞大的话,LVS/DR+Keepalived 实施起来就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了

2.Nginx

Nginx 是一个强大的 Web 服务器软件,用于处理高并发的 HTTP 请求和作为反向代理服务器做负载均衡。具有高性能、轻量级、内存消耗少,强大的负载均衡能力等优势。

2.1 Nginx 的优点

  1. 跨平台Nginx 可以在大多数 Unix like OS编译运行,而且也有 Windows 的移植版本
  2. 配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置
  3. 非阻塞、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数
  4. 事件驱动:通信机制采用 epoll 模型,支持更大的并发连接
  5. Master/Worker 结构:一个 master 进程,生成一个或多个 worker 进程
  6. 内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个 Nginx 进程才消耗150M 内存(15M*10=150M
  7. 内置的健康检查功能:如果 Nginx 代理的后端的某台 Web 服务器宕机了,不会影响前端访问
  8. 节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头
  9. 稳定性高:用于反向代理,宕机的概率微乎其微

2.2 Nginx 的缺点

  • Nginx 仅能支 持http、https 和 Email 协议,这样就在适用范围上面小些,这个是它的缺点
  • 对后端服务器的健康检查,只支持通过端口来检测,不支持通过 ur l来检测。不支持 Session 的直接保持,但能通过 ip_hash 来解决

3.HAProxy

HAProxy 支持两种代理模式 TCP(四层)和HTTP(七层),也是支持虚拟主机的。

HAProxy 的优点能够补充 Nginx的一些缺点,比如支持 Session 的保持,Cookie 的引导;同时支持通过获取指定的 url 来检测后端服务器的状态。

HAProxyLVS 类似,本身就只是一款负载均衡软件;单纯从效率上来讲 HAProxy 会比 Nginx 有更出色的负载均衡速度,在并发处理上也是优于 Nginx 的。

HAProxy 支持 TCP 协议的负载均衡转发,可以对 MySQL 读进行负载均衡,对后端的 MySQL 节点进行检测和负载均衡,大家可以用 LVS+KeepalivedMySQL 主从做负载均衡。

HAProxy 负载均衡策略非常多:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)

3.1 HAProxy的优点

工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活.

4.keepalived

Keepalived功能十分强大,但是配置工作十分简单,keepalived各种功能的实现是通过设定配置文件keepalived.conf来完成的。

4.1 什么是keepalived

  • keepalived是保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
  • 以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
  • keepalived是可以工作在第三层、第四层、第五层的检测服务器状态的软件,

参考文献

LVS、Nginx、HAProxy、keepalive 的工作原理: https://www.jianshu.com/p/16e9c84fdb3c

相关文章

网友评论

      本文标题:LVS、Nginx、HAProxy、keepalive 的工作原

      本文链接:https://www.haomeiwen.com/subject/nvsflqtx.html