LVS-DR模式单网段和多网段设置步骤

关于LVS-DR模式单网段设置 如图
需要特别注意的是,在LVS上一定要提前安装ipvsadm 而RS1和RS2上 安装httpd;

整个操作过程,其实并没有很多难的点,唯一的坑就是没有提前安装这两个软件,导致更改网卡信息后无法进行安装,需要重新设置
而后面的实验,所有的操作,其实就是图中这些;
到最后,有让我get到了一个我之前不知道的知识点;
话不多说,先进入正题;

在这里插入图片描述
1.internet主机环境

设置网卡

[root@internet ~]#cd /etc/sysconfig/network-scripts/
[root@internet network-scripts]#cat ifcfg-eth0 
BOOTPROTO=static
IPADDR=192.168.10.6
GATEWAY=192.168.10.200
PREFIX=24
NAME=eth0
DEVICE=eth0
ONBOOT=yes

设置完后,一定要记得 重启

nmcli c reload   #这里c 是connection的缩写;
nmci c up eth0   #特别是我这种新人,一定要注意,多操作几次才养成习惯;

在这里插入图片描述
配置重启网卡后记得设置仅主机模式,否则网卡会无法启动;
在这里插入图片描述
2. 路由器的网络配置

生产中有路由器不需要,但是实验环境中没有的话,要将主机ip_forward功能设置为1 才有转发功能

[root@router ~]#echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
[root@router ~]#sysctl -p

在这里插入图片描述
路由器主机要设置两块网卡 首先是eth0
在这里插入图片描述
设置eth1的时候 要先添加网卡,因为这块网卡是面向internet主机,所以要设置一样的主机模式;
在这里插入图片描述
在这里插入图片描述
3.两台RS的网络设置

#RS1的网络配置
在这里插入图片描述
在这里插入图片描述

[root@rs1 ~]#hostname -I > /var/www/html/index.html
[root@rs1 ~]#ping 192.168.10.6 -c1

在这里插入图片描述
#RS2 的网络配置
在这里插入图片描述
在这里插入图片描述
#LVS的网络配置
在这里插入图片描述
在这里插入图片描述
4,两台RS的后端设置;

关于arp_ignore和arp_announce
限制响应级别:arp_ignore
0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别:arp_announce
0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1:尽量避免将接口信息向非直接连接网络进行通告
2:必须避免将接口信息向非本网络进行通告

我的理解:LVS和两台RS的lovip一样,虽然数据通过arp协议 解析成mac传送,
但是如果不设置、会导致ip冲突,设置arp_ignore为1 arp_annouce为2
则是避免ip进行冲突,并且不通告自己ip,也就是说,三台主机ip一样
但是rs1和rs2展示出来的 和lvs看来的 rs1的ip就是10.0.0.7 rs2就是10.0.0.17

而LVS收到 internet发送的请求报文 修改数据包的目的MAC为RS的mac (这里RS可以是1、也可以是2,他们执行rr或者wrr规则 ) 这个过程通过ARP协议实现,RS接受到lvs转发的数据包后,解封装发现目标地址为lo网卡地址,转发本地进程处理
这个过程,无法跨网段
而另外一个方面是RS 处理完成后 直接发送到router 再回传internet、 降低了LVS的负载

后端RS1的IPVS配置;

[root@rs1 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs1 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@rs1 ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs1 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs1 ~]#ifconfig lo:1 10.0.0.100/32

在这里插入图片描述
#后端RS2的IPVS配置:

[root@rs2 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs2 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@rs2 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs2 ~]#ifconfig lo:1 10.0.0.100/32

在这里插入图片描述

5.LVS主机的配置

#在LVS上添加VIP

[root@lvs ~]#ifconfig lo:1 10.0.0.100/32

在这里插入图片描述
#实现LVS 规则

[root@lvs ~]#ipvsadm -A -t 10.0.0.100:80 -s rr
[root@lvs ~]#ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.7:80 -g
[root@lvs ~]#ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.17:80 -g
[root@lvs ~]#ipvsadm -Ln

在这里插入图片描述
在这里插入图片描述
6.测试访问

[root@internet ~]#curl 10.0.0.100
10.0.0.17
[root@internet ~]#curl 10.0.0.100
10.0.0.7

在这里插入图片描述
在RS1和RS2里查看:

tail -f /var/log/httpd/access_log -n0

在这里插入图片描述
在这里插入图片描述
拓展 删除规则;

示例:
在这里插入图片描述

ipvsadm -D -t 192.168.10.100:80   #执行即可删除

在这里插入图片描述
**关于LVS-DR模式多网段设置 **

1.internet主机环境 和单网段一样
设置网卡;

[root@internet ~]#cd /etc/sysconfig/network-scripts/
[root@internet network-scripts]#cat ifcfg-eth0 
BOOTPROTO=static
IPADDR=192.168.10.6
GATEWAY=192.168.10.200
PREFIX=24
NAME=eth0
DEVICE=eth0
ONBOOT=yes

在这里插入图片描述
在这里插入图片描述
2. 路由器的网络配置 其他的都一样,唯一不同是:在eth0上添加172.16.0.200/24的地址 (其他一样,这里添加一个网卡)

ip addr add 172.16.0.200/24 dev eth0

在这里插入图片描述
#LVS的网络配置 (单网段一样)
在这里插入图片描述
在这里插入图片描述
#RS1 RS2主机的的网络配置 也是一样
不同的地方是:

在LVS主机需要运行脚本;

[root@lvs ~]#cat lvs_dr_vs.sh
#!/bin/bash
vip='172.16.0.100'
iface='lo:1'
mask='255.255.255.255'
port='80'
rs1='10.0.0.7'
rs2='10.0.0.17'
scheduler='wrr'
type='-g'
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
    ifconfig $iface $vip netmask $mask #broadcast $vip up
    iptables -F
    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    echo "The VS Server is Ready!"
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down
    echo "The VS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

然后执行 bash lvs_dr_vs.sh start
在这里插入图片描述
#在RS1和RS2后端服务器运行一样的脚本

[root@rs1 ~]#cat lvs_dr_rs.sh 
#!/bin/bash
vip=172.16.0.100
mask='255.255.255.255'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready!"
echo "`hostname -I`" > /var/www/html/index.html

case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask #broadcast $vip up
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac
[root@rs1 ~]#bash lvs_dr_rs.sh start

在这里插入图片描述
测试结果下
在这里插入图片描述
我感觉最大的区别还是多网段的操作是将后端RS1的IPVS配置和规则都放在脚本里,好像有更方便!

拓展问题

最近有看到有朋友遇到以下这个问题
在这里插入图片描述
一开始我也是云里雾里不明所以,特意咨询了一位前辈,号称运维界白眉大侠的博爷
“噼啪” 被反手甩了一巴掌
对不起,他只是人白,眉毛很靓仔 (⊙o⊙)…
他让我好好理解一下DR模式下的三次握手过程 嗷;

在LVS-DR环境里;正常三次握手过程如下;

图中所示,LVS在接收客户端请求后,
LVS收到 internet发送的请求报文 修改数据包的目的MAC为RS的mac 这里为RS1; 这个过程通过ARP协议实现,RS1接受到lvs转发的数据包后,解封装发现目标地址为lo网卡地址,转发本地进程处理 处理完了以后 不经过LVS,直接通过交换机 回传给客户端
在这里插入图片描述
所以,这个RS1是ping不通LVS的;
在这里插入图片描述
如果要让下图中的LVS和rs1连接,网关都不需要。通过交换机直接可以ping通
在这里插入图片描述
谢谢观赏

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值