LVS之DR模型实战

需要设备:三台VMWare虚拟机

分别为

node11-lvs(192.168.186.11)

node10(192.168.186.10)

node20(192.168.186.20)

虚拟机下LVS四层负载之DR模型的一个发包流程。

实战

为lvs服务器添加一个负载VIP

[root@node11-lvs ~]# ifconfig ens33:100 192.168.186.100/24
[root@node11-lvs ~]# 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
    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:0c:29:65:68:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.186.11/24 brd 192.168.186.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.186.100/24 brd 192.168.186.255 scope global secondary ens33:100
       valid_lft forever preferred_lft forever
    inet6 fe80::181b:1c30:bf89:8fa1/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::3ae7:833d:de3c:47c1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

修改两个被负载节点的arp协议参数,添加隐藏VIP

隐藏VIP方法:对外隐藏,对内可见 :

kernel parameter:
目标mac地址为全F,交换机触发广播
  /proc/sys/net/ipv4/conf/*IF*/
arp_ignore: 定义接收到ARP请求时的响应级别;
  0:只要本地配置的有相应地址,就给予响应;
  1:仅在请求的目标(MAC)地址配置请求
        到达的接口上的时候,才给予响应;

arp_announce:定义将自己地址向外通告时的通告级别;
  0:将本地任何接口上的任何地址向外通告;
  1:试图仅向目标网络通告与其网络匹配的地址;
  2:仅向与本地接口上地址匹配的网络进行通告;

两台节点分别执行

[root@node10 ens33]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore 
[root@node10 ens33]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce 
[root@node10 ens33]# ifconfig lo:100 192.168.186.100 netmask 255.255.255.255
[root@node10 ens33]# 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.186.100/32 scope global lo:100
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

解释一下这里的操作:

echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore 这个操作的目的是将网卡ens33的arp_ignore参数改为1,仅在请求的目标(MAC)地址配置请求到达的接口上的时候,才给予响应。也就是说,只有当lvs将包的目标mac地址转为被负载节点的mac地址时,实际节点时会进行响应的。而DR模式就是将负载的包下一跳MAC转为实际的目标MAC地址。

echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce 这个操作目的是将网卡ens33的arp_announce参数改为2,仅向与本地接口上地址匹配的网络进行通告,隐藏环回接口,避免ip冲突。

ifconfig lo:100 192.168.186.100 netmask 255.255.255.255 为该节点添加隐藏IP192.168.186.100,使得访问192.168.186.100的包发送到这台节点时可以进行响应。掩码配置为255.255.255.255,是为了避免192.168.186.0冲突,如果配置为255.255.255.0,那么所有192.168.186.x号段的出向包在与掩码作&运算后都跳到了环回接口 192.168.186.100上,接收者仍然是自己,包出不去。

同样的操作在两台上面都执行一边。

在两台服务节点上安装服务,使用httpd启动一个简单的页面

#安装httpd
yum install -y httpd
#编写页面
 vi /var/www/html/index.html
#内容编辑本节点IP 以作区分
192.168.186.10
启动httpd:
systemctl start httpd

安装完后访问http://192.168.186.10

为LVS服务器安装lvs调用程序ipvsadm  并设置规则

安装ipvsadm 

yum install ipvsadm -y

配置监听端口,以轮询的方式转发

[root@node11-lvs ~]# ipvsadm -A  -t  192.168.186.100:80  -s rr

添加负载节点,192.168.186.100:80  ->  192.168.186.10,以DR模式转发 权重为1

[root@node11-lvs ~]# ipvsadm -a  -t 192.168.186.100:80  -r  192.168.186.10 -g -w 1

添加负载节点,192.168.186.100:80  ->  192.168.186.20,以DR模式转发 权重为1

[root@node11-lvs ~]# ipvsadm -a  -t 192.168.186.100:80  -r  192.168.186.20 -g -w 1

测试 http://192.168.186.100

查看LVS窥探传输层的记录

[root@node11-lvs ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:45  FIN_WAIT    192.168.186.1:56447 192.168.186.100:80 192.168.186.10:80
TCP 01:45  FIN_WAIT    192.168.186.1:56448 192.168.186.100:80 192.168.186.20:80
TCP 01:21  FIN_WAIT    192.168.186.1:56438 192.168.186.100:80 192.168.186.10:80
TCP 14:58  ESTABLISHED 192.168.186.1:56450 192.168.186.100:80 192.168.186.10:80
TCP 01:27  FIN_WAIT    192.168.186.1:56437 192.168.186.100:80 192.168.186.20:80
TCP 14:58  ESTABLISHED 192.168.186.1:56453 192.168.186.100:80 192.168.186.10:80
TCP 01:27  FIN_WAIT    192.168.186.1:56440 192.168.186.100:80 192.168.186.20:80
TCP 01:55  FIN_WAIT    192.168.186.1:56451 192.168.186.100:80 192.168.186.20:80

down其中一台的场景

down以后多次请求,查看窥探记录

[root@node10 ens33]# ifconfig lo:100 down

出现SYN_RECV包,说明LVS将包转发出去以后,服务端并没有响应到请求端,所以请求端的确认包无法发送到LVS

[root@node11-lvs ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:53  FIN_WAIT    192.168.186.1:56568 192.168.186.100:80 192.168.186.20:80
TCP 00:52  SYN_RECV    192.168.186.1:56567 192.168.186.100:80 192.168.186.10:80
TCP 14:59  ESTABLISHED 192.168.186.1:56572 192.168.186.100:80 192.168.186.20:80
TCP 00:56  SYN_RECV    192.168.186.1:56571 192.168.186.100:80 192.168.186.10:80

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值