Sky12

lvs and nginx load 四层与七层上的负载

This project is maintained by wangfakang

四层与七层的负载均衡:

想必大家都知道一般lvs可以做四层上的负载均衡[即传输层],而nginx可以做七层上的负载均衡[应用层].lvs在做负载均衡 的时候之所以没有流量产生,我个人理解是:由于在四层就决定了所要分发的机器即"个别"的可以说在三次握手的时候此时还没 有进行数据发送,所以就"没有"流量产生.[不知道对不对,不对的话请拍砖].

Nginx七层上的负载均衡:

nginx作为七层的负载均衡主要就是利用其:proxy_pass以及upstream来进行负载均衡,常见的负载均衡算法请看之前写的 文章.

Lvs四层上的负载均衡:

首先lvs在四层上的负载均衡有三种方式[网上也有好多的资料]分别是:

## DR模式的工作过程:

DR模式的几个细节:
LVS和Real-server必须在相同的网段.

DR模式在转发client的包时,只修改了包目的MAC地址为选定的Real-server的mac地址,所以如果LVS和Real-server在不通 的广播域内,那么Real-server就没办法接收到转发的包.

IP Tunneling模式:

LVS和Real-server不需要在一个网段:

由于通过IP Tunneling 封装后,封装后的IP包的目的地址为Real-server的IP地址,那么只要Real-server的地址能路由可达, Real-server在什么网络里都可以,这样可以减少对于公网IP地址的消耗,但是因为要处理IP Tunneling封装和解封装的开销,那 么效率不如DR模式.

NAT模式:

注意:

NAT模式和DR模式的却别DR模式是修改了目的MAC地址为真实server的mac地址,而NAT模式是修改了请求的目的ip地址是真实server 的ip地址.还有一个区别就是DR模式直接从真实机器把响应给client,而NAT模式需要把响应给lvs主机然后由lvs主机在发给client.那 么DR方式真实机器如何把响应直接就给client,由于在每一台真实机器上的网卡上都配有lvs的vip,这样最后响应的时候把目的和源ip 调换就ok了[每一台的真实机器的ip和lvs的ip[vip]是一样的].

欢迎一起交流学习

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

Thx

Author