开发者学堂课程【LVS 负载均衡实战:负载均衡集群 LVS 调度算法实战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/553/detail/7633
负载均衡集群LVS调度算法实战(一)
内容介绍:
一、复习LVS的四种模式
二、LVS介绍
三,调度算法
四,实操演示
一、复习LVS 的四种模式
1、第一种为NAT模式
2、第二种为DR模式
3、第三种为tun模式
4、第四种为fullnat模式。
Snat与dnat的比较:
/**
*Nat在iptable里面采取的是使用私有的地址将信息发送到互联网
*上。
与之对应的是SNAT,snat是将原地址进行了转换。
Snat适用*的场景是内网(私网地址)访问互联网,本质上是一个地址互换的
*过程。
请求报文如果替换的是原地址,那么这种模式就叫做snat,*如果替换的是目标地址,那么这种模式就叫做dnat。Dnat适用的
*场景是互联网用户访问局域网中的服务器(私网地址)。
**/Nat模型的特点:
/**
*请求报文时替换的是目标地址;请求报文与响应报文时都需经过vs,
*且支持端口映射。
VS上可以同时拥有两个地址,一个是vip(虚拟*地址),一个是dip;在nat模式中这两个地址都会被使用,其中,*dip是用于连接内网的,vip是用于连接外网的;此模式下的nat的*配置类似于路由器的配置。注意,nat模式下可以只配置一个网卡。
*dr模型下的数据报文进入到vs服务器。
Vs服务器会修改目标地址*(数据链路层),这个特性决定了它不能跨路由,故vs服务器与*rellserver之间是不能够存在路由器的,只能存在交换机(地理位置*相隔较近)。
在这个过程中,获取对方地址的方式是广播。Dr模型的*局限是无法修改端口,不支持端口映射。
**/
二、LVS 介绍
lvs-tun(隧道)模式
1.lvs-tun :
转发方式∶不修改请求报文的 IP 首部(源 IP 为 CIP,目标 IP 为 VIP),而在原 IP报文之外再封装一个 IP 首部(源IP是 DIP,目标IP是 RIP ),将报文发往挑选出的目标 RS; RS 直接响应给客户端(源IP是 VIP,目标 IP 是 CIP )
(1)DIP, VIP, RIP 都应该是公网地址
//DIP,VIP,RIP 不一定都是公网地址,VIP,RIP 可以是私网地址。
(2)RS 的网关一般不能指向 DIP
//RS 如果指向了 DIP,便失去了存在的意义。
(3)请求报文要经由 Director,但响应不能经由 Director
//Director 在此处指的就是vs服务器。
(4)不支持端口映射
//因为实际修改的只是 ip 头部,而不是数据报文的头部。
(5)RS 的 OS 须支持隧道功能
//RS 在收到端口后,理论上应该存在两个端口,ip 头部与数据
//报文头部,这时的 rs 会去掉一个,留下一个.但是这种模式,一//般的系统都不支持。
Tun模式辅助理解示意图:
/**
*客户端发送请求,到达lvs调度器;lvs 服务器存在两个地址,*一个是vip地址,另一个是 dip 地址;请求到达lvs服务器之*后,如果是 tainull 模式,该模式会在 src的位置对数据报文进*修改。该模式与以往的不同的是,它会在原有的地址上新建一*数据报文头部(dip rip1),这样就存在两个数据报文头部,这*会出现数据报文覆盖的问题。
新的 ip 报文在传送的过程中可能*经过路由器,这时我我们的后端服务器也必须配置一个对应的*vip 地址。
好处是可以实现跨机房,跨区域调度。回应数据报文*是否必须经过原路径返回?
答案是否定的,这时的数据报文可 *以经过其他的路由器回到客户端,都可以不经过lvs服务器。
*好处是可以实现跨机房,跨异地,跨区域的远程调度连接,如*一些大公司在全国各地都有自己的服务器来对外提供服务。
*tun 模式下的 rs 服务器还需进行部分特殊设置才可以。
**/
TUN模式IP包调度过程:
/**
*如图所示,客户端发送请求后,经过lvs服务器之后,到达了 web
*端服务器,调度时会添加一个新的数据报文头部,到达 real server
*之后,real server 在回应时会把原来新加的报文头部删除掉,获取*初始的报文头部,然后直接回应。
图中绿色的线便是 real server
*通过另一条线路的回应过程。回应时时的源地址是 VIP,目标地址是*CIP。这样的好处是容错性高,进而实现异地容灾。
**/
lvs-fullnat模式
.lvs-fullnat :通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP -->DIP
VIP --> RIP
辅助理解示意图:
/**
*客户端发送请求在经过一级转换后,dip变成了原地址,rip变为了
*目标地址,特别注意与nat模式的区别,这里的cip被替换成了dip
*vip被替换成了rip中的某一个ip。
这样做的好处是跨异地处理(线*路之间可以加路由器)。区别是返回日志不同,替换地址不同。
**/
(1)VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络﹔因此,RIP的网关一般不会指向DIP
(2)RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client
(3)请求和响应报文都经由 Director
(4)支持端口映射
//nat模式是系统内核默认支持的,fullnat 模式是系统内核默认不支//持的。nat 模式与 Fullnat 模式本质上的区别是一个只替换了原地//址,
//另一个即替换了原地址也替换了目标地址。
注意:此类型 kernel 默认不支持
LVS 工作模式总结:
VS/NAT |
VS/TUN |
VS/DR |
|
Server |
any |
Tunneling |
Non-arp device |
Server network |
private |
LAN/WAN |
LAN |
Server number |
low(10~20) |
High(100) |
High(100) |
Server gateway |
Load balancer |
own router |
Own router |
1.lvs-nat与lvs-fullnat:请求和响应报文都经由 Director
lvs-nat : RIP 的网关要指向 DIP
lvs-fullnat : RIP 和 DIP 未必在同一IP网络,但要能通信
2.lvs-dr与lvs-tun:请求报文要经由 Director,但响应报文由 RS直接发往 Client
lvs-dr :通过封装新的 MAC 首部实现,通过 MAC 网络转发
lvs-tun :通过在原 IP 报文外封装新 IP 头实现转发,支持远距离通信