LVS 负载均衡 DR模型搭建笔记

实验拓扑图

在这里插入图片描述
绿色部分:

  • 127.0.0.1:Windows虚拟网卡
  • 192.168.145.1:VMware虚拟网卡
  • 192.168.1.24:以太网卡,本地连接

浅粉色VIP部分:

  • eth0:1 ---- 以太网卡0的1端口
  • lo:3 ---- 回环接口3

在这里插入图片描述
图中黑色带箭头虚线代表浏览器发起请求后数据包的路径,红色带箭头实线代表服务器返回的数据包路径。


配置三台node的VIP

node3
ifconfig eth0:1 192.168.145.100/24
node4

首先修改协议arp_ignorearp_announce

cd /proc/sys/net/ipv4/conf/eth0
echo 1 > arp_ignore
echo 2 > arp_announce

现在我们只配了一个接口(eth0)的协议,为了保证今后配置的其他接口也生效,我们可以进行以下配置

cd ..     //进入 cd /proc/sys/net/ipv4/conf
cd all
echo 1 > arp_ignore
echo 2 > arp_announce

到此为止,ARP协议配置完毕,接下来我们可以配置隐藏VIP了

ifconfig lo:3 192.168.145.100 netmask 255.255.255.255  

这里注意千万不要配成255.255.255.0,因为这里netmask和ip地址要进行一次按位与运算,来生成路由条目,这里如果我们配成了255.255.255.0,那么我们与192.168.145.100做按位与运算的时候会得到192.168.145.0,也就是说我们从回环接口lo:3也可以抵达192.168.145.0这个网络,然后eth0掩码和ip运算后也能得到一个相同的192.168.145.0这个网络,那么现在两个网卡都可以去145.0这个网络,此时我ping 192.168.145.1,**会发生下面的情况:**由于物理网卡eth0和虚拟网卡lo两者中虚拟网卡里内核近,所以ping时会把数据包发给回环接口lo,又因为对于回环接口而言,任何送到该接口的网络数据报文都会被认为是送往设备自身的,因此这个 数据包永远都发不出去!

ps:如果你不小心配成了255.255.255.0,那么不好意思,通信断开,因为发过去的数据包在主机那里死循环回不来了,直接挂了,GG …

node5

与node4相同,不做解释

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]# ifconfig lo:3 192.168.145.100 netmask 255.255.255.255

到此为止,网络层配置完成


Real Server的服务配置

以下操作node4 && node5全部一样,因此只写一份node4

安装httpd

yum install httpd -y

启动httpd服务

service httpd start

创建主页

vi /var/www/html/index.html  

index.html页面内容自定义
在这里插入图片描述
验证一下是否生效
在这里插入图片描述
到此,应用层和网络层配置结束


LVS服务配置


node3安装调用接口

LVS目前已经在Linux系统中默认安装了,它被封装到了Linux的ipvs内核模块,由于是内核模块,所以我们是不能直接对其进行操作的,因此我们需要一个对其调用的接口,那么我们来安装一下调用接口。

yum install ipvsadm -y

对入包添加规则

ipvsadm -A -t 192.168.145.100:80 -s rr //基于tcp协议,采用轮询算法

对出包添加规则

ipvsadm -a -t 192.168.145.100:80 -r 192.168.145.131 -g -w 1  //采用DR模型,负载均衡设备为node4,权重为1
ipvsadm -a -t 192.168.145.100:80 -r 192.168.145.132 -g -w 1  //采用DR模型,负载均衡设备为node5,权重为1

验证

访问192.168.145.100,然后不断刷新看一下效果,会发现node4和node5不断切换,我们也可通过修改权重设置两台设备的访问频率。

看一下node3的网络状态

netstat -natp

在这里插入图片描述
我们发现在node1上并没有socket连接

再看一下node4和node5的网络状态

netstat -natp

在这里插入图片描述
在这里插入图片描述
我们发现在node4和node5上能看到socket连接
ps:如果在node4和node5上没看到连接,可能是你长时间没有访问192.168.145.100,socket断开了,重新刷新几波就好了

并且我们证明了LVS并不与客户端建立连接

执行下面代码看看LVS偷窥的详细信息,可用来排错

ipvsadm -lnc

在这里插入图片描述

我们将node4服务器关闭

ifconfig lo:3 down

刷新页面
在这里插入图片描述
在这里插入图片描述
SYN_RECV表示tcp建立握手不成功,server端没收到ACK包
由此,我们可以看出,在LVS能够刷出信息的前提下如果state状态为SYN_RECV,那么一定是网络层出问题了,需要检查网络层配置。

--------------- END ---------------
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值