选型总结:
【运维角度】:LVS对网络依赖性较高,却没有日志输出,不方便运维维护及排查问题。LVS属于重量级应用,LVS多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。比如LVS第一次配置需要在应用服务器中配置路由规则,当配置文件或者网络规则配置错误时,没有任何日志可以排查到错误原因,只能通过抓包方式一步一步排查。所以从云计算自动化角度来说,选择可维护性高,配置较简单,处理问题较简单的工具是适合的。Nginx有多种日志输出,可以更准确的定位问题和发现问题,搭建和测试更容易。
【性能角度】:公有云网络环境下,一个用户可以使用多个VLAN,不同VLAN是垮网段的,所以一个用户的应用,可能会出现在不同网段中。LVS模型共两种,一种是NAT、一种是DR。DR性能优,基本无损耗。NAT性能不如nginx。但是DR只能在同一网段使用,不能垮网段,所以垮网段的情况必须使用LVS的NAT模型。而从性能角度LVS NAT不如Nginx。所以从性能角度,Nginx更优。
【带宽角度】:当大型网站的假设成立时,应选择LVS的DR模式,其性能更优稳定性更强,据千兆网卡瞬间速率可以达到70、80M,但一般只能维持在10M左右,所以我们的网卡配置无法抵挡住大型网站的网络压力,所以从带宽流量硬件角度我们应承载的业务应定位为中小型网站。Nginx的业界定位是适合中小型网站。
【功能角度】:nginx因为工作在网络7层协议,LVS工作在网络4层协议,所以nginx支持更多的功能。
- 支持gzip proxy,可以解压缩请求。可将网页内容压缩后传输至浏览器,降低网络流量带宽的消耗;
- 默认有健康检查功能,该功能是必备项,性能表现良好。而LVS如果要做健康检查,必须与keepalived结合,需要有一台keepalived server,做通与业务网的网络,每个应用和nginx实例端所在服务器都需要安装keepalived client才能达到nginx自带功能效果;
- 可以针对http应用本身来做分流策略,比如针对域名、目录结构等,相比之下lvs并不具备这样的功能,所以 nginx单凭这点可利用的场合就远多于lvs了;
- nginx可作为网页静态服务器,当用户量并发量高时,可以采用动态和静态网页分离的方式配置应用服务,降低对应用的网络资源消耗;
- nginx也可作为中层代理使用,这一层面nginx基本上无对手。
- 社区资源角度:nginx社区活跃,第三方补丁和模块很多,LVS相比之下逊色很多。
最终选型选择了NGINX,其实LVS也是一个比较理想的软负载服务器,在此没有过多介绍它的优点,从我们得需求出发,选择了NGINX。本质上同样优秀。