lvs负载均衡, ipvs的NAT模式,DR模式的实现

lvs是一种集群技术,采用IP负载均衡技术和基于内容请求分发技术。调度器(Director)具有很好的吞吐率,将请求均衡地转移到不同的服务器上处理,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。

lvs的用户空间的命令行管理工具为ipvsadm,ipvs是工作在内核中netfilter的INPUT的钩子函数上,对进入的报文在没有进入用户空间前,对这些报文进行操作。

lvs的工作类型有四种,分别是lvs-nat,lvs-dr,lvs-tun和lvs-fullnat。最常用的为前两种(lvs-nat,lvs-dr)。

lvs-nat:是一种最简单的方式,所有的RealServer将自己的网关指向Director。客户端请求的都是Director上的IP,然后报文到Director上以后经过DNAT转换,把请求Director的报文重新封装成报文,以Director的IP为源地址,然后请求RS(RealServer),RS直接响应给Director,然后由Director把结果发给客户端。简单来说就是:多目标的DNAT(iptables),它通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出某RS的RIP地址实现转发;

lvs-nat类型的结构图:

lvs-nat的特点:

(1)RS应该和DIP应该使用私网地址,且RS的网关要指向DIP;

(2)请求和响应报文都要经由director转发;极高负载的场景中,director可能会成为系统瓶颈;

(3)支持端口映射;

(4)RS可以使用任意操作系统(OS);

(5)RS的RIP和Director的DIP必须在同一IP网络;

优点:实现方便简单,也容易理解;

缺点:Director会称为一个优化的瓶颈,所有的报文都要经过Director,如果Director坏掉,后果很严重

lvs-dr:是通过修改请求中的目标MAC地址进行转发的;

lvs-dr的特点:

(1) 保证前端路由器将目标IP为VIP的请求报文发送给director,后端的RS要能以VIP的地址响应给客户端;

解决方案:

静态绑定

arptables

修改RS主机内核的参数

(2) RS的RIP可以使用私有地址;但也可以使用公网地址;

(3) RS跟Director必须在同一物理网络中;

(4) 请求报文经由Director调度,但响应报文一定不能经由Director;

(5) 不支持端口映射;

(6) RS可以大多数OS;

(7) RS的网关不能指向DIP;

为了让RS的不响应VIP的ARP响应,需要配置arp_ignore=1  别人来请求时,当别从哪个接口进入,就让那个接口的地址响应,如果不是就不响应;arp_announce=2只让自己的物理网卡的地址通告给别人;为了让RS以VIP为源地址把报文发送给客户端,RS的RIP在物理网卡上,VIP在lo(虚拟的设备)上,报文出去时要定义走lo这个设备,就是加一条路由(route add -host VIP dev lo:0)这样就能保证RS响应客户端时的源IP为VIP。

lvs-tun:就是IP隧道,就是将一个IP报文再封装一个IP报文的首部,这样可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。

lvs-fullnat:就是在报文进来时做SNAT和DNAT。

后两种不是很常见就不详细说了

lvs-dr的架构图

这只是一个大概的图,DIP,VIP,RIP同一网段的是这样

DIP,VIP,RIP不同网段的架构图为:

下面是一个lvs-nat的示例:

用物理机作为测试机,作为客户端,172.16.249.123这台机器为Director,它有两块网卡,一块配置172.16.249.123为外网地址,另一块配置为192.168.36.1做内网地址

192.168.36.2和192.168.36.3为web服务器即为RealServer,这两台内网主机的网关指向192.168.36.1

内网的网络类型选为VMnet2,

做好之后测试内网之间能不能通信,

然后为为其打开httpd服务,然互配置测试页,为了演示效果我们把两台web服务器的页面配成不同的,(实际中是一模一样的资源的)

打开httpd服务,然后测试页面内容如下:

<h1>Hello , This is 192.168.36.2</h1>

<h1>This is 192.168.36.3</h1>

为Director安装ipvsadm,把本地光盘挂上,然后写好yum源的指向

yum install ipvsadm

然后在Director上测试下,能否正常访问

保证Director的防火墙是关的

Director的核心转发要打开

然后在Director上做ipvs规则

首先添加集群服务 ipvsadm -A  -t 172.16.249.123:80 -s rr  -t 172.16.249.123:80是指这个地址(172.16.249.123)的tcp协议的80端口开启集群服务 –s rr 指明调度器算法为论调

ipvsadm -A -t 172.16.249.123:80-s rr

然后添加集群服务中的RS(RealServer)

这样就做好了,然后测试下

然后你在刷新下,

但是你的httpd服务不能开启长链接,要不就会出新好几次一台RS才会换下一台

在Driector中查看下,也可以看到每个主机响应一次服务

这些规则使用/etc/sysconfig/ipvsadm 把规则保存到/etc/sysconfig/ipvsadm中

ipvsadm –R <  /etc/sysconfig/ipvsadm 重载这个规则

lvs-dr的示例:

我们用VIP和DIP,RIP在同一网段来做一下,这样简单一些

首先规划Director的网卡为eth0,采用桥接模式,只使用一块网卡

地址配置为DIP:172.16.249.123网关指向172.16.0.1;VIP 放到eth0:0这个别名上172.16.249.199

RS1的网卡采用桥接,RIP1:172.16.249.115网关指向172.16.0.1;lo:0 :VIP 172.16.249.199

RS2的网卡采用桥接,RIP2:172.16.249.124  网关指向172.16.0.1;lo:0 :VIP172.16.249.199

首先把Director的另一块VMnet2的网卡断开,然后配置DIP为172.16.249.123,

RS1和RS2的网卡改为桥接,地址为172.16.249.115和172.16.249.124,

然后从RS上测试ping172.16.0.1   ping172.16.249.123都是通的证明网络没问题了

然后配置Director上的VIP 为172.16.249.199/32,掩码使用32位,就是让它只做负载均衡器的调度用的

这个时候RS主机ping VIP   172.16.249.199是通的

然后要限制从哪个接口进的报文,要让哪个接口去响应

Diretor的这个配置不必须,但RS的必须配置

route add -host 172.16.249.199dev eth0:0

然后设置RS

首先要先加这两个参数

arp_ignore=1

arp_announce=2

然后配置VIP,和限定报文从哪个接口进就从哪个接口出去

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 为了禁用彻底,把这一个也配上

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 为了禁用彻底,把这一个也配上

然后配置VIP地址

ifconfig lo:0 172.16.249.199/32 broadcast172.16.249.199 up

或者ifconfigeth0:0 172.16.249.199 netmask 255.255.255.255 broadcast 172.16.249.199 up

route add -host 172.16.249.199 dev lo:0

然后把另一台RS也这样配置

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 为了禁用彻底,把这一个也配上

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 为了禁用彻底,把这一个也配上

然后配置VIP地址

ifconfig lo:0 172.16.249.199/32 broadcast172.16.249.199 up

route add -host 172.16.249.199dev lo:0

这样RS就做好了,刚才web服务已经启动了,为了确认查看80端口是否启用

然后在Director上使用RIP地址请求进行测试

然后把Director上的以前做的规则清掉,

然后重新配置ipvsadm规则

ipvsadm -A -t 172.16.249.199:80 -s rr

ipvsadm -a -t 172.16.249.199:80 -r172.16.249.115 -g

ipvsadm -a -t 172.16.249.199:80 -r172.16.249.124 -g

用物理机的浏览器访问出问题了不能随时论调,隔一段时间能切换,应该是浏览器缓存问题;打开一个虚拟机测试没有问题

这样做容易出现这样的问题,在虚拟机下测试没有问题,证明这个实验是成功的,就是受网络或者浏览器的影响,

下面我们用VIP和DIP,RIP在不同网段来做一下(在物理机和Director之间加上一个路由器)

首先规划Director的网卡为eth0,采用桥接模式

地址配置为DIP:192.168.36.10 ;VIP 放到eth0:0这个别名上10.1.1.2

RS1的网卡VMnet2,RIP:192.168.36.8;lo:0 :VIP 10.1.1.2

RS2的网卡VMnet2,RIP:192.168.36.9;lo:0 :VIP 10.1.1.2

物理机的地址为172.16.249.100

添加一条路由

route add 10.1.1.0 mask 255.255.255.010.1.1.1

首先要有一个路由器,打开一个虚拟机打开核心转发功能,然后加入两块网卡(也可以一块网卡),类型为VMnet2,地址分别为eth1:192.168.36.1/24 ,eth1:0为10.1.1.2/24 ;一块为桥接为172.16.249.117

路由条目为

一台虚拟机做Director,一块网卡,网卡类型为VMnet2,地址eth0为DIP192.168.36.10/24

eth0:0为10.1.1.2/8

在 Director上要添加一条路由

route add  default  gw 10.1.1.1

RS的IP地址为192.168.36.8和192.168.36.9默认网关指向192.168.36.1

这样物理网络就创建好了

ping测试下

在 Director上是能ping通 172.16.249.110

从物理机也能ping通10.1.1.2 ,

从RS上能ping通物理机

然后启动RS的80服务,就可以在Director上设置集群服务了

从Director上测试以下web服务

然后在Director上做集群服务配置,配置如下图

然后在RS 配置这两个参数

arp_ignore=1

arp_announce=2

然后配置VIP,和限定报文从哪个接口进就从哪个接口出去

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 为了禁用彻底,把这一个也配上

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 为了禁用彻底,把这一个也配上

然后配置VIP地址

ifconfig lo:0 10.1.1.2/32  broadcast 10.1.1.2 up

route add -host 10.1.1.2 dev lo:0

然后把另一台RS也这样配置

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 为了禁用彻底,把这一个也配上

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 >  /proc/sys/net/ipv4/conf/eth0/arp_announce 为了禁用彻底,把这一个也配上

然后配置VIP地址

ifconfig lo:0 10.1.1.2/32 broadcast 10.1.1.2 up

route add -host 10.1.1.2   devlo:0

可以写到脚本里

然后执行脚本,验证一下

然后进行测试

在Director上看一下,可以看到连接数是相同的

从这里可以看出来,上面DIP,VIP,RIP在同一网段时,物理机浏览器测不轮调,是因为MAC地址影响的,这里面加了个路由器,隔离了一些arp的广播报文,所以物理主机没有受到影响。

这样lvs的lvs-nat和lvs-dr的实验就做完了,如有指教和建议可以留言。

本文转自:程序员鼓励师

时间: 2024-10-26 22:46:44

lvs负载均衡, ipvs的NAT模式,DR模式的实现的相关文章

LVS负载均衡群集(三种工作模式原理详解)

LVS负载均衡群集(三种工作模式原理详解) 一.前言 ? 在互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器力不从心.所以我们需要通过一些方法来解决这样的瓶颈. ? 最简单的方法就是使用价格昂贵的大.小型的主机:但这样在大多数企业中显然是不可取或者说不现实的.那么我们就需要通过多个普通服务器构建服务器群集. 二.相关概念概述 2.1何为LVS? ? LVS--Linux Virtual Server,即Linux虚拟服务器(虚拟主机.共享主机),虚拟主

LVS负载均衡架设,NAT模式

lvs-nat模型:类似于DNAT,但支持多目标转发, 就是多目标的DNAT 它通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发 架构特性: (1) RS应该使用私有地址,即RIP应该为私有地址,各RS的网关必须指向DIP (2) 请求报文和响应报文都经由Director转发:高负载场景中,Director易于成为系统瓶颈 (3) 支持端口映射 (4) RS可以使用任意类型的OS (5) RS的RIP必须与Director的DIP在同一网络 架设NAT模式的LVS负载均

LVS+Keepalived+Nginx+Tomcat高可用负载均衡集群配置(DR模式,一个VIP,多个端口)

一.概述 LVS作用:实现负载均衡 Keepalived作用:监控集群系统中各个服务节点的状态,HA cluster. 配置LVS有两种方式: 1. 通过ipvsadm命令行方式配置 2. 通过Redhat提供的工具piranha来配置LVS 软件下载: ipvsadm下载地址: http://www.linuxvirtualserver.org/software/kernel-2.6/ Keepalived下载地址: http://www.keepalived.org/software/ 安装

centos7上实现LVS负载均衡群集之NAT转换模式

LVS虚拟服务器 Linux Virtual Server(LVS)是针对 Linux内核开发的一个负载均衡项目,由我国的章文嵩博土在1998年5月创建,官方站点位于http://www.linuxvirtualserver.org/. LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法. LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用. LVS的负载调度算法 针对不同的网络服务和配置需要,LVS调度器

lvs负载均衡群集搭建(DR)

lvs负载均衡群集搭建(DR) 1:之前有讲过使用NAT技术的lvs的群集搭建接下来使用DR的直接路由模式来搭建负载均衡群集 2:在DR模式中.lvs负载调度器作为群集的访问入口,但不作为网关使用,服务器池中的所有节点来自internet.发送给客户端的web相应数据包不需要经过负载调度器:这种方式入站.出站访问数据分别被处理,因此lvs负载调度器和所有节点服务器都需要配置VIP地址,以便响应整个群集的访问. VIP地址192.168.1.254 负载均衡服务器           web1服务

搭建LVS负载均衡环境(keepalived+lvs+nginx)

LVS简介: LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置 Director-Server: LVS的核心服务器,作用类似于一个路由器,含有为LVS功能完成的路由表,通过路由表把用户的请求分发给服务器组层的应用服务器(Real_Server),同时监控Real-servers ,在Real-Server不可用时,将其从LVS路由表中剔除,再恢复时,重新加入. Real-

LVS负载均衡技术介绍

一.LVS集群介绍 LVS集群采用IP负载均衡技术和基于内容请求分发技术,因为所有的操作都是在Linux操作系统核心空间中将完成的,它的调度开销很小,所以调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服 务器的故障,从而将一组服务器构成一个高性能的.高可用的虚拟服务器.整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序,实现模式主要有:VS/NAT模式,VS/TUN模式(IP隧道模式),VS/DR模式(直接路由模式). 二.LVS负载均衡方式

LVS负载均衡之二:LVS-NAT搭建web群集

实现LVS的NAT模式 其原理及特点详细介绍请看LVS负载均衡之一:LVS-NAT.LVS-DR模式的原理详细介绍 1.实验环境 IP地址规划 客户端访问服务的请求IP地址:VIP 12.0.0.1 Server IP 系统 Director Server DIP 192.168.10.1 CentOS7 NFS Server 192.168.10.50 RedHat6 Real Server1 RIP 192.168.10.51 CentOS7 Real Server2 RIP 192.168

LVS负载均衡群集DR模式

LVS-DR在DR模式的群集中,LVS负载器为访问入口,但不作网关处理:服务器池中所有节点都各自接入internet,发送给客户端WEB响应数据包不需要LVS负载调度器.nat模式和dr模式的区别 两种模式都是实现负载均衡lvs的方法,nat模式在包进入的时候在分发器上做了目的地址的mac转换,也就是DNAT,包回去的时候从哪进来的也要从哪里出去,这就造成了nat模式在real server过多的时候造成了数据包在回去的时候都是从一个出口方向,也就造成了瓶颈. DR模式在数据包进入的时候由分发器

LVS负载均衡架设,DR模式

lvs-dr模型 : 直接路由 Director在实现转发时不修改请求报文的IP首部,而是通过直接封装MAC首部来完成转发,目标MAC是Director根据调度方法挑选出的某RS的MAC地址 拓扑结构有别于NAT类型 架构特性: (1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Director 解决方案: 1.静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为Director的MAC地址,不靠谱也不常用 2.arptables:在各RS上,通过arptables