LVS-NAT模型/LVS-DR模型实践

LVS汇总

LVS是Linux Virtual Server的简称,基于IP和端口的负载均衡软件。该开源项目的发起者和主要开发者为章文嵩博士。

1.1)LVS的组件:

ipvs:工作在内核空间netfilter/iptables框架的input链上。

ipvsadm:工作在用户空间的一个命令工具,主要用于复制均衡规则的定制和管理

ipvsadm定义好集群服务和负载均衡规则后,ipvs在input链上截取相应端口和目标地址的服务包,改写目标地址,通过forward,postrouting链发往后端的真正提供服务的主机。

iptables规则和ipvsadm定义的规则不能共存。

LVS支持的协议:

目前支持:tcp/udp/sctp/ah/esp/ah_esp

术语约定:

主机类:

Director:调度器,做为网络构架的唯一入口。

Real Server:简称RS,隐藏于后端提供服务的真正主机。

IP类:

用户(cip)<--->(vip)LVS-Director(dip)<---->(rip)real server

lVS的工作模型由四种:

lvs-nat: 后端real server真正隐藏,接受和返回给客户端的数据包均需经由 lvs-Director转发,

后端realserver 与 lvs要求在同一个物理局域网内。

lvs-dr:   Lvs-Director接受客户端的请求数据包,给返回给客户端的应答包由后端realserver直接返回,后端realserver与lvs要求在同一个物理局域网内。

lvs-tun:   Lvs-Director接受客户端的请求数据包,给返回给客户端的应答包由后端realserver直接返回,后端realserver与lvs不在同一个物理局域网内,可以夸地域实现。

lvs-fullnat: 这个目前不是LVS标准模型,由阿里巴巴集团开发人员研制出的一种新型结构,是lvs-nat模型的改进型,Lvs-Director与realserver可以跨路由器协同工作。

LVS的调度方法:

静态方法:调度时仅根据算法本身实现调度,而不管后端realserver的负载情况,追求的是起点公平。

RR:round-robin,轮询。

根据配置lvs-director指定的realserver的次序,挨个来应答请求。

存在的问题是:不论realserver性能的高低而得到同等的待遇,没有发挥出高性能realsever的能力。

WRR:weighted round-robin,加权轮询:给lvs一个权重值,值越大承受越多。

在配置director上配置realserver时,指定了每个realserver的权重值,比如第一realserver 权重 1 ,第二个realserver的权重为4,那么前5个连接请求第二个realserver占据4个后第一个realserver才占据1个,二者之间始终保存1:4的关系。

存在问题:可能会出现这种场景:第二个realserver上的4个链接都没有断开,而第一个realserve上的唯一的一个连接处理完毕已经空闲,而第二个realserver还在处理4个连接。新来了5个连接,第二个realserver分的4个,第一个realserver分的1个。此时第二个realserve上有8个连接要处理,而第一个realserve上只需处理1个链接。

RR与WRR,算法的优点是其简洁性,它无需记录当前所有连接的状态,是一种无状态调度,不管服务器的当前连接数和响应速度。

DH:destination ip hashing,目标地址散列调度,特殊场景中使用,例如有多出口时。

该算法是针对目标IP地址的负载均衡,通过散列(Hash)函数将目标IP地址与后台Realserver组成key:value对应关系的散列表,根据请求包文的目标IP地址,作为键(Hash Key)从静态分配的散列表找出对应的缓存或出口服务器。

SH:source hashing,源地址哈希,来源相同的主机始终发向同一个realserver实现会话绑定。

它采用的散列函数与目标地址散列调度算法 的相同。除了将请求的目标IP地址换成请求的源IP地址外,它的算法流程与目标地址散列调度算法的基本相似。在实际应用中,源地址散列调度和目标地址散列 调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。

动态方法:根据算法及后端RS当前的负载状况实现调度 。根据overhead值挑选最小的realserver进行应答响应。

LC:least connection

这种调度算法分配连接时根据overhead和在realserver上的顺序来分配连接的。连接来临时overhead小的分的连接,若overhead相同,按照在director上的realserve顺序来分配。

WLC:weighted least connection

wlc是lc的改进,在分配连接时增加了weight值,使得权重大的realserver分的连接数增加。可以给性能高的realserver配置合理的权重值,使其发挥更大的能力。当权重设计不合理,会出现权重高的机器忙死,权重低的机器闲死。wlc是默认的调度方式。

SED:Shorted Expection Delay,最短期望延迟

SED虽是wlc的改进,但是并没有克服权重设置不合理带来的缺陷:当权重设计不合理,会出现权重高的机器忙死,权重低的机器闲死。

NQ:Never Queue  ,永不排队

NQ是SED的改进,初始时让每个realserver根据权重分的一个连接,而后按照SED的overhead的计算公式,决定下面的连接分配情况。

LBLC:基于本地的最少连接 Local-Based Least Connection

动态方式的DH算法

将去往相同地址的连接定向到同一个出口上,若在出口上设定有缓存服务器,这能提高cache命中率。当出口server负担过重时也会定向至另外的server上,虽然这降低了命中,破坏lvs的初衷。

LBLCR:带复制的LBLC

出口服务器上配置有缓存功能,将去往某些域名的连接出口定向至1号server上,这样提高cache命中,当1号负担过重时,将部分连接调至2号server上,同时将cache中的内容也复制一份给2号server。

ipvsadm命令的使用格式:

安装命令:#yum -y install ipvsadm

用法:

管理集群服务:创建,修改,删除

#ipvsadm -A|-E -t|-u|-f  service-address [-s scheduler]

#ipvsadm -D -t|-u|-f service-address

-A:创建

-E:修改

-D:删除

-t:tcp,后面的service-address的格式:vip:port,如:192.168.0.1:80

-u:udp,后面的service-address的格式:vip:port,如:192.168.0.1:80

-f:承载协议为tcp或udp,但该类报文会经由iptables/netfilter打标记,即防火墙标记,其service-address的格式            -s scheduler:指定算法。默认为wlc

管理集群服务的RS:添加,修改,移除

#ipvsadm -a|-e -t|-u|-f service-address -r server-address [-g|-i|-m] [-w weight]

#ipvsadm -d -t|-u|-f  service-address -r server-address

#ipvsadm -C

-r server-address:指明Real Server,格式:ip[:port],如:192.168.1.1:80

-g:指明lvs类型为 lvs-dr,默认类型。

-i:指明lvs类型为 lvs-tun

-m:指明lvs类型为lvs-nat

-w weight:指定权重。

-d:删除已定义的realserver

-C:清空已定义的ipvsadm的规则

规则存取:

保存规则:

#service ipvsadm save

-->规则保存至/etc/sysconfig/ipvsadm

#ipvsadm  -S > /etc/sysconfig/ipvsadm

#ipvsadm-save > /etc/sysconfig/ipvsadm

读取规则:

#service ipvsadm restart

#ipvsadm  -R < /etc/sysconfig/ipvsadm

#ipvsadm-restore</etc/sysconfig/ipvsadm

-L 显示规则

-n 数字表示

-Z 情况数据统计值

option:

-c  显示当前的活动链接分配

--stats 显示统计数据

--rates 列出速率

--exact 显示精确值

Lvs-Nat模型的实现:

2.1)Lvs-nat模型下数据包ip头地址的转换

请求包头:client(cip,vip)--->lvs(dip)-->(cip,rip)-->realserver

响应包头: client(vip,cip)<---lvs(dip)<--(rip,cip)<--realserver

2.2) Lvs-nat架构特性:

(1):rip为私有地址,vip为公网地址

(2):read sever网关指向dip,rip与dip在同一网段中。

(3):请求和相应报文都经由Director转发,lvs在高负载场景下成为系统同瓶颈。

(4):lvs必须为linux,real server可以是任意OS

路由设定:

用为是LVS-NAT模型,需要realserver的 rip网卡的网关设定为Directory的dip

1

2

[[email protected] ~]# ip route add default via 172.16.0.1

[[email protected] html]# ip route add default via 172.16.0.1

2.4.3)Lvs-director Test01上启动ipv4数据包转发:

LVS-DR模型的实现:

3.1)LVS-DR模型下数据包IP头部和帧的转换:

请求包文IP头部:

client->(cip,vip)->Director->[MAC-DIP,MAC-RIP](cip,vip)--->(rip)realserver-->(lo:0 vip)realserver

响应报文的IP头部:

client<--(vip,cip)<---(rip)realserver<--(vip,cip)---(lo:0vip)realserver

3.2)构建特性:

(1):保证前端路由器将目标地址为vip的请求报文通过ARP地址解析送往Director

解决方案:

静态绑定:前段路由直接将VIP对应的mac地址静态配置为director的mac地址

artables:在各RS上,通过arptables规则拒绝其响应对vip的arp广播地址请求

内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对vip的arp广播请求

(2):RS的rip可以使用私有地址,也可使用公网地址

(3):请求报文必须经由director调度,但响应报文必须不能经由director

(4):各RIP必须与DIP在同一个物理网络中

(5):不支持端口映射

(6):RS可以使用大多数的OS

(7):RS的网关一定不能指向Director

3.3)部署要点:

(1)各RS直接回应client的请求,因此,各RS均得配置VIP,不然客户端收到的数据包源地址不是vip,则会丢弃收到的数据包。

(2)Director不会修改/拆除请求报文的IP首部,而是

通过封装新的帧首部(源MAC为director的dir

端口的MAC,目标mac为rs的rip端口的mac)

Director的vip地址配置在dir网卡的别名上。

(3)RS上vip配置在lo网卡的别名上若lo:0,并配置有arp应答抑制;只有Director上的vip参与本地路由通  信,也就是参阅arp应答。

(4)linux上配置的IP地址属于内核的而不是网卡, linux上响应报文从哪个接口出去就封装该接口的IP源IP

因此,需设定RS上相应报文的从lo别名网卡(也就是配置有vip的网卡)发出,通过rip网卡流经网关返回给client。

实验特点     实验步骤    实验环境

时间: 2024-10-21 21:43:41

LVS-NAT模型/LVS-DR模型实践的相关文章

LVS下的NAT模型与DR模型实战

LVS是工作在四层的高性能负载均衡服务器,由于工作在TCP/IP层并不涉及到用户态,摆脱了套接字65535数量的限制,所以性能十分强悍,当然优秀的背后少不了我们国人章文嵩的付出,感谢开源如此优秀的作品. LVS 是工作在内核netfilter的INPUT链路上的一组ipvs框架,他的使用有点类似于配置netfilter实现防火墙过滤需要借助iptables这组工具,当然LVS也是如此,只提供了接口,如果想要配置ipvs需要首先安装ipvsadm这组工具,ipvsadm在base源中就有提供 在开

LVS集群之DR模型

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.  LVS十种调度算法: 静态(fixed method): rr, wrr, sh, dh rr: 轮叫(Round Robin) 调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载. wrr: 加权轮叫(Weig

LVS(三)DR模型配置

DR模型配置 说明 之前提到过在在DR模型中LVS和应用服务器都只有一个网卡,但是通过网卡别名来配置多个IP,在LVS上面通过别名配置DIP,在应用服务器上通过别名来设置VIP.外网过来的数据包肯定是CIP+VIP,那么应该是转发到LVS上,而不是应用服务器上(应用服务器上也有相同的VIP),为了避免应用服务器在接收ARP请求的时候使用VIP回应,那么就需要配置一些东西. 下面的是配置应用服务器对ARP广播(路由器广播找VIP是哪个主机)不回应: Arp_ignore:定义接收到ARP请求时的响

LVS集群--net模型、DR模型实例演示及详解

笔记附件下载 如笔记中有错误或不恰当的地方,请留言指正,以便更改

LVS之二:DR模型工作原理

1.当客户端访问集群中的服务(例如web),源IP(定义为A)和目标IP(定义为B)如上图所示,发送数据报文到调度器上 <1>客户端发送报文必须到调度器上,不能到Rearserver上,不然无法实现调度 实现原理:虽然RS上的lo口也配置VIP,但是却无法相应,通过如下配置在RS上实现 echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce echo

LVS nat模式和DR模式简介

一.介绍 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一 个由章文嵩博士发起的自由软件项目,它的官方站点是 www.linuxvirtualserver.org. linuix 内核2.4以前没有需要重新编译 LVS软件作用:通过LVS提供的负载均衡技术和Linux操作系统实现 一个高性能.高可用的服务器群集,它具有良好可靠性.可扩展性和 可操作性.从而以低廉的成本实现最优的服务性能 负载均衡(Load Balance)负载均衡集群为企业需求提供了可解

LVS简单实现NAT&amp;DR模型

LVS:Linux Virtual Server  一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能. LVS是LB集群的一种软件实现方案,类似的有haproxy,nginx,ats(apache

LVS集群DR、NAT模型配置, 及使用ldirectord完成LVS DR模型集群搭建

首先我们有三台主机:其中172.16.192.168作为前台主机:另外172.16.254.18和172.16.254.105作为后端主机,作为测试分别运行有web服务,并测试可用,如下图. 一.LVS NAT模型集群配置实验 1.首先在后端Real Server上设置默认网关,执行前端Virtual Server 2.在前端Virtual Server上开启路由转发功能 3.配置前端LVS集群 4.测试 总结:经过初步测试,我们可以看出已经可以实现rr轮询调度,修改相应的调度算法则可以实现不同

LVS基础详解和NAT/DR模型的实现

LVS:Linux Virtual Server 所谓虚拟的服务就是,当客户端请求服务时,将服务在前端调度器上,通过一定方式负载到后端多台服务器上,但对于客户端来说是不可见的,像在访问同一台服务器一样,这就是虚拟的意思 原理 ipvs:使用LVS服务时,在linux内核当中的一个过滤框架,作用在Input链上,通过解析用户请求的ip和端口号,判断是否是集群服务(若较老的版本内核中没有内置则需自行编译安装) 当用户请求到达,进入调度器内核空间,由于请求的是本地地址,转发到Input链,通过请求的i

3-5-基于LVS实现4层负载均衡配置和DR模型实战

DR类型directer只响应请求报文,然后调度某一个RS,而响应报文由RS直接返回给请求者RS和directer都需要配置VIP,(在同一网络中有可能冲突)本地局域网通告(通告自己的IP),ARP广播通告,ARP广播请求的响应RS配置VIP仅用于构建响应报文的源地址,不是用来真正通信的为了实现请求报文直接发送给director,而不是RS,有三种方式1.在路由器出口处做静态绑定,最不靠谱(因为director要做冗余的,需要重新绑定,二是不能阻断RS的ARP响应)2.在RS上安装arptabl