LVS-NAT与LVS-DR类型的负载均衡实现原理

lvs-dr类型工作原理:
①:client端向目标IP(VIP)发送请求,经由路由器和交换机设备和后,此时的请求数据包头文件的目标MAC值为调度器的MAC,源MAC值为client的MAC,目标IP为VIP,源IP为CIP。
②:调度器经调度算法会选择一台RS,并将客户端请求头文件重新封装,重新封装后,目标MAC变为经调度算法选择后的RS的MAC值,源MAC为调度器的MAC值
③:RS收到调度器发来的请求并拆包处理,拆包后包头文件目标IP依然为VIP,源IP依然为CIP,因为在RS上也配置了VIP,所以RS会将请求包处理并直接响应给client,不会再经由调度器。
疑问:
为什么调度器和RS都配置VIP,client的请求只会到达调度器,而不会产生IP冲突?
因为client在向VIP发送请求时,会经过路由器交换机,交换机会将请求在局域网内广播出去(调度器和RS在同一局域网),此时只要配置了VIP的主机都会响应,造成IP冲突,
要解决这个问题,就需要阻断交换机的广播送达RS,让client的请求只到达调度器,有三种办法可以实现:
①:在路由器上做ARP绑定(此方法不推荐)
②:arptables
③:修改RS内核参数(推荐此方法)
对linux主机来讲,地址是属于内核而不是属于主机,所以默认情况下同一主机的各网卡默认都是知道其他网卡的地址数据的,
当请求到达主机某一网卡时,此主机的其他网卡也能收到通知,若地址与自己相符,也会发出响应。通过修改内核arp_ignore,arp_announce两参数可以配置通告响应限制等级
arp_ignore:限制响应级别
0:默认值,使同一主机任意网卡配置的任意地址进行响应
1:仅在请求的目的IP配置在本地主机网卡地址相同时,才给予响应
arp_announce:限制通告级别
0:默认值,把本机上的所有网卡的所有信息向本机所有接口进行通告
1:尽量避免默认情况
2:必须避免默认情况
简单配置:http://blog.51cto.com/13322786/2158968

lvs-nat类型实现原理:
①:client端向目标IP(VIP)发送请求,目标IP为VIP,源IP为CIP。
②:调度器收到请求后,将请求经内核转发至DIP,经过调度算法,选择一台RS处理请求,此时请求的目标IP为RIP,源IP为DIP
③:RS接收并处理请求,响应给调度器,再由调度器将处理完成的请求响应给client
简单配置:http://blog.51cto.com/13322786/2156492

猜你喜欢

转载自blog.51cto.com/13322786/2159094