实战 LVS-DR直接路由集群
实战 LVS-DR直接路由集群
1、工作原理:
1: 源IP:CIP 目标IP:VIP 源MAC:CMAC 目标MAC:FMAC
2: 源IP:CIP 目标IP:VIP 源MAC:FMAC 目标MAC:DMAC
3: 源IP:CIP 目标IP:VIP 源MAC:DMAC 目标MAC:RMAC
4: 源IP:VIP 目标IP:CIP 无需考虑MAC地址的转换了,因为我们可以直接通过CIP和VIP直接去找到客户端,实现了响应报文并不需要经过我们的DIRECTOR
注意:
1: DIP和VIP以及RIP,就需要统一物理网段的。
LVS-DR是工作于二层, 基于MAC的转发, 不在同一物理网段,就是在不同的广播域,这样报文将无法转
发出去,所以需要同一物理网段
2: DIRECTOR上有VIP和DIP, 是不是必须有两个IP地址和两张网卡
是必须有两个IP的, VIP只是用来接收用户请求的,但是DIP是用来做内网广播的
但是只需要一张网卡, 是一张网卡,将VIP绑定到网卡上,也就是我们这张网卡拥有VIP和DIP
3: VIP可不可以不配置在环回口上
不可以, 我们arp抑制是基于网卡的,如果将VIP绑定在我们响应卡上, 将无法得到抑制, 但是不建议
使另外一张物理网卡来做,万一这张物理网卡接了网线呢
4: 我们是不是一定要这些IP都是公网IP呢?
不一定, 但是官方原理上说的是公网IP, 而且是同一网段的公网IP,如果不在同一个网段的,我们需
要处理的都是网络广播问题,而且不一定要全是公网。
部署开始
简易拓扑图:
一、DIRCTOR配置
1、 DIRctor固化IP地址
[root@dirctor ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=288e688f-dd28-46f7-9ce2-debee7c1ce34
DEVICE=ens33
ONBOOT=yes
IPADDR=10.27.17.90
NETMASK=255.255.255.0
GATEWAY=10.27.17.1
DNS1=61.139.2.69
[root@dirctor network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
[root@dirctor network-scripts]# vim ifcfg-ens33:1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:1
UUID=288e688f-dd28-46f7-9ce2-debee7c1ce34
DEVICE=ens33:1
ONBOOT=yes
IPADDR=10.27.17.91
NETMASK=255.255.255.0
GATEWAY=10.27.17.1
DNS1=61.139.2.69
[root@dirctor network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.27.17.90 netmask 255.255.255.0 broadcast 10.27.17.255
inet6 fe80::9351:8416:9faa:76e9 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:66:21:ee txqueuelen 1000 (Ethernet)
RX packets 109969 bytes 9794715 (9.3 MiB)
RX errors 0 dropped 450 overruns 0 frame 0
TX packets 2639 bytes 367818 (359.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.27.17.91 netmask 255.255.255.0 broadcast 10.27.17.255
ether 00:0c:29:66:21:ee txqueuelen 1000 (Ethernet)
2、DIRCTOR安装ipvsadm
[root@dirctor ~]# yum install ipvsadm
[root@dirctor ~]# systemclt enable ipvsadm
3、配置LVS-DR规则
[root@dirctor network-scripts]# ipvsadm -A -t 10.27.17.91:80 -s rr
[root@dirctor network-scripts]# ipvsadm -a -t 10.27.17.91:80 -r 10.27.17.92 -g
[root@dirctor network-scripts]# ipvsadm -a -t 10.27.17.91:80 -r 10.27.17.93 -g
二、releaserver进行配置(realserver1 和realserver2)
1、IP固化
[root@realserver1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
# Generated by dracut initrd
NAME="ens33"
DEVICE="ens33"
ONBOOT=yes
NETBOOT=yes
UUID="70ac0f65-cc23-49a4-89f0-48fc5baaeb97"
IPV6INIT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=10.27.17.92
NETMASK=255.255.255.0
GATEWAY=10.27.17.1
2、回环接口配置
[root@realserver1 ~]# cd /etc/sysconfig/network-scripts/
[root@realserver1 network-scripts]# cp ifcfg-lo ifcfg-lo:1
[root@realserver1 network-scripts]# vim ifcfg-lo:1
DEVICE=lo:1
IPADDR=10.27.17.91
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
ONBOOT=yes
NAME=loopback
3、安装并启动httpd
[root@realserver1 ~]# yum -y install httpd
[root@realserver1 ~]# echo 10.27.17.92 > /var/www/html/index.html
[root@realserver1 ~]# systemctl restart httpd
4、关闭ARP转发
[root@realserver1 ~]# vim /etc/sysctl.conf #最后添加。
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
[root@realserver1 network-scripts]# sysctl -p
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
realserver2 同上操
5、测试