LVS的工作模式
nat模式:
原理:把客户端发来的数据包的ip头的目的地址,在负载均衡器上换成其中一台的rs的ip地址,并发至次rs进行处理,处理完之后,将数据包交给负载均衡器,负载均衡器将源ip改为自己的vip,把目的ip改为客户端的ip。期间不论进来的流量和出去的流量都经过负载均衡器。
优点:集群中的物理服务器可以使用任何支持tcp/ip操作系统,仅负载均衡器需要一个合法ip
缺点:扩展性有限,当服务器节点增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都要经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变得很慢
DR模式
负载均衡器和rs使用同一个ip对外服务,但只有dr对ARP请求进行响应,所有的rs对本身这个ip的arp请求保持静默,也就是说网关会把对这个服务ip的请求全部定向给dr,dr根据调度算法找出对应的rs,把目的MAC地址改为rs的MAC地址(因为ip一致),并将请求转发到这台rs,rs收到数据包,处理完成后由于ip一致,直接将数据返给客户端,等于直接从客户端收到数据包无异,处理完直接返回给客户端。由于负载均衡器要对二层包头进行改换,所以负载均衡器和rs之间必须在同一个广播域,也可以理解为在同一台交换机上。
优点:和tun模式一样,负载均衡器只负责转发请求,应答包通过单独的路由方法返回给客户端,与tun模式相比,dr模式不需要隧道结构,因此可以使用大多数操作系统作为物理服务器
缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。
tun模式(隧道模式)
原理:首先要知道,互联网上的请求包一般都很小,而应答包却很大。那么隧道模式就是把客户端发来的数据包,封装一个新的ip头标记(仅目的ip)发送给rs,rs收到后先把数据包的头解开,还原数据包,处理后直接返回给客户端,不需要再经过负载均衡器,注意,由于rs需要对数据包进行还原,所以必须支持Iptunnel协议,所以在rs的内核中,必须编译支持Iptunnel这个选项
优点:负载均衡器只负责分发请求包,而rs直接返回给客户,减少了负载均衡器的大量数据流量,负载均衡器就能处理很大量的请求,这种方式一台负载均衡器能够为很多rs进行分发,而且跑在公网上就能对不同地域进行分发。
缺点:隧道模式的rs节点都需要合法ip,这种方式需要所有服务器支持IP tunneling协议,服务器可能只局限在部分linux系统上。