一.LVS
1.LVS:Linux Virtual Server,负责转发用户请求至后端真实提供服务的集群服务器,根据用户请求的IP和端口判断是否需要转发;
2.分类:LVS-NAT,LVS-DR,LVS-TUN;
3.LVS工作原理:LVS工作在内核上,prerouting-->input-->forword-->output-->postrouting,当请求需要转发时,在INPUT链修改用户请求报文,实现转发至后端集群服务器;
4.LVS和iptables不能同时使用;
5.LVS由ipvsadm和ipvs组成。ipvsadm用来在用户空间定义集群服务的命令行工具,ipvs:工作在内核,监控在INPUT链上;
6.LVS根据调度方法(Schedule Method)来实现负载均衡;
二.LVS-NAT
1.LVS-NAT:Network address translation;
2.架构图
3.具体工作原理
客户端访问后端real server时,请求先发到Director,此时源IP为CIP,目标IP为VIP;
由Director转发请求至real server,此时源IP为DIP,目标IP为RIP;
当real server向客户端回应时,此时源IP为RIP,目标IP为CIP;
所以,此时需要将RIP转化成VIP,原理类似于DNAT;
4.特性
1.Director要负责处理所有的通信,所以压力较大,所以能调度10个左右的real server;
2.支持端口映射;
3.集群节点与Director必须在同一个网络中;
4.real server的网关必须在Director的DIP上;
5.RIP通常是私有地址,仅用于集群节点间通信;
6.real server可以使用任意操作系统;
7.director易成为系统瓶颈;
三.LVS-DR
1.LVS-DR:Direct routing;
2.架构图
3.具体工作原理
客户端请求发送到Director的VIP,此时源IP为CIP,目标IP为VIP;
Director转发请求到rs,发送给rs时,通过ARP做地址解析,此时不需要修改目标地址,只修改MAC地址,所以不拆IP首部,拆MAC首部;
rs直接回应给客户端,所以此时rs中也配了个VIP,配置在网卡别名上,而且是隐藏的,不会回应ARP广播,不通信,只用于回应报文中的源IP;
4.特性
1.各集群节点必须和Director在同一物理网络中,因为要根据物理网络转发;
2.RIP地址可以不是私有IP,实现远程管控;
3.只负责入站请求,回应由rs直接发送,不用经过director;
4.不支持端口映射,因为并没有重新IP包头;
5.Director一定不能是rs的默认网关指向;
6.处理能力比NAT更加强;
四.LVS-TUN
1.LVS-TUN:IP tunneling;
2.图同NAT;
3.具体工作原理:
客户端向Director发起请求,此时源IP为CIP,目标IP为VIP;
Director向rs转发数据,此时通过隧道,再加一层IP报头,源IP为VIP,目标IP为RIP;
数据到达rs后,解IP数据包外层后得到真正的请求信息,直接发往客户端;
4.特性
1.集群节点不需要在同一网络中;
2.RIP必须是公网地址;
3.Direct仅处理入站请求;
4.相应报文不能通过Director;
5.不支持端口映射;
6.支持隧道功能的OS才能用于rs。