一、概述
- DR模式
- 直接路由(Direct Routing)
- 简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
- 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
- 即公网访问时通过路由访问调度器,调度器将请求分配给下面的节点,数据回应时不通过调度器直接回应给公网客户端
二、LVS-DR部署
2.1、实验环境
-
在LVS-DR中,每台节点服务器和调度器都需要配置VIP地址(虚拟地址)
-
VIP地址作为Web响应数据包的源地址
-
web1服务器IP为:192.168.100.101
-
web2服务器IP为:192.168.100.102
-
LVS服务器IP为:192.168.100.103
-
NFS服务器IP为:192.168.100.104
-
虚拟VIP地址为:192.168.100.10
2.2、实验拓扑
2.3、NFS服务器配置
点此跳~~~~~
主要是为web池子提供存储空间
2.4、两个Web服务器配置
- web1配置
[root@web1 ~]# yum install httpd -y ###安装apache服务
[root@web1 ~]# systemctl stop firewalld.service ###关闭防火墙
[root@web1 ~]# setenforce 0
[root@web1 ~]# vim /etc/fstab ###将nfs共享的空间挂载到本地
192.168.5.30:/aaa /var/www/html nfs defaults,_netdev 0 0
[root@web1 ~]# df -hT ##查看挂载
- 在web首页中写入相关数据
[root@web1 ~]# cd /var/www/html
[root@web1 html]# vim index.html
<h1>this is aaaa web </h1>
- 启动httpd服务
[root@web1 html]# systemctl start httpd
[root@web1 html]# netstat -ntap|grep httpd
tcp 0 0 192.168.5.10:80 0.0.0.0:* LISTEN 106928/httpd
- 配置虚拟网卡
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp -p ifcfg-lo ifcfg-lo:0 ##配置VIP
[root@web1 network-scripts]# vim ifcfg-lo:0
##原先内容全删掉,直接加入下面4段话
DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.0
ONBOOT=yes
- 添加执行脚本,防止ARP广播风暴
[root@web1 network-scripts]# cd /etc/init.d ##进入此目录,便于service命令管理
[root@web1 init.d]# vi web1.sh
#!/bin/bash
VIP=192.168.100.10
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK "
;;
stop)
ifconfig lo:0 down
route del $VIP /dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stopd"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
- 为脚本添加执行权限,关闭防火墙,启动网卡和控制脚本
[root@web1 init.d]# chmod +x /etc/init.d/bbb.sh ##加执行权限
[root@web1 init.d]# systemctl stop firewalld
[root@web1 init.d]# setenforce 0
[root@web1 init.d]# systemctl restart network
[root@web1 init.d]# service web1.sh start
RealServer Start OK
- 校验网卡信息
[root@web1 ~]# ifconfig ens33
[root@web1 ~]# ifconfig lo:0
- 同理配置web2服务器
- web2服务器的首页信息如下
[root@web2 ~]# cd /var/www/html
[root@web2 html]# vim index.html
<h1>this is bbb web </h1>
- web2服务器的网卡信息如下
2.5、LVS调度器配置
- 安装管理工具,关闭proc响应关闭重定向功能
[root@lvs ~]# yum install ipvsadm -y
[root@lvs ~]# vim /etc/sysctl.conf
###添加以下内容
net.ipv4.ip_forward=1
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects=0
[root@lvs ~]# sysctl -p ##加载
- 配置虚拟网卡
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0 ##虚拟网卡
##原先内容全删掉,直接加入下面4段话
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
- 添加控制脚本
[root@lvs network-scripts]# cd /etc/init.d ##便于service命令管理
[root@lvs init.d]# vi dr.sh
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.10 ##虚拟ip
RIP1=192.168.100.101 ##真实web服务器ip
RIP2=192.168.100.102
case "$1" in
start)
/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm ##保存配置
systemctl start ipvsadm ##启动服务
/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
##设置ens33:0地址,广播地址,子网掩码,并开启
/sbin/route add -host $VIP dev ens33:0 ##添加路由网段信息
/sbin/ipvsadm -A -t $VIP:80 -s rr ##指定虚拟服务访问入口,指定轮询算法
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g ##指定真实服务器,dr模式
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
echo "ipvsadm starting --------------------[ok]"
;;
stop)
/sbin/ipvsadm -C ##清空缓存
systemctl stop ipvsadm ##关闭服务
ifconfig ens33:0 down ##关闭接口
route del $VIP ##删除路由信息
echo "ipvsamd stoped----------------------[ok]"
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then ##判断文件存在与否决定状态
echo "ipvsadm stoped---------------"
exit 1
else
echo "ipvsamd Runing ---------[ok]"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
- 为脚本添加执行权限,关闭防火墙,启动网卡和控制脚本
[root@lvs network-scripts]# chmod +x /etc/init.d/dr.sh
[root@lvs init.d]# systemctl stop firewalld
[root@lvs init.d]# setenforce 0
[root@lvs init.d]# systemctl restart network
[root@lvs init.d]# service dr.sh start
RealServer Start OK
- 校验网卡信息
三、模拟外网客户端验证
- 路径: 外网客户端----路由----调度器(VIP地址)----调度下面的节点服务器
- 模拟外网客户端IP为192.168.100.50
- 访问VIP地址192.168.100.10,发现web节点服务器以轮询的方式处理请求