LVS原理详解

​ lvs(linux virtual serverlinux虚拟机)可以帮助集群实现负载均衡。lvs由ipvsadm与ipvs两部分组成,ipvsadm是命令行管理工具,ipvs是内核模块,目前已经是netfilter的一部分。

​ 当用户通过VIP和端口访问集群时,用户的请求报文会发往调度器。请求报文会先经过PREROUTING链,然后进行路由判断。由于此刻报文的目标IP为VIP,而VIP对于调度器来说就是本身的ip,所以报文会经过INPUT链,如果ipvs发现报文访问的VIP和端口与我们定义的LVS集群规则相符,ipvs则会根据定义好的规则与算法将报文直接发往POSTROUTING链,最后到达后端的RealServer中。

一、IP负载均衡技术

1.1 网络地址转换

网络地址转换实现虚拟服务器的VS/NAT技术(Virtural Server Via Network Address Translation)

在这里插入图片描述

注:

  1. 请求经过direct server会进行dst ip更改,但是不更改cip
  2. rip无法路由到磁盘,所以响应经过direct server(gateway),direct server会进行src ip更改

1.2 直接路由

直接路由的VS/DR技术(Virtual Server Via Direct Routing)
在这里插入图片描述
注:

  1. 请求经过direct server不需要更改dst ip
  2. 响应不需要经过direct server直接返给客户端,direct server只维护一个半连接

1.3 IP隧道

IP隧道实现虚拟服务器的VS/TUN技术(Virtual Server Via IP Tunneling)
在这里插入图片描述
注:

  1. 请求经过direct server会在原来请求的基础上进行ip封装
  2. 响应不经过direct server,也不需要更改ip,直接返给客户端

二、三种负载技术对比

三种IP负载均衡技术的优缺点如下表:

VS/NATVS/DRVS/TUN
serveranynon-arp devicetunneling
server networkprivateLANLAN/WAN
server numberlow(10~20)high(100)high(100)
server gatewayload balancerown routerown router
  1. VS/NAT
    • 优点:可运行在所有支持tcp/ip的系统,只需要一个IP(公网)配置在调度器,服务器可以使用私有地址。
    • 缺点:伸缩能力有限,节点数超过20,调度器本身就成为系统的瓶颈
  2. VS/DR
    • 优点:调度器可处理大量请求,调度器只处理客户的请求,响应数据可以直接从独立的网络路由返回给客户
    • 缺点:调度器和实际服务器都有一块网卡连在统一物理网段上,服务器不作ARP响应
  3. VS/TUN
    • 优点:与VS/DR优点的基础上,实际服务器不需要在同一个物理网段上面(经过IP封装可以到达任务服务器)
    • 缺点:所有服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议

三、命令

# 创建集群
ipvsadm -A -t VIP:port -s rr		#-A创建集群 -t表示tcp服务 -s采用Round-Robin算法
ipvsadm -a -t VIP:port -r RIP1:port -m	#-a添加一个realsever -r表示realserver地址 -m表示NAT模式,默认是dr模式
ipvsadm -a -t VIP:port -r RIP2:port -m

service ipvsadm save					#centos6中保存规则,默认保存到/etc/sysconfig/ipvsadm
ipvsadm -S > /etc/sysconfig/ipvsadm		#保存规则
ipvsadm -R < /etc/sysconfig/ipvsadm		#载入规则

# 配置转发
echo 1 > /proc/sys/net/ipv4/ip_forward	#调度机上要配置转发开关(临时方法)
sysctl -w net.ipv4.ip_forward=1			#调度机上要配置转发开关(临时方法)
vi /etc/sysctl.conf						#调度机上要配置转发开关(永久方法)
net.ipv4.ip_forward = 1 

sysctl -p								#修改配置立刻生效

注:NAT模式修改IP地址,所以创建集群的时候可以 VIP:port和RIP1:port可以不一致;但是DR模式下DS只修改MAC地址不修改IP,所以 VIP:port和RIP1:port必须一致。

四、实例

4.1 nat实例

在这里插入图片描述

通过vmare创建四台虚拟机,宿主机作为客户端,调度器配置双网卡(一个是nat模式,具有外网的功能;一个是仅主机模式,作为局域网),129~131三台机器作为realserver,网卡配置为仅主机,Gateway是调度器的ip(192.168.16.128)。nat模式下内部只修改目标IP,realserver响应时无法找到cip,所以把请求发给gateway,调度器才会返给客户端

在这里插入图片描述

客户端请求192.168.108.240:80,在240上获取tcp报文。报文里面没有体现调度器的地址(240),ipvs直接修改地址而不是重新创建tcp连接。
在这里插入图片描述

这个realserver的地址,可以发现cip一直没有修改
在这里插入图片描述

从客户端看host,一直都是192.168.108.240,说明调度器修改了源地址。

4.2 dr实例

在这里插入图片描述

注:vip除了通过keepalived方式产生,单机需要通过添加网卡的方式

# ds上配置
ifconfig ens33:0 192.168.108.243			#添加vip

# 创建集群,命令参考前文

# rs上配置
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore		#忽略VIP的arp广播请求
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 192.168.108.243 broadcast 192.168.108.243 netmask 255.255.255.255		# 添加IP地址为VIP的虚拟网卡lo:0
route add -host 192.168.108.243 dev lo:0

在这里插入图片描述
ds上的截图。
在这里插入图片描述

rs上的截图,可以发现没有体现rip,响应直接返给客户端。

五、小技巧

vmware新添加的网卡,在network-scripts下面无法找到配置文件。可以在虚拟机启动之前先添加网卡,进入系统后通过命令创建网卡

nmcli con add con-name ens38 type ethernet ifname ens38		#创建网卡(network manager client)
nmcli con show												#查看网卡

vi ifcfg-ens38												#配置网卡信息
IPADDR=192.168.16.130
GATEWAY=192.168.16.128

ifconfig ens33 down/up										#关闭/开启指定网卡
systemctl network restart 									#重启网络服务
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值