实战 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、测试

 

 

 

posted @ 2019-09-27 14:59  科子  阅读(188)  评论(0编辑  收藏  举报