LVS三种工作模式以及最主流的DR模式搭建流程

本文深入解析LVS的DR模式,介绍其工作原理、配置流程及常见问题解决,帮助读者理解DR模式如何实现高效率的负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LVS常用的工作模式有NAT、DR、和TUN三种,其中DR模式性能最为优越,使用最为广泛
NAT模式:网络地址转换
NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,数据的进出都要经过LVS的处理。LVS需要作为Real Server(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为Real Server的IP。Real Server接收到包以后,仿佛是客户端直接发给它的一样。Real Server处理完返回响应时,源IP是Real Server IP,目标IP是客户端的IP。这时Real Server的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端Real Server的存在。

lvs1.jpg


 

DR模式:直接路由模式

 

请求由LVS接受,但是由Real Server返还给用户信息,不经过LVS转发。这里引申一个问题:当用户请求时,源IP是CIP,目标地址是VIP;LVS调度器将请求转发给Real Server处理后再发送给用户,这个时候源IP是RIP,目标地址是CIP,但是用户并没有请求RIP,用RIP响应请求时CIP不会接受,所以需要用VIP响应请求。

具体实现方法:DR模式下LVS和Real server都需要配备一样的VIP(Real Server通过将VIP绑定在loopback实现),问题又来了,在一个网段内多台服务器出现同样IP地址会引起冲突,那么如何工作下去呢?需要在调度服务器上设置一个VIP一个DIP,每个Real Server也有一个RIP和一个VIP,但是Real Server的VIP地址做了隐藏,不会应答广播,只在响应CIP时作为源地址使用。当产生请求时LVS将目标MAC地址修改为某台Real Server的MAC,该包就会被转发到相应的Real Server处理,此时源IP和目标IP都没变。Real Server收到LVS转发来的包时发现MAC是自己的,IP也是自己的,于是这个包被合法地接受。当Real Server返回响应时,只要直接向CIP返回即可,不再经过LVS。 

lvs2.jpg

 

LVS  DR模式搭建流程:

LVS的安装参考本站文章:http://www.linuxe.cn/post-192.html

模拟环境如下:

DIP:192.168.36.10

VIP:192.168.36.100

RIP:192.168.36.15、192.168.36.16 

①、首先在作为LVS调度器(Director)的服务器外网卡上配置一个VIP,并且添加一个路由条目,指明接收到该VIP的请求后交给谁处理

ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up

route add -host $VIP dev eth0:1

 

查看源码打印?

01[root@Server01 ipvsadm-1.26]# ifconfig eth0:0 192.168.36.100 broadcast 192.168.36.100 netmask 255.255.255.255 up    #添加VIP,广播地址和VIP一样,注意子网掩码不要写错
02[root@Server01 ipvsadm-1.26]# ifconfig
03eth0      Link encap:Ethernet  HWaddr 00:0C:29:B1:5B:03 
04          inet addr:192.168.36.10  Bcast:192.168.36.255  Mask:255.255.255.0
05          inet6 addr: fe80::20c:29ff:feb1:5b03/64 Scope:Link
06          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
07          RX packets:193262 errors:0 dropped:0 overruns:0 frame:0
08          TX packets:46932 errors:0 dropped:0 overruns:0 carrier:0
09          collisions:0 txqueuelen:1000
10          RX bytes:273832326 (261.1 MiB)  TX bytes:4948956 (4.7 MiB)
11 
12eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:B1:5B:03 
13          inet addr:192.168.36.100  Bcast:192.168.36.100  Mask:255.255.255.255
14          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
15 
16lo        Link encap:Local Loopback 
17          inet addr:127.0.0.1  Mask:255.0.0.0
18          inet6 addr: ::1/128 Scope:Host
19          UP LOOPBACK RUNNING  MTU:65536  Metric:1
20          RX packets:29 errors:0 dropped:0 overruns:0 frame:0
21          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
22          collisions:0 txqueuelen:0
23          RX bytes:2440 (2.3 KiB)  TX bytes:2440 (2.3 KiB)
24 
25[root@Server01 ipvsadm-1.26]# ping 192.168.36.100    #验证是否畅通
26PING 192.168.36.100 (192.168.36.100) 56(84) bytes of data.
2764 bytes from 192.168.36.100: icmp_seq=1 ttl=64 time=0.057 ms
2864 bytes from 192.168.36.100: icmp_seq=2 ttl=64 time=0.079 ms
29 
30[root@Server01 ipvsadm-1.26]# route add -host 192.168.36.100 dev eth0:0    #增加路由条目

 

②、使用ipvsadm工具配置Director和Real Server信息

 

查看源码打印?

1[root@Server01 ipvsadm-1.26]# ipvsadm -A -t 192.168.36.100:80 -s rr    #指定LVS调度器的地址以及算法             
2[root@Server01 ipvsadm-1.26]# ipvsadm -a -t 192.168.36.100:80 -r 192.168.36.15:80 -g    #指定Real Server的地址以及工作模式,这里是15服务器
3[root@Server01 ipvsadm-1.26]# ipvsadm -a -t 192.168.36.100:80 -r 192.168.36.16:80 -g    #指定Real Server的地址以及工作模式,这里是16服务器

 

③、使用ipvsadm -L 可以检查一下配置结果

lvsdr.png

④、在每台Real Server上绑定VIP并增加路由条目

ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

route add -host $VIP dev lo:0

⑤、在每台Real Server上做ARP相关抑制,其中2个参数为arp_ignore、arp_announce

arp_ignore(接收到ARP请求后的响应级别):

0:本地有相应地址就相应,无论在哪个接口

1:仅对请求的目标地址是在本地接口上才作响应

arp_announce(向外回应自己网络地址):

 

0:在任意网络接口上的本地地址都向外响应

1:尽量使用与本地接口匹配的地址向外响应

2: 仅使用与本地接口匹配的网络向外响应

查看源码打印?

1echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
2echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
3echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
4echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

 

⑥、访问VIP地址测试,可以看到分别访问到了两台不同的服务器,实际生产环境中两个服务器上文件应该是一致的,这里为了测试效果,所以放了不同的文件区分,如果无法正常打开页面,查看下iptables的规则是否有清空

ba93775b133922394baa8c1bbcd2a15b.gif

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值