LVS工作原理

来源:互联网 发布:html中js用函数传值 编辑:程序博客网 时间:2024/05/01 00:06

1. Virtual IP Address

Virtual IP Addresses(VIPs) 技术可以实现一台物理服务器包含多个虚拟IP。VIP可以让一台webserver服务多个SSL加密的web sites, 也可以服务集群通过一个特定的IP地址进行通讯。

配置VIP的方式:

1)ifconfig创建一个透明的独立的设备,非同于下面的eth1,这个独立的设备有单独的IP地址,子网掩码和广播地址,同时这个VIP可以作为服务接口,与其他的客户端或者其他的服务器连接。

例如ifconfig eth1:0 192.168.1.88

删除此VIP的方法是:ifconfig eth1:0 down

2)iproute2

例如ip addr add 192.168.1.28 dev eth1

通过ifconfig无法看到上面命令创建的VIP,只有通过ip addr show命令才可以看得到.

删除VIP的命令如下:

ip addr del 192.168.1.28/32 dev eth1


2.LVS-DR工作原理

也许大家早就知道LVS-DR,LVS-NAT和LVS-TUN三种,好吧,我才知道。DR是Direct Routing的意思。

盗用网上的一张图,讲解下LVS-DR的工作流程。

http://farm7.static.flickr.com/6236/6322179853_5899c2dfb6_z.jpg

Director接收用户的请求,然后根据负载均衡算法选取一台realserver,讲包转发过去,最后由realserver直接回复给用户。


在LinuxDirector上面配置一个VIP,此VIP的netmask正常配置,也就是此VIP正常工作,外部client或者router可以正常通过ARP获取此VIP的地址。

每个Real Server上面基于lo口创建VIP,此VIP的netmask为255.255.255.255。这样过的目的是,Linuxdirector会把client的报文转发给real server,如果real server没有创建这个VIP的话,real server收到这个报文的时候会认为这个报文是非法报文而丢弃。而把netmask设置为255.255.255.255后,广播地址就是其本身了,这样它就不会把ARP报文发到它本来的广播域了,可以防止与LVS上面的VIP冲突。


LinuxDirector是如何处理报文的?

1) 接收client的请求,根据你设定的负载均衡算法选取一台realserver的ip;

2)以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;

3)在hash table中记录连接信息。

http://farm7.static.flickr.com/6100/6322179927_eb8e928a02_z.jpg

报文的处理流程是:client --> VS --> RS --> client

0 0