LVS(Linux Vitual Server)---虚拟服务器,在工作当中它是作为一个前段的Director(调度器)工作的,Director它本身不提供任何的服务,只是将接收到的请求转发给后端的Real Seerver处理,然后在响应给客户端。所以我们也称LVS为“4 layer switch/route"。LVS本身的两个基本的组件就是:ipvs和ipvsadm。而ipvs是一个工作在内核当中的,它其实就是相当于做成了netfilter框架的一个模块。就像netfilter当中有filter表、net表、mangle表,而你现在又加入了Ipvs表,主要是用于让定义好的规则生效,ipvsadm是工作在用户空间,用来定义LVS的转发规则。LVS是工作在INPUT链上的。
-------------------------------------转发过程图----------------------------------------
Director(调度器)即是负载均衡器,一个合格的Director要满足以下的要求。
DR模型:直接路由模型
DR模型的特点:
1、RS跟Director必须在同一物理网上(即中间不能隔路由设备)。
2、RIP可以使用公网地址
3、Director仅处理请求报文
4、RS的网关不能指向DIP
5、不能使用端口映射
6、大多数操作系统可以用于RS
7、一般DR模型的Director能处理比NAT模型多的多的请求
DR模型详解:
CIP向VIP发出请求,CIP经由路由设备,到达局域网,它的目的是想和Director的VIP通信,但是它不知道VIP的MAC,在局域网内部通讯看的是MAC地址,所以它要发广播,所有收到广播包的都会回应此广播,此时就会产生问题了,RS1、RS2也会回应因为他们也有同样的VIP啊,那交换机怎么知道,哪个是Director的MAC呢?所以我们这里必须要控制RS1和RS2不回应此广播包,这就不得不提到两个内核参数,arp_ignor和arp_annouce,在RS1和RS2上均对这两个参数给与定义,则RS1和RS2就不会回应由交换发出的这个找VIP的对应的MAC的广播包了。此时数据包就可以到达Director了,Director通过某种调度方法计算发现RS1符合这个要求,所以它要把这个请求包交给RS1来处理,但是它也不知道RS1的MAC啊,所以它也要发起广播消息,此时Director发起的广播是在其内部发起的,每个RS的这个私有的地址都是不一样的。所以当RS1收到这个广播的时候发现时找它的,它就会回应,则此时Director就得到了RS1的MAC,它将请求报文的目标MAC地址换成RS1的MAC地址,然后在将这个请求包返回给交换机,此时交换机就认为这个请求是发给RS1的,它就会将其发给RS1,RS1收到请求包,直接用自己的VIP给予回应,不再经由Director.所以这就需要在RS1中定义一条路由"route add -host VIP dev lo:0"明确告知RS1,只要是请求VIP的,我就用lo:0这个上面的VIP来给予回应。
注意:1、RS和DR都是单网卡的哦,每个RS的VIP是设置在lo:0上的,这个lo:0是虚拟的哈。DR的VIP是在eth0:0上面配置的。
2、由DR发出的广播包不被RS屏蔽掉的原因是因为它是广播的RIP这是他们的私有网络的地址,刚刚设置的参数arp_ignor和arp_annouce,只是针对VIP的哈