基于 NAT 的负载机制其实是经过修改数据包中的目的 IP 地址,将用户的请求转发给 Real Server 。算法
可是在这种机制下,Director Server 即接收请求报文,同时也接收响应报文,每每会成为瓶颈的存在。后端
vip=192.168.0.200 rip1=10.10.0.1 rip2=10.10.0.2 ipvsadm -E -t $vip:80 -s wrr ipvsadm -e -t $vip:80 -r $rip1 -m -w 3 ipvsadm -e -t $vip:80 -r $rip2 -m -w 1
只需在 Director Server 使用 ipvsadm 工具配置便可bash
# 查看配置的 LVS 规则 ipvsadm -L -n
LVS 经常使用的负载机制,配合 keepalive 使用能够做为一个高吞吐量的集群。服务器
那么其中关键的一环就是让请求报文只能到达 Director Server,一般用到的方法是修改内核参数:arp_ignore、arp_announce网络
arp_ignore: INTEGER(整数) 定义对目标地址为本地 IP 的 ARP 询问不一样的应答模式 0 - 默认:回应任何网络接口上对任何本地 IP 地址的 arp 查询请求; 1 - :只回答目标 IP 地址是来访问网络接口自身地址的 arp 查询请求(0 和 1 不一样在于,假设有 eth0:192.168.0.1/2四、eth1:10.10.0.1/24,那么 eth0 网卡收到 10.10.0.1 的 arp 查询,只有设置为 0 时才会回应,1 只有在查询 192.168.0.1 时才回应) 2 -:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内 3 -: 不回应该网络界面的arp请求,而只对设置的惟一和链接地址作出回应 4-7: 保留未使用 8 -:不回应全部(本地地址)的arp查询 arp_announce:INTEGER(整数) 对网络接口上本地 IP 地址发出的 ARP 回应做出相应级别的限制: 肯定不一样程度的限制,宣布对来自本地源 IP 地址发出 Arp 请求的接口 0 - (默认) 在任意网络接口上的任何本地地址 1 -尽可能避免不在该网络接口子网段的本地地址. 当发起ARP请求的源 IP 地址是被设置应该经由路由达到此网络接口的时候颇有用.此时会检查来访IP是否为全部接口上的子网段内 ip 之一.若是改来访IP 不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理. 2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通讯的本地地址.首要是选择全部的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地址. 若是没有合适的地址被发现,将选择当前的发送网络接口或其余的有可能接受到该 ARP 回应的网络接口来进行发送
经过在 Real Server 执行:并发
vip=192.168.0.38 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
添加 VIP 到 lo,这样就保证了 Real Server 的 eth0 网口收到 arp 查询时不会响应,同时 vip 也绑定到 Real Server 上了。工具
机制跟 DR 同样,只是在转发的时候,它须要从新包装IP报文。这里的real server(图中为RIP)离得都比较远。spa
用户请求之后,到director上的VIP上,它跟DR模型同样,每一个realserver上既有RIP又有VIP,Director就挑选一个real server进行响应,但director和real server并不在同一个网络上,这时候就用到隧道了,Director进行转发的时候,必定要记得CIP和VIP不能动。code
咱们转发是这样的,让它的CIP和VIP不动,在它上面再加一个IP首部,再加的IP首部源地址是DIP,目标地址的RIP的IP地址。收到报文的RIP,拆掉报文之后发现了里面还有一个封装,它就知道了,这就是隧道。server
其实数据转发原理和DR是同样的,不过这个我我的认为主要是位于不一样位置(不一样机房);LB是经过隧道进行了信息传输,虽然增长了负载,但是由于地理位置不一样的优点,仍是能够参考的一种方案;