LVS四种集群模式:NAT、DR、TUN、FULLNAT介绍
Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统
LB:Load Balancing,负载均衡,多个主机组成,每个主机只承担一部分访问请求
LVS负载均衡核心概念
LVS:Linux Virtual Server,负载调度器,内核集成,工作在传输层,四层负载均衡开源软件,可以实现Linux平台下的负载均衡, 由章文嵩博士(当前阿里云产品技术负责人)在1998年5月创立,阿里的四层SLB(ServerLoad Balance)是基于LVS+keepalived实现。
LVS集群类型中的术语:
VS:Virtual Server,Director Server(DS),Dispatcher(调度器),Load Balancer
RS:Real Server(lvs),upstream server(nginx),backend server(haproxy)
CIP:Client IP
VIP:Virtual serve IP,VS外网的IP
DIP:Director IP,VS内网的IP
RIP:Real server IP
访问流程&#xff1a;CIP <–> VIP &#61;&#61; DIP <–> RIP
LVS集群的四种工作模式
LVS-NAT&#xff1a;修改请求报文的目标IP&#xff0c;多目标IP的DNAT
LVS-DR&#xff1a;操纵封装新的MAC地址
LVS-TUN&#xff1a;在原请求IP报文之外新加一个IP首部
LVS-FULLNAT&#xff1a;修改请求报文的源和目标IP
1、LVS的NAT模式
LVS-NAT&#xff1a;本质是多目标IP的DNAT&#xff0c;通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
NAT模式的特点&#xff1a;
&#xff08;1&#xff09;RIP和DIP应在同一个IP网络&#xff0c;且应使用私网地址&#xff1b;RS的网关要指向DIP
&#xff08;2&#xff09;请求报文和响应报文都必须经由Director转发&#xff0c;Director易于成为系统瓶颈
&#xff08;3&#xff09;支持端口映射&#xff0c;可修改请求报文的目标PORT
&#xff08;4&#xff09;VS必须是Linux系统&#xff0c;RS可以是任意OS系统
2、LVS的DR模式
LVS-DR&#xff1a;Direct Routing&#xff0c;直接路由&#xff0c;LVS默认模式&#xff0c;应用最广泛&#xff0c;通过为请求报文重新封装一个MAC首部进行转发&#xff0c;源MAC是DIP所在的接口的MAC&#xff0c;目标MAC是某挑选出的RS的RIP所在接口的MAC地址&#xff1b;源IP/PORT&#xff0c;以及目标IP/PORT均保持不变
DR模式的特点&#xff1a;
&#xff08;1&#xff09;Director和各RS都配置有VIP
&#xff08;2&#xff09;确保前端路由器将目标IP为VIP的请求报文发往Director
- 在前端网关做静态绑定VIP和Director的MAC地址
- 在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
&#xff08;3&#xff09;RS的RIP可以使用私网地址&#xff0c;也可以是公网地址&#xff1b;RIP与DIP在同一IP网络&#xff1b;RIP的网关不能指向DIP&#xff0c;以确保响应报文不会经由Director
&#xff08;4&#xff09;RS和Director要在同一个物理网络
&#xff08;5&#xff09;请求报文要经由Director&#xff0c;但响应报文不经由Director&#xff0c;而由RS直接发往Client
&#xff08;6&#xff09;不支持端口映射&#xff08;端口不能修改&#xff09;
&#xff08;7&#xff09;无需开启 ip_forward
&#xff08;8&#xff09;RS可使用大多数OS系统
3、LVS的TUN模式
转发方式&#xff1a;不修改请求报文的IP首部&#xff08;源IP为CIP&#xff0c;目标IP为VIP&#xff09;&#xff0c;而在原IP报文之外再封装一个IP首部&#xff08;源IP是DIP&#xff0c;目标IP是RIP&#xff09;&#xff0c;将报文发往挑选出的目标RS&#xff1b;RS直接响应给客户端&#xff08;源IP是VIP&#xff0c;目标IP是CIP&#xff09;
TUN模式的特点&#xff1a;
&#xff08;1&#xff09;RIP和DIP可以不处于同一物理网络中&#xff0c;RS的网关一般不能指向DIP&#xff0c;且RIP可以和公网通信。也就是说集群节点可以跨互联网实现。DIP,&#xff0c;VIP&#xff0c;RIP可以是公网地址
&#xff08;2&#xff09;RealServer的tun接口上需要配置VIP地址&#xff0c;以便接收director转发过来的数据包&#xff0c;以及作为响应的报文源IP
&#xff08;3&#xff09;Director转发给RealServer时需要借助隧道&#xff0c;隧道外层的IP头部的源IP是DIP&#xff0c;目标IP是RIP&#xff0c;而RealServer响应给客户端的IP头部是根据隧道内层的IP头分析得到的&#xff0c;源IP是VIP&#xff0c;目标IP是CIP
&#xff08;4&#xff09;请求报文要经由Director&#xff0c;但响应不经由Director&#xff0c;响应由RealServer自己完成
&#xff08;5&#xff09;不支持端口映射
&#xff08;6&#xff09;RS的OS须支持隧道功能
应用场景:
一般来说&#xff0c;TUN模式常会用来负载调度缓存服务器组&#xff0c;这些缓存服务器一般放置在不同的网络环境&#xff0c;可以就近折返给客户端。在请求对象不在Cache服务器本地命中的情况下&#xff0c;Cache服务器要向源服务器发送请求&#xff0c;将结果取回&#xff0c;最后将结果返回给用户。
LAN环境一般多采用DR模式&#xff0c;WAN环境虽然可以用TUN模式&#xff0c;但是一般在WAN环境下&#xff0c;请求转发更多的被haproxy/nginx/DNS等实现。因此&#xff0c;TUN模式实际应用的很少&#xff0c;跨机房的应用一般专线光纤连接或DNS调度
4、LVS的FULLNAT模式
通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP --> DIP
VIP --> RIP
FULLNAT模式的特点&#xff1a;
&#xff08;1&#xff09;VIP是公网地址&#xff0c;RIP和DIP是私网地址&#xff0c;且通常不在同一IP网络&#xff1b;因此&#xff0c;RIP的网关一般不会指向DIP
&#xff08;2&#xff09;RS收到的请求报文源地址是DIP&#xff0c;因此&#xff0c;只需响应给DIP&#xff1b;但Director还要将其发往Client
&#xff08;3&#xff09;请求和响应报文都经由Director
&#xff08;4&#xff09;相对NAT模式&#xff0c;可以更好的实现LVS-RealServer间跨VLAN通讯
&#xff08;5&#xff09;支持端口映射
注意&#xff1a;此类型kernel默认不支持
5、LVS工作模式总结和比较
| NAT | TUN | DR |
---|
Real Server | any | Tunneling | Non-arp device |
Real server network | private | LAN/WAN | LAN |
Real server number | low (10~20) | High (100) | High (100) |
Real server gateway | load balancer | own router | own router |
优点 | 端口转换 | WAN | 性能最好 |
缺点 | 性能瓶颈 | 要求支持隧道&#xff0c;不支持端口转换 | 不支持跨网段和端口转换 |
LVS-NAT与LVS-FULLNAT&#xff1a;
- 请求和响应报文都经由Director
- LVS-NAT&#xff1a;RIP的网关要指向DIP
- LVS-FULLNAT&#xff1a;RIP和DIP未必在同一IP网络&#xff0c;但要能通信
LVS-DR与LVS-TUN&#xff1a;
- 请求报文要经由Director&#xff0c;但响应报文由RS直接发往Client
- LVS-DR&#xff1a;通过封装新的MAC首部实现&#xff0c;通过MAC网络转发
- LVS-TUN&#xff1a;通过在原IP报文外封装新IP头实现转发&#xff0c;支持远距离通信