说起lvs,不得不说说关于lvs的工作原理,通常来说lvs的工作方式有三种:nat模式(LVS/NAT),直接路由模式( LVS/DR),ip隧道模式(LVS/TUN),不过据说还有第四种模式(FULL NAT),下面我们来介绍介绍关于lvs常用的三种工作模式说明
1. NAT模式(LVS/NAT)
如下为lvs nat模式的示意说明图:
cip:202.100.1.2
VIP:202.103.106.5
Real-server:172.16.0.2 和 172.16.0.3(提供http服务)
整个请求过程示意:
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表中删除此条记录。
以下为数据的封装过程
LVS负载均衡模式---NAT模式原理
NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(原地址NAT)如果把NAT的过程稍微变化,就可以 成为负载均衡的一种方式原理其实就是把从客户端发来的IP包的IP头目的地址在DR上换成其中一台REALSERVER的IP地址并发至此 REALSERVER,而REALSERVER则在处理完成后把数据经过DR主机发回给客户端。本人正在打算学习java,所以如果有好的java视频教程的话可以给我推荐一下啊。DR在这个时候再把数据包的原IP地址改为DR接口上的 IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过DR
LVS负载均衡模式---NAT模式特点
(1)RS和DIP属于同一IP网络中网卡应该使用私网地址,且RS的网关要指向DIP;
(2)请求和响应报文都要经由director转发;极高负载的场景中,director可能会成为系统瓶颈;
(3)支持端口映射;
(4)RS可以使用任意操作系统(OS);
(5)DIR需要两块网卡(属于典型的lan/wan)RIP和Director的必须有一块网卡在同一IP网络;
优点:实现方便简单,也容易理解;
缺点:Director会称为一个优化的瓶颈,所有的报文都要经过Director,因此,负载后端RS的台数在10台左右,服务器性能而定,如果Director坏掉,后果很严重,
2. NAT模式(LVS/DR)
如下为lvs DR模式的示意说明图:
clp:202.100.1.2
VIP:202.103.106.5
Real-server:172.16.0.2 和 172.16.0.3(提供http服务)
整个请求过程示意:
1>client发送request到DIR的VIP上,Director接收。DIR(lvs)根据负载均衡算法选择一台realserver,将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里;,
(此时请求报文的原ip地址和目标ip地址都不变,只是源mac和目标mac分别对应DIR和RIP所在网卡mac)
2> Real-server根据arp请求收到request包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS;
(注意此时RS到达client不需要经过DIR,RS可以通过路由或自己的网关到达client)
3> 从client来的属于本次连接的包,查hash表,然后发给对应的Real-server。
4> 当client发送完毕,此次连接结束或者连接超时,那么LVS自动从hash表中删除此条记录。