1、lvs集群
LVS(Linux Virtual Server)是Linux虚拟服务器,是一个虚拟的服务器集群系统
LVS集群中实现的IP负载均衡的三种技术:VS/NAT、VS/TUN和VS/DR
VS/NAT技术(Virtual Server via Network Address Translation):网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器;
VS/TUN (Virtual Server via IP Tunneling):针对于VS/NAT的缺点和网络服务的非对称性,通过IP隧道方法实现虚拟服务器;
VS/DR(Virtual Server via Direct Routing):通过直接路由实现虚拟服务器的方法
它们可以极大地提高系统的伸缩性
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
集群采用三层结构
一般来说,LVS集群采用三层结构,其主要组成部分为:
A、负载调度器(loadbalancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
2、lvs工作原理
lvs是工作在防火墙的INPUT链上,用户请求访问从PREROUTING到INPUT,lvs在INPUT链上强行改变数据流向,从而实现调度
当用户向负载均衡器(DS)发出请求时,调度器首先会把请求发往内核空间,然后PREROUTING链会接收到用户请求,路由前它会判断你这个ip是不是访问的我本机,确定是本机,把数据包发到INPUT链上。这时,ipvs其实就是工作在INPUT链上,当用户的请求到达INPUT链时,ipvs会把用户的请求和自己已经定义好的服务集群(server2、server3上的服务)进行比对,如果用户请求的就是我们定义的服务集群,这时ipvs会强行修改数据包的目的ip地址、端口,并且更新数据包,然后发往POSTROUTING链,接收到数据包之后,发现ip地址刚好是我们后端自己的服务器,它通过再一次路由把请求发往真正的后端web服务器(RS)
3、实现lvs调度器的DR模式
DR模式原理过程:
client—>DS(调度器)—>PREROUTIN—>INPUT—>POSTROUTING—>RS—>lo(回环接口)—>网卡eth0—>client
lvs分为两个组件:ipvs、ipvsadm
ipv