DR 模式——直接路由
• Direct Routing ,简称DR模式
• 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
• 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器
优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量
缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境
如果有些LVS的名词或者术语不懂的可以去看看我关于LVS介绍的文章,在我的其它博文里
下面是简单的架构图
实验环境
系统 – ip – 角色
centos7 – 192.168.121.153 – DS
centos7 – 192.168.121.154 – RS
centos7 – 192.168.121.155 – RS
然后下面开始实验
准备三台在同一局域网的机子正常启动
首先配置DS服务器
开机后先添加一个作为外面访问的网络子接口,在配置文件里添加IPADDR=
[root@server153 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
# Generated by parse-kickstart
DEVICE="ens33"
IPV6INIT="yes"
BOOTPROTO=static
UUID="4e976e09-2ace-4b18-9309-b9c6e001a3ed"
ONBOOT="yes"
IPADDR=192.168.121.153
PREFIX=24
DNS1=192.168.121.2
GATEWAY=192.168.121.2
IPADDR1=192.168.121.66
PREFIX1=24
添加以后重启一下网络
[root@server153 ~]# systemctl restart network
然后下载ipvsadm包
yum install -y ipvsadm
下好以后就配置lvs负载均衡的规则
[root@server153 ~]# ipvsadm -A -t 192.168.121.66:80 -s rr
[root@server153 ~]# ipvsadm -a -t 192.168.121.66:80 -r 192.168.121.154:80 -g
[root@server153 ~]# ipvsadm -a -t 192.168.121.66:80 -r 192.168.121.155:80 -g
[root@server153 ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@server153 ~]# systemctl restart ipvsadm.service
[root@server153 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.121.66:80 rr
-> 192.168.121.154:80 Route 1 0 0
-> 192.168.121.155:80 Route 1 0 0
然后DS服务器的配置就配好了
然后到RS服务器
两台RS服务器的配置完全一样,页面测试数据改一下能区分访问的是哪台服务器就好了
启动以后也一样添加一个网络接口,这里我直接修改回环地址lo的ip,不过这个可不是用来给外网访问的,是拥有这个应答ip时才会接受到这个请求这个ip的包
[root@server154 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=192.168.121.66
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback
然后重启网络
[root@server154 ~]# systemctl restart network
[root@server154 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.121.66/32 brd 192.168.121.66 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:33:a6:5c brd ff:ff:ff:ff:ff:ff
inet 192.168.121.154/24 brd 192.168.121.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe33:a65c/64 scope link
valid_lft forever preferred_lft forever
然后修改sysctl.conf文件,抑制ARP的回应
[root@server154 ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
然后让配置生效
[root@server154 ~]# vim /etc/sysctl.conf
[root@server154 ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
然后下载nginx
yum install -y nginx
创建一个测试页面
[root@server154 ~]# mkdir /html
[root@server154 ~]# vim /html/index.html
this is 154
修改nginx的根目录
[root@server154 ~]# vim /etc/nginx/nginx.conf
然后就启动nginx
[root@server154 ~]# systemctl restart nginx.service
然后就可以测试环境了
用一台其它的服务器访问页面
可以看到数据是可以访问到的
然后去浏览器试试
可以看到浏览器也是访问到的,所以我们的配置是可以的,这样就完成了LVS的DR模型的简单测试