四层与七层的负载均衡:
想必大家都知道一般lvs可以做四层上的负载均衡[即传输层],而nginx可以做七层上的负载均衡[应用层].lvs在做负载均衡
的时候之所以没有流量产生,我个人理解是:由于在四层就决定了所要分发的机器即"个别"的可以说在三次握手的时候此时还没
有进行数据发送,所以就"没有"流量产生.[不知道对不对,不对的话请拍砖].
Nginx七层上的负载均衡:
nginx作为七层的负载均衡主要就是利用其:proxy_pass以及upstream来进行负载均衡,常见的负载均衡算法请看之前写的
文章.
Lvs四层上的负载均衡:
首先lvs在四层上的负载均衡有三种方式[网上也有好多的资料]分别是:
## DR模式的工作过程:
- 1.当一个client发送一个WEB请求到VIP,LVS服务器根据VIP选择对应的real-server的Pool,根据算法,在Pool中选择一台
Real-server.
- 2.LVS在hash表中记录该次连接,然后将client的请求包发给选择的Real-server.
- 3.最后选择的Real-server把应答包直接传给client.
- 4.当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的Real-server上.
当连接中止或者超时,hash表中的记录将被删除。
DR模式的几个细节:
LVS和Real-server必须在相同的网段.
DR模式在转发client的包时,只修改了包目的MAC地址为选定的Real-server的mac地址,所以如果LVS和Real-server在不通
的广播域内,那么Real-server就没办法接收到转发的包.
IP Tunneling模式:
- 1. client 发送request包到LVS服务器的VIP上.
- 2. VIP按照算法选择后端的一个Real-server,并将记录一条消息到hash表中,然后将client的request包封装到一个新的IP
包里,新IP包的目的IP是Real-server的IP,然后转发给Real-server.
- 3. Real-server收到包后,解封装,取出client的request包,发现他的目的地址是VIP,而Real-server发现在自己的lo:0口
上有这个IP地址,于是处理client的请求,然后将relpy这个request包直接发给client.
- 4. 该client的后面的request包,LVS直接按照hash表中的记录直接转发给Real-server,当传输完毕或者连接超时,那么将删
除hash表中的记录.
LVS和Real-server不需要在一个网段:
由于通过IP Tunneling 封装后,封装后的IP包的目的地址为Real-server的IP地址,那么只要Real-server的地址能路由可达,
Real-server在什么网络里都可以,这样可以减少对于公网IP地址的消耗,但是因为要处理IP Tunneling封装和解封装的开销,那
么效率不如DR模式.
NAT模式:
- 1.client发送request到LVS的VIP上,VIP选择一个Real-server,并记录连接信息到hash表中,然后修改client的request的目
的IP地址为Real-server的地址,将请求发给Real-server.
- 2.Real-server收到request包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS.
- 3.LVS收到reply包后,修改reply包的的源地址为VIP,发送给client.
- 4.从client来的属于本次连接的包,查hash表,然后发给对应的Real-server.
- 5.当client发送完毕,此次连接结束或者连接超时,那么LVS自动从hash表中删除此条记录.
注意:
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]是一样的].
欢迎一起交流学习
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
- 邮件(1031379296#qq.com, 把#换成@)
- QQ: 1031379296
- weibo: @王发康
Thx
Author
- Linux\nginx\golang\c\c++爱好者
- 欢迎一起交流 一起学习#
- Others say good and Others good