Contos7搭建LVS的DR直接路由模式

1、工作原理图
Contos7搭建LVS的DR直接路由模式
①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。
2、特点
1,集群节点和director必须在一个物理网络内
2,RIP可以使用公网地址或私有地址
3,director仅处理入站请求,director服务器的压力比较小
4,集群节点网关不指向director,故出站不经过director
5,不支持端口映射
6,大多数操作系统可以作为realserver,要支持隔离arp广播
优点:
1.LVS服务器只是修改了mac地址,所以非常快速,并且LVS不会成为瓶颈。
缺点:
1.要求较高,LVS服务器必须和后端真实服务器处于同一vlan中;
2.后端真实服务器直接响应客户端,对于后端真实服务器来说,并不安全。
3、 ARP问题
通常,DR模式需要在Real-server上配置VIP,配置的方式为:
/sbin/ifconfig lo:0 inet VIP netmask 255.255.255.255

  1. 原因在于,当LVS把client的包转发给Real-server时,因为包的目的IP地址是VIP,那么如果Real-server收到这个包后,发现包的目的IP不是自己的系统IP,那么就会认为这个包不是发给自己的,就会丢弃这个包,所以需要将这个IP地址绑到网卡上;当发送应答包给client时,Real-server就会把包的源和目的地址调换,直接回复给client。

  2. 关于ARP广播:

  1. 上面绑定VIP的掩码是”255.255.255.255″,说明广播地址是其本身,那么他就不会将ARP发送到实际的自己该属于的广播域了,这样防止与LVS上VIP冲突,而导致IP冲突。
  2. 另外在Linux的Real-server上,需要设置ARP的sysctl选项:
    4、部署DR模式
    4.1 环境准备
    192.168.171.128 client
    192.168.171.11 dr1 负载均衡器 虚拟IP地址:192.168.171.14
    192.168.171.12 rs1 web1 虚拟IP地址:192.168.171.14
    192.168.171.13 rs2 web2 虚拟IP地址:192.168.171.14
    4.2 LVS主机上面操作(VIP与RIP要配到同一个网卡上)
    4.2.1 添加VIP
    ifconfig ens33:0 192.168.171.14 broadcast 192.168.171.255 netmask 255.255.255.0 up
    route add -host 192.168.171.14 dev ens33:0
    4.2.2 设置路由转发

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1 #开启路由功能
net.ipv4.conf.all.send_redirects = 0 #禁止转发重定向报文
net.ipv4.conf.ens33.send_redirects = 0 禁止ens33转发重定向报文
net.ipv4.conf.default.send_redirects = 0 禁止转发默认重定向报文
4.2.3 设置IPVSADM
安装ipvsadm

yum install ipvsadm -y

ipvsadm -C
ipvsadm -A -t 192.168.171.14:80 -s rr
ipvsadm -a -t 192.168.171.14:80 -r 192.168.171.12:80 -g
ipvsadm -a -t 192.168.171.14:80 -r 192.168.171.13:80 -g
参数说明:
-A 添加virtual server -t 指定使用tcp协议
-s 指定调度策略为rr(轮询) -a 添加realserver
-r 指定realserver是谁
-g LVS类型DR: -g:Gateway,DR(默认使用的类型) -i:ipip,TUN -m:masquerade(地址伪装),NAT
4.2.4 配置永久生效

ipvsadm-save > /etc/sysconfig/ipvsadm

systemctl enable ipvsadm;# systemctl start ipvsadm

4.3在后端主机(rs)操作
安装nginx
#yum install nginx -y
修改主页内容

vim /usr/share/nginx/html/index.html

启动服务
systemctl start nginx;systemctl enable nginx
给后端的两个web服务器的lo网卡设置子网掩码为32位vip
rs1:

ifconfig lo:0 192.168.171.14/32

rs2:

ifconfig lo:0 192.168.171.14/32

给后端的两个web服务器设置内核参数
忽略arp响应 ,不允许收
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
为了让vip发包出去,但允许发
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

4.4至此LVS DR模式已部署完成,现在在client 进行访问测试
crul 192.168.73.14
Contos7搭建LVS的DR直接路由模式

ipvsadm状态测试: ipvsadm -Lnc
Contos7搭建LVS的DR直接路由模式