LVS nat模式和dr模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS nat模式和dr模式相关的知识,希望对你有一定的参考价值。

参考技术A 本质是多目标IP的DNAT模式,就是通过修改目标IP来实现调度,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发。
nat模式有以下几个特点:

我们先来看下nat模式的一次完整的流程,如下图所示,分为6个步骤:
1.客户端发送请求,此时源ip为cip(客户端ip),目标Ip为vip(就是调度器的对外Ip)
2.到达调度器时,经过PREROUTING钩子,由于目标IP为vip,所以转向INPUT链
3.INPUT链上有IPVS规则,将本该发送到INPUT的请求修改目标IP,从VIP改为RIP,然后转到OUTPUT链
4.OUTPUT链将转发的请求发送到RS上,此时的源IP为CIP,目标IP为RIP
5.请求报文到达RS后,RS构建响应报文并发送给VS,此时的源IP为RIP,目标IP为VS
6.最后由VS将响应报文转发给客户端

所以针对这几个特点,我们实现nat时,需要注意将DIP和RIP设在同一IP网络,RIP的网关要指向DIP。

1.搭建环境:
为了防止selinux和iptables对实验的影响,我们在实验之前先将所有selinux策略临时调为0,将iptables服务关闭

3.添加调度器
在调度器上,执行以下步骤

4.添加节点
在调度器上,执行以下步骤

5.安装并启用httpd服务
在两台节点上,都安装httpd

然后在rs1上:

在rs2上:

6.测试
编写一个简单的for循环,执行curl 调度器,查看获取到的信息

我们看到获取到了节点的http页面,轮询效果也实现了,实验成功

DR模式:Direct Routing,就是直接路由模式,LVS默认模式,应用最广泛
,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP
所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的
MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
由于DR模式是通过MAC地址来转发请求的,源IP和目标IP都不变,所以响应报文直接就可以通过IP地址给客户端返回响应报文。所以vs和rs都要配置VIP,这样才能将相应报文直接返回给客户端,但是配置相同的VIP路由器将请求数据转发过来时,就不一定是走调度器了,也可能走某一个节点,而且调度器和节点之间会IP地址冲突。针对这种情况,我们有三种解决方法:
(1)在前端网关做静态绑定VIP和VS的MAC地址
(2)在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
(3)在RS上修改内核参数以限制arp通告及应答级别
arp_announce
arp_ignore
我们这次实验使用第三种方式
请求过程中的包头地址转换情况如下图所示

1.环境:
关闭selinux和iptables

3.在VS调度器中执行如下操作

4.路由器上开启转发功能:

5在客户端上验证:

实验成功

LVS负载均衡群集DR模式

LVS-DR
在DR模式的群集中,LVS负载器为访问入口,但不作网关处理;服务器池中所有节点都各自接入internet,发送给客户端WEB响应数据包不需要LVS负载调度器。
nat模式和dr模式的区别

两种模式都是实现负载均衡lvs的方法,nat模式在包进入的时候在分发器上做了目的地址的mac转换,也就是DNAT,包回去的时候从哪进来的也要从哪里出去,这就造成了nat模式在real server过多的时候造成了数据包在回去的时候都是从一个出口方向,也就造成了瓶颈。

DR模式在数据包进入的时候由分发器上把收到的数据包分派给架构下的real server来工作,而数据包在返回的时候没有经过分发器而直接发送给数据包的来源地址,这样就解决了数据包都从分发器上返回数据包的瓶颈,从而解决大量的用户访问。

在实现DR模式的时候,我们是通过在分发器上制定架构下哪几台real server是真正工作的,而分发器上的ip地址是供用户访问的真实Ip地址,我们要做的是在真正提供服务的那几台real server的网卡下也增加分发器的真实Ip地址,但是这个ip地址是一个回环端口,在数据包进入的时候,arp广播的时候,real server的VIP是不接受arp广播的,也就是说这个VIP是只有自己本机知道的,路由器是不知道的。这样就完成了数据包的接收。

在数据包回去的时候,实际上是以real server的VIP来进入封装的,但是它进行传递的时候,是没有通过分发器传递回去,而是直接走的路由器,再由路由器将数据包送回。(此段选自51ctowangjian_)
技术分享图片
(这个拓扑图可能与下面的实验有不同的地方不要在乎这些细节)

LVS-DR模式缺点:虽然负载能力更强但是其节点安全性有点差,因为DR模式采用半开放试的网络结构。

实验环境
四台服务器:两WEB、一LVS、一NFS、
依旧无网环境下centos6.5
A 、 配置基础环境:
技术分享图片
技术分享图片
配置虚拟IP地址(VIP)
vim /etc/sysconfig/netswork-scripts/ifcfg-eth0:0
技术分享图片
配置第一台web服务器:
技术分享图片
技术分享图片
在web服务上添加VIP地址:
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
技术分享图片
第二台与第一台web服务器配置相同IP为172.16.16.178
nfs服务器配置和以往一样值进行配置IP,IP地址为192.168.7.250
B 、 配置LVS服务器
调整 ICMP响应参数,关闭linux内核重定向。
vim /etc/sysctl.conf
技术分享图片
sysctl -p 查看文件加载的系统参数

技术分享图片
C 、安装ipvs管理工具
挂在centos6.5系统光盘,自然你也可以yum安装或是wget
modprobe ip_vs 手动添加ip_vs模块
cat /proc/net/ip_vs 查看ip_vs版本号
技术分享图片
技术分享图片
service ipvsadm stop 清空ipvs管理工具的内容缓存
指定VIP、RIP以及LVS模式与权重
技术分享图片
service ipvsadm save 保存配置
service ipvsadm start 开启ipvs管理工具
ipvsadm -ln 查看lvs服务器列表
技术分享图片
chkconfig ipvsadm on 设置ipvs管理工具开机自启

C2 、 配置web服务器
技术分享图片
配置Web服务器的icmp重定向
vim /etc/sysctl.conf
技术分享图片
添加本地vip访问路由
vim /etc/rc.local (也可以 route add -host 172.16.16.172 dev lo:0)
技术分享图片
关闭web服务器防火墙、启动httpd服务、做本机标识
技术分享图片
第二台web服务器与上动作一致
配置完称进行访问测试(关闭防火墙)
刷新可以看到两台服务器可以以轮询的方式出现即前半段实验完成
D 、 配置NFS共享存储
创建共享目录
mkdir -p /opt/wwwroot
添加共享地址以及权限
vim /etc/exports
技术分享图片
添加完成开启rpcbind和nfs(默认情况下就有这两个软件包而他们的作用是支持showmount工具的使用)
技术分享图片
进行nfs标识
cd /opt/www.root
vim index.html下进行本机标识
E 、添加内网网卡使其可以访问NFS服务器
添加网卡之后最好在重新关闭防火墙、重开web服务器的httpd服务、路由重定向。
进入web服务器把共享存储挂在到网站目录上
技术分享图片
web2服务器已上操作一致
完成后进行IE测试是否可以看到nfs标识如果可以即为成功

以上是关于LVS nat模式和dr模式的主要内容,如果未能解决你的问题,请参考以下文章

LVS的工作模式介绍和NAT模式&DR模式实验步骤

LVS nat模式和DR模式简介

LVS nat模式和dr模式

(服务运维)负载均衡LVS实战:NAT和DR模式

lvs的nat模式

LVS:Linux虚拟服务器,LVS-NAT模式+LVS-DR模式