LVS 负载均衡集群
说明:在学习LVS负载均衡集群时,最好对网络通信原理,尤其是ARP通信原理有所了解,否则,将无法理解LVS的工作原理。
LVS工作原理和安装配置
#################工作模式及其原理####################VS/NAT模式(即Virtual Server via Network Address Translation): 此种模式是通过网络地址转换技术来实现虚拟服务器。 ##实现原理: 1.请求: 客户端发送请求到调度器,调度器将请求报文的目的地址(即虚拟IP地址)及其端口,改写成选定的Real Server地址和端口,然后把请求报文发送给Real Server。 2.应答: Server将应答的数据报文返回用户时,在经过调度器时,将数据报文的源地址和端口改成虚拟IP地址和相应端口,最后将数据发送给客户端,负载调度完成。 注:这种模式可以既可以节省公司购买公网IP的开销,也可以提高安全性。 ##VS/TUN模式(即Virtual Server via IP Tunneling): 此种模式是通过IP隧道技术来实现虚拟服务器。 ##实现原理: 1.请求与应答: 客户端发送请求到调度器,调度器将请求报文通过Ip隧道技术转发到Real Server,并由隧道网卡tunl0(此网卡配置了VIP)接收并处理。最后,应答数据由Real Server直接返回给客户端。 注:此种模式中的RealServer既可以和调度器(DirectorServer)在同一网段也可以在不同的网段。##VS/DR模式(即Virtual Server via Direct Routing) 此种模式是通过直接路由技术来实现虚拟服务器。 ##实现原理: 1.请求与应答: 客户端发送请求到调度器,调度器将请求报文的目的MAC地址由DIP_MAC改成RIP_MAC,但源MAC地址不变,还是CIP_MAC。然后,请求报文被转发给 Real Server。最后,应答数据由 Real Server直接返回给客户端。 注:在此过程中,因为是在请求报文到达调度器后,所有的通信都是局域网通信,所以请求报文的源IP,目的IP(即VIP)始终未变。并且由于LVS内部的实现机制,实现了源MAC地址不变,目的MAC地址改为RealServer的MAC地址,从而实现了数据的转发。而在数据回应时,因为应答数据都是通过配置特定的路由在VIP的网口发送出去的,因此也就避免了源IP是RIP的问题。 2.疑问: 如何防止客户端下次请求,不经过调度器,直接访问RealServer的情况? 答:1.因为一台计算机加入网络中的时候,首先都会向网络中的所有设备通告自己的所有的网口上的IP地址和对应的MAC地址,因此需要避免RealServer将自己的VIP通告给其他联网设备。所以要设置: arp_announce #此参数可以定义向联网设备中发送ARP通告的网络接口所要通告的自己的IP地址的限制级别。比如,值:2——只通告对应网口所在的ip地址;值:0——通告计算机上所有网口上所有IP地址;值:1——尽量避免通告其他网口上的IP地址。 2.其次是其他主机在发送数据给RealServer时,会发送ARP请求给RealServer。因此要避免RealServer中的VIP端口来响应其他联网设备发来的ARP请求。所以要设置: arp_ignore #此参数可以定义网络接口响应ARP请求的不同的应答模式,以至于可以解析目的IP地址。例如:值:0——响应配置在本地网口上所在的所有IP地址;值:1——仅回应接收到ARP请求的所在的网口上的IP地址;值:2——仅回应接收到ARP请求的所在的网口上的IP地址,并且来访IP地址必须和本地的IP地址在同一个子网内。 注:此种模式中的RealServer和调度器(DirectorServer)必须在同一网段。并且这种模式是三种模式性能最好的。#####################LVS各种模式的配置#######################VS/NAT模式 1.网络环境: 主机 ip地址Direct Server: D1 eth0: 192.168.1.104/255.255.255.0 eth1: 10.0.0.1/255.255.255.0Real Server : R1 eth0: 10.0.0.11/255.255.255.0 Real Server : R2 eth0: 10.0.0.12/255.255.255.0 2.配置Direct Server 1.echo 1 >/proc/sys/net/ipv4/ip_forward #开启linux路由管道 2.ipvadm -At 192.168.1.104:80 -s rr #添加虚拟服务,-s表示指定调度算法; 3.ipvdam -at 192.168.1.104:80 -r 10.0.0.11 -m ipvdam -at 192.168.1.104:80 -r 10.0.0.12 -m #添加真实服务器,-m表示NAT模式 4. service ipvadm save 注意,Direct Server上的网卡不需要配置网关地址。 3.配置Real Server 1.配置网关为10.0.0.1 2.安装httpd服务进行测试 注:当然在生产环境中,并没有这么简单。还需要配置共享存储、DirectServer的高可用、以及存储高可用等。##VS/TUN模式 1.网络环境: 主机 ip地址Direct Server: D1 eth0: 192.168.1.101/255.255.255.0 tunl0: 192.168.1.104/255.255.255.255 Real Server : R1 eth0: 192.168.1.102/255.255.255.0 tunl0:: 192.168.1.104/255.255.255.255 Real Server : R2 eth0: 192.168.1.103/255.255.255.0 tunl0:: 192.168.1.104/255.255.255.255 2.配置Direct Server 1.ifconfig tunl0 192.168.1.104 netmask 255.255.255.255 up 2.route add -host 192.168.1.104 dev tunl0 3.ipvadm -At 192.168.1.104:80 -s rr #添加虚拟服务,-s表示指定调度算法; 4.ipvdam -at 192.168.1.104:80 -r 10.0.0.11 -i ipvdam -at 192.168.1.104:80 -r 10.0.0.12 -i #添加真实服务器 5. service ipvadm save 3.配置Real Server 1. echo 1 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore echo 2 >/proc/sys/net/ipv4/conf/tunl0/arp_announce echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce 2.ifconfig tunl0 192.168.1.104 netmask 255.255.255.255 route add -host 192.168.1.104 dev tunl0 3.安装httpd服务进行测试##VS/DR模式 1.网络环境: 主机 ip地址Direct Server: D1 eth0: 192.168.1.101/255.255.255.0 lo:0: 192.168.1.104/255.255.255.255 Real Server : R1 eth0: 192.168.1.102/255.255.255.0 lo:0: 192.168.1.104/255.255.255.255 Real Server : R2 eth0: 192.168.1.103/255.255.255.0 lo:0: 192.168.1.104/255.255.255.255 2.配置Direct Server 1.ifconfig eth0:0 192.168.1.104 netmask 255.255.255.255 up 2.route add -host 192.168.1.104 dev eth0:0 3.ipvadm -At 192.168.1.104:80 -s rr #添加虚拟服务,-s表示指定调度算法; 4.ipvdam -at 192.168.1.104:80 -r 10.0.0.11 -g ipvdam -at 192.168.1.104:80 -r 10.0.0.12 -g #添加真实服务器 5. service ipvadm save 3.配置Real Server 1.ifconfig lo:0 192.168.1.104 netmask 255.255.255.255 up route add -host 192.168.1.104 dev lo:0 2. 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 3.安装httpd服务进行测试 注:在设置VIP地址,其所在的网络分类(A类,B类,C类)应该和DIP一样。否则测试不会成功。