1、结构

client: 客户端IP CIP:10.3.138.126

Director:分发器 VIP:192.168.10.200

​ DIP:192.168.10.128 //分发器真实IP

Real Server: RIP: 192.168.10.129 192.168.10.130

​ VIP: 192.168.10.200

2、LVS_DR模式原理

DR添加VIP供外部访问,DR将请求转发至server服务端,在server服务端上的回环网卡上添加同DR的VIP,并且掩码高于使用网卡,这样就能实现server端回数据的ip是VIP,客户端才能正常接收。DR区别于NET模式是返回包时不用再经过DR分发器,减轻DR负载。NET需要开启路由转发。

3、搭建

要求DR和RS必须在同一个物理网络内

1、Director分发器配置

yum -y install ipvsadm            //ipvsadm LVS管理工具,RHEL确保LoadBalancer仓库可用
ip addr add dev ens33 192.168.10.200/32    //配置VIP

ipvsadm -C                        // 清除内核虚拟服务器表中的所有记录
ipvsadm -A -t 192.168.10.200:80 -s rr   //在服务器列表中新添加一条新的虚拟服务器记录 -s算法 rr轮询
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.129 -g    //-r 真实的服务器地址(要转发到哪)
ipvsadm -a -t 192.168.122.100:80 -r 192.168.10.130 -g   //-g工作模式
ipvsadm -S    //保存

----------------------------------------------------------
ipvsadm -Ln   //查看配置列表
ipvsadm -L -n --stats           // 显示统计信息
ipvsadm - L -n --rate           //看速率   
ipvsadm -Ln -c              //查看LVS的连接条目

2、RS服务端配置

systemctl start nginx     //开启你的WEB服务

ip addr add dev lo 192.168.122.100/32                //在lo接口上绑定VIP
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore      //non-arp
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

因为:realServer的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让realServer不接受响应.  
解决:
echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore 
arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo上,lo不是接收设备的进口)
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce   
使用掩码最长的的ip来回应。保证回包的时候是用vip回,不然客户端请求的是VIP,回复却不是请求的IP就会有问题。

4、测试

浏览器:http://10.3.138.200
linux终端:curl http://10.3.138.200
多次访问后
ipvsadm -Ln -c     //查看总请求数,可以看到一个server分发的请求数就能看到效果了。