1.LVS
LVS 不像 HAProxy 等七层软负载面向的是 HTTP 包,所以七层负载可以做的 URL 解析等工作,LVS 无法完成。
LVS 是四层负载均衡,也就是说建立在 OSI 模型的第四层——传输层之上,传输层上有我们熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的负载均衡。
1.1 LVS 的优点
-
抗负载能力强
:是工作在传输层上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和 cpu 资源消耗比较低。 -
配置性比较低
:这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。 -
工作稳定
:因为其本身抗负载能力很强,自身有完整的双机热备方案,如 LVS+Keepalived。 -
无流量
:LVS 只分发请求,而流量并不从它本身出去,这点保证了均衡器 IO 的性能不会受到大流量的影响。 -
应用范围比较广
:因为 LVS 工作在传输层,所以它几乎可以对所有应用做负载均衡,包括 http、数据库、在线聊天室等等。
1.2 LVS 的缺点
- 软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是 Nginx、HAProxy+Keepalived 的优势所在。
- 如果是网站应用比较庞大的话,LVS/DR+Keepalived 实施起来就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了
2.Nginx
Nginx 是一个强大的 Web 服务器软件,用于处理高并发的 HTTP 请求和作为反向代理服务器做负载均衡。具有高性能、轻量级、内存消耗少,强大的负载均衡能力等优势。
2.1 Nginx 的优点
-
跨平台
:Nginx
可以在大多数Unix like OS
编译运行,而且也有Windows
的移植版本 -
配置异常简单
:非常容易上手。配置风格跟程序开发一样,神一般的配置 -
非阻塞、高并发连接
:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数 -
事件驱动
:通信机制采用epoll
模型,支持更大的并发连接 -
Master/Worker 结构
:一个 master 进程,生成一个或多个 worker 进程 -
内存消耗小
:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个 Nginx 进程才消耗150M 内存(15M*10=150M
) -
内置的健康检查功能
:如果 Nginx 代理的后端的某台 Web 服务器宕机了,不会影响前端访问 -
节省带宽
:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头 -
稳定性高
:用于反向代理,宕机的概率微乎其微
2.2 Nginx 的缺点
- Nginx 仅能支 持http、https 和 Email 协议,这样就在适用范围上面小些,这个是它的缺点
- 对后端服务器的健康检查,只支持通过端口来检测,不支持通过 ur l来检测。不支持 Session 的直接保持,但能通过 ip_hash 来解决
3.HAProxy
HAProxy
支持两种代理模式TCP
(四层)和HTTP
(七层),也是支持虚拟主机的。
HAProxy
的优点能够补充 Nginx
的一些缺点,比如支持 Session
的保持,Cookie
的引导;同时支持通过获取指定的 url
来检测后端服务器的状态。
HAProxy
跟 LVS
类似,本身就只是一款负载均衡软件;单纯从效率上来讲 HAProxy
会比 Nginx
有更出色的负载均衡速度,在并发处理上也是优于 Nginx
的。
HAProxy
支持 TCP
协议的负载均衡转发,可以对 MySQL
读进行负载均衡,对后端的 MySQL
节点进行检测和负载均衡,大家可以用 LVS+Keepalived
对 MySQL
主从做负载均衡。
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
网友评论