概述:

为了阐述方便,我根据官方原理图讲解,如下图所示:VS/DR的体系结构:

LVS之DR模型的搭建_服务器

  我将结合这幅原理图及具体的实例来讲解一下LVS-DR的原理,包括数据包、数据帧的走向和转换过程。

官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。

实例场景设备清单:

LVS之DR模型的搭建_服务器_02

说明:我这里为了方便,client是与vip同一网段的机器。如果是外部的用户访问,将client替换成gateway即可,因为IP包头是不变的,变的只是源mac地址。

① client向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:

LVS之DR模型的搭建_服务器_03

② VS根据负载均衡算法选择一台active的realserver(假设是192.168.57.122),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:

LVS之DR模型的搭建_服务器_04

③ realserver(192.168.57.122)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:

LVS之DR模型的搭建_服务器_05

④ 如果client与VS同一网段,那么client(192.168.57.135)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。

例子:

DIP:172.16.14.55

VIP:172.16.14.1

RIP:172.16.14.5

RIP:172.16.14.6

R1

R1上设置RIP172.16.14.5VIP172.16.14.1

先安装httpd服务,以便于一会测试

# yum installhttpd

# echo “r1.magedu.com” > /var/www/html/index.html

在命令行界面进行测试

LVS之DR模型的搭建_服务器_06

设置eth0arp解析,VIP地址及其子网掩码为255.255.255.255,并且增加路由

LVS之DR模型的搭建_服务器_07

进行ip地址设置的查看

LVS之DR模型的搭建_服务器_08

查看路由

LVS之DR模型的搭建_服务器_09

R2

设置R2RIP172.16.14.6VIP172.16.14.1

先安装httpd服务,以便于一会测试

# yum installhttpd

# echo “r1.magedu.com” > /var/www/html/index.html

在命令行界面进行测试

LVS之DR模型的搭建_服务器_10

设置eth0arp解析,VIP地址及其子网掩码为255.255.255.255,并且增加路由

LVS之DR模型的搭建_服务器_11

进行ip地址设置的查看

LVS之DR模型的搭建_服务器_12

查看路由

LVS之DR模型的搭建_服务器_13

Director

director上安装ipvsadm

#yuminstall ipvsadm

设置ipvsadm规则,同时还要进行测试是否可以访问real server的网页

LVS之DR模型的搭建_服务器_14

在浏览器上进行测试

LVS之DR模型的搭建_服务器_15

LVS之DR模型的搭建_服务器_16

附加:

可以在director上安装httpd服务。这样可以在realserver服务器出现问题时,director可以出现一个欢迎页面,告诉客户端


这里再附上一个例子

DR
director
DIP:172.16.14.55
VIP:172.16.14.1
R1
eth0:172.16.14.5
gateway 172.16.0.1
配置httpd服务
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
#   ifconfig lo:0 172.16.14.1/16 up
R2
eth0:172.16.14.6
gateway 172.16.0.1
配置httpd服务
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
#   ifconfig lo:0 172.16.14.1/16 up
R1:设置使用VIP作为源地址
#   ifconfig lo:0 down
#   ifconfig lo:0 172.16.14.1 broadcast 172.16.14.1 netmask 255.255.255.255 up
    broadcast地址为vip地址
R2:设置使用VIP作为源地址
#   ifconfig lo:0 down
#   ifconfig lo:0 172.16.14.1 broadcast 172.16.14.1 netmask 255.255.255.255 up
director
#   ifconfig eth0:0 down
#   ifconfig eth0:0 172.16.14.1 broadcast 172.16.14.1 netmask 255.255.255.255 up
R2
#   route add -host 172.16.14.1 dev lo:0
R1
#   route add -host 172.16.14.1 dev lo:0
director
#   route add -host 172.16.14.1 dev eth0:0
ipvsadm
#   ipvsadm -A -t 172.16.14.1:80 -s wlc
#   ipvsadm -a -t 172.16.14.1:80 -r 172.16.14.5 -g -w 2
#   ipvsadm -a -t 172.16.14.1:80 -r 172.16.14.6 -g -w 1