LVS的三种模式
lvs:Linux Virtual Server (Linux虚拟服务器)
l4:四层交换,四层路由:
根据请求报文的目标IP和PORT将其转发至后端主机集群中的某一台主机(根据挑选算法)
LVS 集群的设备地址命名
-
CIP:Client IP,客户端 IP 地址
-
VIP:Virtual IP,LVS 面向用户请求的 IP 地址
-
DIP:Director IP,LVS 用户和后端服务器通信的 IP 地址
-
RIP:Real server IP,后端服务器用于和 LVS 通信的 IP 地址
NAT 网络地址转换
(Network address translation)
lvs-nat本质上就是多目标的DNAT(iptables)
lvs-nat模式通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出来的某RS的RIP地址实现转发
LVS-NAT 模型类似于 DNAT,工作机制与 DNAT 一样,当客户端请求的是集群服务时,LVS 修改请求报文的目标地址为 RIP,转发至后端的 RealServer,并修改后端响应报文的源地址为 VIP,响应至客户端。
/
LVS-NAT的特点:
-
RS和DIP应该使用私网地址,且RS的网关要指向DIP
-
请求和响应报文都要经由director转发,所以配置时需要将director的转发功能开启,极高负载的场景中,director可能会成为系统性能瓶颈
-
支持端口映射
-
RS可以使用任意OS
-
RS的RIP和Director的DIP必须在同一IP网络
/
DR 直接路由模式
-
(Direct routing)lvs的默认模式(使用的都是同一个VIP)
-
lvs-dr模式通过修改请求报文的目标MAC地址进行转发
Director:调度器要配置VIP,DIP
RSs:所有的Real Server都要配置RIP,VIP
/
LVS-DR的特点:
保证前端路由器将目标IP为VIP的请求报文发送给director,解决方案有以下三种:
-
静态绑定
-
arptables
-
修改RS主机内核的2个参数:
arp_announce:是否接收并记录别人的通告以及是否通告自己的mac地址给别人。
arp_announce有三个可选值,0,1,2,其意义如下:
0(default,默认值为0):通告自己所拥有的所有地址
1:尽量不通告与自己不在同一个网段的地址,比如不通告2.0网段的地址给1.0网段,不通告3.0网段的地址给1.0网段等,但是是尽量不通告,有可能还是会通告的
尽量避免不在该网络接口子网段的本地地址做出arp回应.
当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.
此时会检查来访IP是否为所有接口上的子网段内ip之一.如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2:总是不通告与自己不在同一个网段的地址,比如不通告2.0网段的地址给1.0网段,不通告3.0网段的地址给1.0网段等,绝对不会通告
对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.
首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址.
如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
/
arp_ignore:是否响应arp请求
arp_ignore有9个可选值,0,1,2,3,4,5,6,7,8,其意义如下:
-
0(default,默认值为0):回应任何网络接口上对任何本地IP地址的arp查询请求
-
1:请求报文从哪个接口进入的且请求的目标地址就是此接口配置的地址才予以响应,否则不响应,只回答目标IP地址是来访网络接口本地地址的ARP查询请求
-
2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
-
3:不回应该网络接口的arp请求,而只对设置的唯一和连接地址做出回应
-
4-7:保留未使用
-
8:不回应所有(本地地址)的arp查询
- - RS的RIP可以使用私有地址,也可以使用公网地址
- - RS跟Director必须在同一物理网络中,中间不能有路由器相隔
- - 请求报文经由Director调度,但响应报文一定不能经由Director
- - 不支持端口映射
- - RS可以是大多数OS
- - RS的网关不能指向DIP
/
TUN 需要系统支持隧道
(tunneling)
lvs-tun模式不修改请求报文的ip首部,而是通过在原有的ip首部(CIP<–>VIP)之外再封装一个ip首部(DIP<–>RIP)
LVS-TUN的特点:
-
RIP,DIP,VIP必须是公网地址
-
RS的网关不能指向DIP
-
请求报文必须经由director调度,但响应报文必须不能经由director
-
不支持端口映射
-
RS的OS必须支持隧道功能
lvs-fullnat:keepalived
- director通过同时修改请求报文的目标地址和源地址进行转发
lvs-fullnat的特点:
-
VIP是公网地址,RIP和DIP是私网地址,RIP与DIP无须在同一网络中
-
RS接收到的请求报文的源地址为DIP,因此要响应给DIP
-
请求报文和响应报文都必须经由Director
-
支持端口映射机制
-
RS可以使用任意OS
三种工作模式比较
工作模式 | NAT | TUN | DR |
---|---|---|---|
Real server(节点服务器) | Config dr gw | Tunneling | Non-arp device/tie vip |
Server Network | Private | LAN/WAN | LAN |
Server number(节点数量) | Low 10-20 | High 100 | High 100 |
Real server gateway | Load balance | Own router | Own router |
优点 | 地址和端口转换 | Wan环境加密数据 | 性能最高 |
缺点 | 效率低 | 需要隧道支持 | 不能跨域LAN |