组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer)。负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访 问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检 测节点或服务进程故障和正确地重置系统达到高可用性。由于我们的负载调度技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)。
如图,lvs原理图
LVS的工作模式有三种如图1、DR:Direct Routing 直接路由模式 不会修改客户端传来的数据包中的IP地址的,通过修改客户端发来的数据包中的目的mac地址实现的,将数据包转发到真实的服务器,真实服务器响应请求之后,将源和目的对调,直接给客户端回包。
DR模式的调度原理
1、客户端CIP的请求会发往lvs调度器的VIP(虚拟IP)
2、调度器收到目标为VIP的数据包之后,就会将数据包的 目标MAC地址 按照调度算法改成某一台real server的mac地址,通过交换机发给这台RS服务器(因为包的目标mac是该服务器),现在收到的包目标IP,并不是RIP(真实服务器IP); 所以:需要我们在rs主机的loopback设备上开子接口绑定上VIP
------------------------------------------------
为什么不能配置在eth0等接口上呢?
loopback接口本地使用的,对外不可见,防止和director上的vip冲突
(引出一个arp抑制的问题)
arp抑制就是不让真实服务器回应对vip的arp广播。
------------------------------------------------
3、真实服务器RS处理web请求,将应答包返回给客户端,此时这个包中的源IP是VIP,目的IP是CIP(客户IP),这个包根本不需要经过调度器。需要RS具有公网IP或者网关。
ps(为什么要同一网段,因为LVS是直接改包的目的MAC地址,而不是IP,目的IP还是虚拟IP,收包的真实服务器一定要有虚拟IP,这样才能拆包,因为这样只是二层的东西,所以要同一网段)
(为什么要抑制ARP,一是因为DR是同一网段,客户机访问VIP时,一定要访问LVS,不能是真实服务器,所以真实服务器的vip要抑制
二是多台真实服务器用同一个IP地址,不抑制的话会造成网络冲突,这样真实服务器会坏掉)