今天就跟大家聊聊有关nginx和lvs的优缺点,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
【关于LVS】
LVS的负载能力很强,因为其工作模式非常简单,仅进行请求的分发,而且其工作在第四层,没有流量,在效率方面最高。
LVS是在四层,可以对几乎所有的应用作负载均衡。
但是LVS对于故障后端感知并不敏感,比如在DR模式下,要是有一个后端服务器没有配置VIP,就会导致请求的一部分数据会直接丢失。
且LVS对于网络环境的稳定性要求较高,如果请求失败了,只能依赖于前端的应用自身的重试机制,负载均衡不对请求进行重新下发。
而且LVS也很受限于网络架构,在设计之初就要考虑到网络架构是否满足LVS负载的前置条件。
【关于nginx】
同样的,nginx也可以用于负载均衡,但是由于nginx需要对源端/目的端都建立连接,所以处理流量的速度受限于机器I/O,CPU内存等一系列配置,所以nginx的负载能力相对较差。
nginx安装,配置都比较简单,与LVS对比,nginx不需要很严格的网络架构,只要网络可以联通即可。
且nginx自身的重试机制,可以保证请求下发失败之后,会重新下发到健康的后端上。
但是,nginx因为没有现成的热备机制,所以,存在单点故障的问题,一般需要搭配keepalived使用。
不过,nginx作为一款应用层负载均衡(后来引入stream模块之后,四层也支持了),可以提供负载分担,贮备切换,HTTPS写在,带宽限速,隐藏真实IP,隐藏真实端口,屏蔽攻击等能力,这是LVS所不能提供的。
【对比】
lvs和nginx都是现在很主流的负载均衡方式,他们各有优缺点,在生产环境需要根据其特点做选择。
LVS | Nginx | |
四层 | 四层/七层 | |
抗负载能力 | 强 | 弱 |
配置性 | 可配置性低 同时也减少了人为出错的概率 | 可配置性高 可以配置一些高级功能 |
稳定性 | 稳定性高 有完整的双机热备方案 | 稳定性低,有单机故障 无现成的双机热备方案 |
网络架构依赖 | 强依赖 非常依赖网络架构设计 当然可以采用比较简单的NAT方式解决此问题 | 无依赖 |
网络稳定性依赖 | 依赖 数据包分发到坏的后端,不会重新分发,会直接返回错误 | 不依赖 数据包分发到坏的后端并返回错误后,会尝试重新分发到健康的后端 |
网络流量 | 仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。 FULL_NAT同Nginx。 | 所有的请求和响应流量都会经过nginx |
宿主机性能要求 | 要求较低 lvs仅仅做分发请求,流量并不从它本身出去,所以瓶颈仅仅受限于网络带宽和网卡性能 | 要求较高 因为nginx需要对源端和目的端都单独建立连接,中间还涉及到一些数据包的解析处理,所以依赖宿主机的I/O性能和CPU内存 |
转发方式 | 同步转发 lvs服务器接收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。 | 异步转发 在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户端 |
其他 | 支持rewrite重写规则:能够根据域名、url的不同,将http请求分到不同的后端服务器群组。 节省带宽:支持gzip压缩,可以添加浏览器本地缓存的header头。 |
【两者配合】
在使用上,一般最前端所采取的的策略应是lvs,也就是dns的指向应为lvs均衡器,主要原因在于nginx虽然功能强大,但是当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。
但是当lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。
所以在很多情况下,nginx会作为lvs的节点进行负载均衡,这样,既可以避免nginx的性能造成很严重的带宽瓶颈,也可以利用nginx的错误重传避免lvs一锤子买卖,还能利用nginx的各种高级功能,包括https卸载,报文头修改等。
看完上述内容,你们对nginx和lvs的优缺点有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。