LVS-DR模式

DR模式工作原理

1、客户端发送请求至VIP,也就是访问服务,请求报文源地址是CIP,目标地址为VIP;

2、LVS调度器接收到请求,报文在PREROUTING链检查,确定目的IP是本机,于是将报文发送至INPUT链,ipvs内核模块确定请求的服务是我们配置的LVS集群服务,然后根据用户设定的均衡策略选择某台后端RS,并将目标MAC地址修改RIP的MAC地址。因为调度器和后端服务器RS在同个网段,因此直接二层互通,将请求发给选择的RS处理;

3、因为报文目的mac是本机,且RS上有配置VIP,因此RS能接收该报文。后端服务处理完请求后,将响应直接发往客户端,此时源IP地址为VIP,目标IP为CIP。

环境准备

LVS(调度器) 10.0.0.5 vip 10.0.0.3
web01 10.0.0.7
web02 10.0.0.8

LVS调度器

1、安装ipvsadm

yum -y install ipvsadm

2、在lvs调度器上配置vip和路由

临时配置,重启就消失

ifconfig eth0:0 10.0.0.3/24 broadcast 10.0.0.255 netmask 255.255.255.0 up
route add -host 10.0.0.3 dev eth0:0

永久配置

\cp /etc/sysconfig/network-scripts/ifcfg-eth{0,0:0}
cd /etc/sysconfig/network-scripts
sed -ri 's/NAME="eth0"/NAME="eth0:0"/' ifcfg-eth0:0
sed -ri '/^DEVICE=/cDEVICE="eth0:0"' ifcfg-eth0:0
sed -ri '/^IPADDR/cIPADDR=10.0.0.3' ifcfg-eth0:0
ifup ifcfg-eth0:0

3、配置路由转发

vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0       #禁止转发重定向报文
net.ipv4.conf.eth0.send_redirects = 0      #禁止eth0转发重定向报文
net.ipv4.conf.default.send_redirects = 0   #禁止转发默认重定向报文

4、配置lvs集群

[root@LVS~]# ipvsadm -C                                  #清空所有规则
[root@LVS~]# ipvsadm -A -t 10.0.0.3:80 -s rr             #定义LVS服务,并指定负责均衡策略为rr,即轮询;
[root@LVS~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g #添加一台后端web服务器,作为负载均衡节点,并指定为DR模式。
[root@LVS~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g #添加一台后端web服务器,作为负载均衡节点,并指定为DR模式。
[root@LVS~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@LVS ~]# systemctl start ipvsadm
[root@LVS ~]# systemctl enable ipvsadm

ipvsadm基本命令参数

-A  指定添加的LVS负载均衡虚拟服务
-t  指定虚拟服务器的IP地址和端口
-s  指定调度算法,ss为轮询,wrr为加权轮询,dh为目标地址散列,sh为源地址散列,lc为最少链接等
-a  在对应的VIP下添加RS节点
-g  指定LVS的工作模式为DR模式
-l  指定LVS的工作模式为tunnel模式
-m  指定LVS的工作模式为NAT模式

查看LVS对应的均衡规则

[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.1.5:80 rr
  -> 10.0.0.7:80                  Route   1      0          0         
  -> 10.0.0.8:80                  Route   1      0          0  

后端RS配置

1、安装nginx

yum -y install nginx

2、修改网页内容

[root@web01 ~]# cat /usr/share/nginx/html/index.html
web01

[root@web02 ~]# cat /usr/share/nginx/html/index.html
web02

3、开启web服务

systemctl start nginx
systemctl enable nginx

4、将两台web服务器的lo网卡地址修改成vip(掩码必须是32位)

临时配置

ifconfig lo:0 10.0.0.3/32

永久配置

\cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}
cd /etc/sysconfig/network-scripts
sed -ri '/^#/d' ifcfg-lo:0
sed -ri '/^DEVICE/cDEVICE=lo:0' ifcfg-lo:0
sed -ri '/^NAME/cNAME=lo:0' ifcfg-lo:0
sed -ri '/^IPADDR/cIPADDR=10.0.0.3' ifcfg-lo:0
sed -ri '/^NETWORK/cNETWORK=10.0.0.3' ifcfg-lo:0
sed -ri '/^NETMASK/cNETMASK=255.255.255.255' ifcfg-lo:0
sed -ri '/^BROADCAST/cBROADCAST=10.0.0.3' ifcfg-lo:0
ifup ifcfg-lo:0

5、给web服务器的设置内核参数

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore     #忽略arp响应,不允许接收
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce   #为了让vip可以发包出去,允许转发

测试

[root@web03 ~]# curl http://10.0.0.3
web02
[root@web03 ~]# curl http://10.0.0.3
web01
[root@web03 ~]# curl http://10.0.0.3
web02
[root@web03 ~]# curl http://10.0.0.3
web01
#显示的结果满足轮询策略
posted @ 2021-08-30 14:33  Cai_HL  阅读(202)  评论(0编辑  收藏  举报
>