【运维面试】面试官:LVS与nginx有什么区别

LVS与nginx的各种优缺点

lvs的优缺点

lvs负载能力强,工作逻辑简单,仅仅是请求分发,而且工作在第四层,没有流量,所以效率特别高。 能够对几乎所有的应用进行负载,比如web,数据库等。

但LVS有个缺点是不能辨别节点故障,且比较依赖网络环境。只有使用DR模式才能在同一网段中分流,效果才能得到保证。

nginx优缺点

nginx工作在网路的七层,可以对HTTP应用实施分流策略,比如域名,结构等, 所以nginx可以使用的场合多与LVS,并且nginx对网络的依赖比较小,原则上只要能ping通,网页正常能访问,就能联通。
nginx作为负载还有一个优点,可以通过服务器处理网页返回的状态码,超时等来检测服务器内部故障,并把返回的错误请求重发送到另外一个节点。

区别举例
  1. 比如用户上传一个文件,这个时候处理该上传信息的节点正好出现故障,nginx会把上传的请求重新发送到另外一台服务器,而LVS在这种情况下会直接断掉。
  2. 在童颜更多负载下,nginx处理流量受服务器的IO等配置影响,负载能力相对LVS来说较弱。
  3. nginx 配置比较简单,出现问题有相应的错误日志,而LVS对网络依赖比较大,很可能因为网络的问题导致配置不成功,而且解决报错比较困难。
  4. 比较小的网站,比如PV小于100W,用nginx就可以应付,如果机器多用DNS轮询可以解决。 LVS适合在大型网站或者提供重要服务且机器较多时候使用。

面试范例

范例一:
我们公司使用的是LVS作为负载均衡,相对nginx来说LVS负载能力强,且工作在第四层,主要做请求的分发,没有流量,所以效率上比nginx高。关键是lvs还少出故障,这几年出现故障的情况也仅仅是因为内存,cpu等问题导致的lvs问题。

而且LVS虽然没有太多的可配置选项,但只要配置好了就很少去动他,更大程度的减少了人为因素的出错几率。
而对于nginx来说,他工作在7层,可以针对http应用本身来做分流策略,比如针对域名,目录结构等,lvs不具备这样的功能,不过我们公司因为很少针对这些做分流,说以主要还是用lvs。

不过据我的了解,nginx相对来说配置简单,测试方便,有问题可以直接查看错误日志,所以如果是新手,在公司并发不是很大的情况下,建议用nginx。

当然如果把nginx和LVS结合起来使用,也是不错的,nginx用来做http的反向代理,能够upsteam实现http请求的多种方式的均衡转发,由于采用的是异步转发可以做到如果一个服务器请求失败,立即转换到其他服务器,直到请求成功,或者请求到最后一台服务器失败为止,这样可以最大程度的提高请求通过率。
在高并发请求下,LVS+nginx的模式中,nginx可以作为一个中间环节,来减小后端tomcat的服务压力,做一些业务切换,分流,前置缓存的功能。

猜你喜欢

转载自blog.csdn.net/xinshuzhan/article/details/108592199