LVS的四种工作模式
什么是LVS
LVS(Linux Virtual Server) linux虚拟主机,是一个高可用的扩展软件(负载均衡的软件)。
ipvs(IP Virtual Server,IP虚拟服务器)是基于Netfilter的、作为Linux内核的一部分传输层负载均衡的技术,通常称为第四层LAN交换,IPVS集成在LVS中,在正式服务器集群前充当负载均衡器,可以将对TCP/UDP服务的请求转发给后端的真实服务器,并使真实服务器的服务在单个IP地址上显示为虚拟服务。
LVS的三种模式
- NAT(Network Adress Translation)
IP数据包传入经过LB时,IP包的改写过程,并没有修改源IP,只是修改目的IP为RIP,做DNAT转换,将数据包转发到后端真实机。响应包发送到LB,LB修改源IP为VIP,做SNAT转换,由于客户端的请求包与服务端的响应包都经过负载均衡器导致LB压力过大,从而影响调度真实机器的数量。网关指向LB 。
脚本实现vs/nat
#!/bin/bash
#在director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
#清空iptables规则
iptables -F -t nat
#清除自定义规则链
iptables -X -t nat
#配置SNAT策略,让内网可以上网,snat转化为外网口(虚拟机网卡模式为桥接时使用)
#iptables -t nat -A POSTROUTING -s 192.168.44.0/24 -o ens33 -j SNAT --to-source WAN口ip
#-C清除规程
/usr/sbin/ipvsadm -C
/usr/sbin/ipvsadm -A -t 192.168.44.138:80 -s wrr
/usr/sbin/ipvsadm -a -t 192.168.44.138:80 -r 192.168.44.132:80 -m -w 1
/usr/sbin/ipvsadm -a -t 192.168.44.138:80 -r 192.168.44.133:80 -m -w 1
/usr/sbin/ipvsadm -a -t 192.168.44.138:80 -r 192.168.44.134:80 -m -w 1
#-A 添加vip和端口(提供服务的IP地址和端口)
#-t tcp服务
#-s --scheduler 指定调度方法,此处使用加权轮询(weight round robin)
#-a 添加后端的真实服务器
#-r 指定real server
#-m 使用nat的lvs模式
#-w 权重值
-
DR(Direct Routing)
VIP为调度器与服务器共享,其中调度器的VIP是对外可见的,服务器的需使用non-arp模式使它对外不可见只是负责处理来自调度器VIP的请求(VIP与机器的真实IP共用同一个mac地址,同一个网卡地址对应两个IP地址)。内网的服务器必须使用Non-arp模式,不对apr广播做出响应,确保arp广播发送时只有调度器能做出响应,路由器将数据发往调度器,调度器决定将数据发往哪个real server,调度器与real server且必须在同一局域网内,lvs调度器不会改变请求报包的源ip与目的ip,通过改变数据帧的目的mac将数据传送到对应的real server。DR不修改IP包只修改数据帧。网关指向router。
-
Tunneling
与DR类似,不过RS可以在不同的网段不同的地区,LB通过建立通道与RS通信,网关指向router。
4.Fullnat模式
Fullnat与NAT模式差不多,显著的差别就是NAT模式报文做两次地址转换,FullNAT做四次报文地址转换(每次经过LB,源IP与目的IP都进行修改)(DIP就是调度器的IP)。