博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVS模式(一):DR模式(ipvsadm)
阅读量:2344 次
发布时间:2019-05-10

本文共 3332 字,大约阅读时间需要 11 分钟。

一.LVS模式一:DR(Direct Routing)直接路由模式

简单流程

client -> vs -> Rs ->client

详细流程

client——>DS——>prerounting——>input——>ip不变,转换mac地址(源MAC->DS MAC,目的MAC->RS MAC)——>postrounting->RS——>lo——>eth0——>client

首先过来的是PREROUTING->INPUT(流向内部)—如果做转发的化PREROUTING->FORWARD-POSTROUTING(转发)-----出去时OUTPUT->POSTROUTING(流向外部)

工作过程:

当一个client发送一个WEB请求到VIP,LVS调度器根据VIP选择对应的real-server的Pool,根据算法,在Pool中选择一台Real-server,LVS在hash表中记录该次连接,然后将client的请求包发给选择的Real-server,最后选择的Real-server把应答包直接传给client;当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的Real-server上;当连接中止或者超时,hash表中的记录将被删除。

注意事项:

DR模式下调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。

VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文。
所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。

细节:

1> LVS和Real-server必须在相同的网段:(相同的广播域内)

DR模式在转发client的包时,只修改了包目的MAC地址为选定的Real-server的mac地址,所以如果LVS和Real-server在不通的广播域内,那么Real-server就没办法接收到转发的包

2> LVS不需要开启路由转发:

LVS的DR模式不需要开启路由转发功能,就可以正常的工作,出于安全考虑,如果不需要转发功能,最好关闭。

3> ARP问题:

通常,DR模式需要在Real-server上配置VIP,

4>.ipvs是工作于内核空间,主要用于使用户定义的策略生效。

ipvsadm是工作于用户空间,是lvs的管理工具,编辑调度策略的,用什么算法。

5>.源ip是客户端的ip(cip),目的ip是虚拟ip(vip)

6>.来源:将源mac地址转换成cip的mac地址

目的:将vip的mac地址转换server的mac地址

7>.整个过程只是通过ip接收请求的,真正改变的是mac地址

8>.调度器和后端服务器必须在同一网段

二.配置ipvsadm

企业六里面要额外配置yum源,因为package不包含,企业六是用脚本去保存调度策略

企业七不用,在重启服务后,自动保存策略。

第一步:

实验环境:

主机 ip 服务
nodel1 172.25.15.1 ipvsadm调度器
nodel2 172.25.15.2 RealServer1 apache服务
nodel3 172.25.15.3 RealServer2 apache服务
物理机 172.25.15.250 用来测试

在这里插入图片描述

利用ssh连接:
在这里插入图片描述

第二步:

在nodel2和nodel3上面安装httpd服务,并编写默认发布文件

在这里插入图片描述

在这里插入图片描述

nodel3

在这里插入图片描述
第三步:

下载ipvsadm并编写策略,启动服务

yum install  ipvsadm -yipvsadm -A -t 172.25.15.100:80 -s rripvsadm -a -t 172.25.15.100:80 -r 172.25.15.2:80 -gipvsadm -a -t 172.25.15.100:80 -r 172.25.15.3:80 -gcat /etc/sysconfig/ipvsadm     systemctl start ipvsadm.service

在这里插入图片描述

在这里插入图片描述

注意:

-A:增加一台虚拟设备
-a:增加真实服务器的操作
-t:tcp服务地址
-s:调度算法(调度算法分别有10种,为rr/wrr/lc/wlc/lblc/lblcr/dh/sh/sed/nq
-r:对应的真实ip
-g:rh(路由)
rr:调度算法,轮循

第四步:

显示调度次数(-l列出当前的策略,-n不解析)

ipvsadm  -lipvsadm  -ln

在这里插入图片描述

第五步:

给nodel1,nodel2和nodel3添加VIP地址(172.25.15.100)

ip addr add  172.25.15.100/24 dev eth0

之所以在server2和server3中设置172.25.15.100是因为调度器中的报头是172.25.15.100,其目的是用来接收来自虚拟机的数据包,不能接收外部请求的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:

也可以在nodel1ip addr add 172.25.15.100/24 dev eth0nodel2和nodel3ip addr add 172.25.15.100/32 dev eth0之所以将子网掩码设置成32,是因为请求从调度器过来时,不对外提供服务的,只提供内部通信
  • 以上情况,nodel1,2,3都有可能被访问到

  • 如果绑定的MAC地址是nodel1,则在nodel2,3轮询

  • 如果绑定的MAC地址是nodel2或nodel3的,那么我们会发现,在测试端根本不会形成轮叫,而是直接去了MAC绑定的后端服务器 (显然这样在企业中是不允许的)

第六步:

在物理机测试:访问172.25.15.100,会发现其一直返回的是nodel3中的测试页

在这里插入图片描述

查看物理机绑定的MAC地址后,会发现其MAC地址是nodel3的MAC地址,无法进行轮循

arp -an | grep 100   查看绑定的MAC地址

在这里插入图片描述

在这里插入图片描述

删除绑定的MAC地址并重新访问,此时会在nodel2和3的测试页轮循,发现此时的MAC地址是nodel1的MAC地址

arp -d 172.25.15.100 删除现有绑定MAC地址

在这里插入图片描述

重新访问
在这里插入图片描述

发现此时的MAC地址是nodel1的MAC地址

在这里插入图片描述
在这里插入图片描述

但如果MAC地址仍然无法成功绑定成功呢?

这个时候我们就需要以下的解决办法。

三.解决MAC地址无法成功绑定的情况:

要解决这样不合理的情况,解决的方法只有一直绑定sever1的MAC地址,所以我门要配置server2和server3的arp路由策略

第一步:

在两台主机上都做

yum install -y arptables_jf

在这里插入图片描述

#当网内广播需要172.25.15.100这个ip时,它将丢弃网内的所有请求arptables -A INPUT -d 172.25.15.100 -j DROP#当它自身需要在网内发包时,伪装为自己原本的ip172.25.66.2arptables -A OUTPUT -s 172.25.15.100 -j mangle --mangle-ip-s 172.25.15.2  #查看策略,此时没有arptables  -nLcat /etc/sysconfig/arptables#保存策略arptables-save > /etc/sysconfig/arptablescat /etc/sysconfig/arptables

在这里插入图片描述

注意:nodel3要伪装成nodel3的ip

arptables -A OUTPUT -s 172.25.15.100 -j mangle --mangle-ip-s 172.25.15.3

在这里插入图片描述

第二步:

systemctl start arptables.servicesystemctl status arptables.service

在这里插入图片描述

在这里插入图片描述

第三步:

删除原来绑定的MAC地址,访问172.25.15.100,会发现成功出现了轮循,且数据经过调度器

在这里插入图片描述
在这里插入图片描述

转载地址:http://nojvb.baihongyu.com/

你可能感兴趣的文章
和为s的连续正数序列
查看>>
什么是Redis?什么是nosql?NoSQL数据库的四大分类
查看>>
为什么说Redis是单线程的以及Redis为什么这么快!
查看>>
redis的过期健删除策略以及内存淘汰机制
查看>>
map 如何使用结构体作为自定义键值
查看>>
Mysql几种索引类型的区别及适用情况
查看>>
判断一个数组,是否可以分成两个数组之和相等的数组
查看>>
背包问题
查看>>
结构体变量之间的比较和赋值原理
查看>>
产生死锁的必要条件及处理方法
查看>>
TCP和UDP的区别
查看>>
事务具有四个特性
查看>>
Hadoop Hdfs 配置
查看>>
tsung集群测试
查看>>
oracle定时删除表空间的数据并释放表空间
查看>>
解决文件提示: /bin/ksh^M: bad interpreter: bad interpreter:No such file or directory
查看>>
ajaxanywhere jsp 使用
查看>>
如何静态化JSP页面
查看>>
XML 与 Java 技术: 用 Castor 进行数据绑定
查看>>
Python未知领域系列:(附Python学习教程+Python学习路线)Python高级教程之面向对象
查看>>