前言
严格的来说nginx
是实现反向代理的,lvs
是负载均衡软件,但nginx
的反向代理实现的功能效果也相当于负载均衡实现的效果,所以,不那么严格的说nginx
也能实现负载均衡,特别是在企业中使用开源的nginx
实现负载均衡还是比较常见的。
nginx反向代理
nginx
的反向代理接受用户的请求后,会代理用户重新发送请求给其下的后端节点服务器(注意这里说的是代理用户重新发送请求),最后再把数据返回给前端用户。在节点服务器来看,访问节点服务器的是nginx
代理服务器,而对用户来说,用户访问的是nginx
代理服务器,用户并不知道后端的节点服务器。
LVS负载均衡软件
LVS
是大名鼎鼎的负载均衡软件,LVS
实现的功能是对用户的请求数据包的转发、传递,其中DR
模式明显的特征就是从后端节点服务器来看,接收的请求还是来之前端用户。
7层负载均衡、4层负载均衡
根据URL
进行实现代理转发应用的情况,我们称之为第7层(应用层)负载均衡,而LVS
一般用于TCP
等的转发,我们称之为第4层(传输层)负载均衡。
注意:我们所说的nginx
重新发送,客户端到真正的后端服务器经历了2次tcp
握手,第一次是客户端到nginx
反向代理服务器,第二次是nginx
到后端服务器,而使用lvs
就没有这样,lvs
是通过修改报文ip
地址实现转发的,即客户端请求lvs
服务器,lvs
服务器修改ip
地址转发请求,这中间只有客户端到lvs
服务器的tcp
请求。