一、工作模式

1、NAT模式

-----主要是修改目标IP地址为RS的IP地址。即请求进入负载均衡器时做DNAT,响应出负载均衡器时做SNAT。

工作方式:

1)客户端请求网站,经过路由器到达负载均衡器,请求源地址是CIP(客户端IP),目标地址为VIP(负载均衡器地址)。(源地址:CIP,目标地址:VIP)

2)负载均衡器(VIP),将客户端请求的目标地址改为后端服务器的RIP地址。(源地址:CIP,目标地址:RIP)

3)RealServer收到请求后,将响应发送到LVS。(源地址:RIP,目标地址:CIP)

4)lvs将源地址改为VIP,并发送给客户端。(源地址:VIP,目标地址:CIP)

注意:在NAT模式中,RealServer的网关必须指向LVS,否则报文无法送达客户端。

1)当用户请求到达Director Server,此时请求的数据报文会先到达内核的PREROUTING链,此时报文的源IP是CIP,目标IP是VIP。

2)PREROUTING链检查发现数据包的目标IP是本机,将数据包送至INPUT链。

3)IPVS内核模块比对数据包请求的服务是否为集群服务,如果是,则修改数据包的目标IP为后端服务器的IP,然后将数据包发至POSTROUTING链,做DNAT转换。此时报文的源IP是CIP,目标IP是RIP

4)POSTROUTING链通过选路,将数据包发送到Real Server。

5)Real Server比对发现目标IP是自己的IP,开始建立响应报文发回给Director Server,此时报文的源IP是RIP,目标IP是CIP.

6)Director Server在响应客户端之前,此时会将源IP地址修改为自己的IP地址,然后响应给客户端,做SNAT转换。此时报文的源IP是VIP。目标IP是CIP。

---------------------------------------------------------------------------------------------------------------------------

2、DR模式

--- 将请求报文的目标MAC地址设定为RS的MAC地址。即做MAC地址转换。

1)客户端将请求发往负载均衡器。(源地址:CIP C-MAC,目标地址:VIP V-MAC)。

2)负载均衡器收到请求后,请求在规则里面存在的地址,将客户端源MAC改为DIP的MAC,目标MAC改为RIP的MAC,并将发送给RS。(源地址:CIP D-MAC,目标地址:VIP R-MAC )。

3)RS发现请求目的MAC是自己,先接受报文,并处理请求报文,将响应报文通过lo接口发送eth0网卡,eth0直接发送给客户端。(源地址:VIP V-MAC,目标地址:CIP C-MAC )。

注意:需要设置lo接口的VIP,不能响应本地网络内的arp请求(也叫ARP抑制)。

1.当用户请求到达Director Server,此时请求的数据报文huixiandao内核空间的PREROUTING链,此时报文的IP是CIP,目标IP是VIP。

2.PREROUTING链检查发现数据包的目标IP是本机,将数据包送至INPUT链,

3.IPVS内核模块比对数据包请求的服务是否为集群服务,如果是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为RIP的MAC地址,然后将数据包发至POETROUTING链中,此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址。

4.由于DS和RS实在同一网络中,所以两者之间的通信时通过二层协议来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。

5.RS发现请求报文的MAC地址是自己的MAC地址,就接受此报文,处理完成以后,将响应报文通过LO接口传送给eth0网卡,然后向外发出,不经过负载均衡器。此时源IP地址为VIP,目标IP是CIP。

src mac dst mac src ip dst ip
00:0c:29:f3:1f:de 00:0c:29:50:d5:63 192.168.188.111 192.168.188.120
src mac dst mac src ip dst ip
00:0c:29:50:d5:63 00:0c:29:e4:4d:1f 192.168.188.111 192.168.188.120
src mac dst mac src ip dst ip
00:0c:29:e4:4d:1f 00:0c:29:f3:1f:de 192.168.188.120 192.168.188.111

---------------------------------------------------------------------------------------------------------------------------------------

3、.lvs-tun模式

在原有的IP报文外再次封装多一层IP首部,内部IP首部(源地址为CIP,目标地址为VIP)外部IP地址首部(源地址为DIP,目标地址为RIP)

  1. 当用户请求报文到达DS,此时请求的数据报文会先到内核的PREROUTING链。此时源IP是CIP,目标IP是VIP。

  2. PREROUTING链检查发现数据包的目标IP是本机,将数据包送至INPUT链。

  3. IPVS比对数据包请求的服务是否为集群服务,如果是,在请求报文的首部再次封装一层IP报文,封装源IP为DIP,目标IP是RIP,然后发至POSTROUTING链。此时源IP是为DIP,目标IP是RIP。

  4. POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。此时源IP是DIP,目标IP是RIP。

  5. RS收到报文后发现是自己的IP地址,就会将报文接受下来,拆除最外层的IP后,会发现里面还有一层IP首部,而且目标地址是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成滞后,通过lo接口送给eth0网卡,然后向外传递。此时的源IP地址为VIP,目标IP为CIP。

LVS 工作图的更多相关文章

  1. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

  2. [原]一个针对LVS的压力测试报告

    LVS 测试报告 测试计划 基本功能测试 流量压力测试 响应时间测试 配置正确性测试 灾难恢复测试 测试点 基本功能测试 客户端IP地址正确性 RealServer 访问Internet测试(包括Ip ...

  3. 负载均衡之LVS集群

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  4. Keepalived+LVS+nginx双机热备

    Keepalived简介 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生. Keepalived采 ...

  5. 基于keepalived双主模型的高可用LVS

    背景知识: keepalived:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除, ...

  6. LVS原理详解

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  7. 配置LVS + Keepalived高可用负载均衡集群之图文教程

    负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性.  重点:每个节点时间都同步哈! C++代码 [r ...

  8. lvs+keepalived

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  9. CentOS7 编译安装LVS 互为主备 (实测 笔记 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) LVS服务器(两台): 系统:Centos7.0 64位(LVS+keepalived) LvsMaster:1 ...

随机推荐

  1. smbms项目核心功能实现

    SMBMS 数据库: 项目如何搭建? 考虑使用不使用Maven?依赖,Jar 1.项目搭建准备工作 搭建一个maven web项目 配置Tomcat 测试项目是否能够跑起来 导入项目中会遇到的jar包 ...

  2. 什么是闭包?(python)

    闭包,又称闭包函数或闭合函数,和嵌套函数类似.不同之处在于,闭包函数的外部函数返回的不是一个具体的值,而是一个函数.一般情况下,返回的函数会赋值给一个变量,便于反复调用. def outer(out) ...

  3. shell之局域网内脚本检查主机网络通讯(附并发改写)

    转至:https://blog.csdn.net/yrx420909/article/details/104355825 需求:写一个脚本,局域网内,把能ping通的IP和不能ping通的IP分类,并 ...

  4. POJ2663,3420题解

    两道非常像的题,放到一起来写 题目大意:用若干2x1的砖去铺一个3xN的空间(POJ3420为4xN),问总共有多少种不同的铺法(POJ3420还要求结果对MOD求模). 思路:找规律.对于3xN的空 ...

  5. AcWing 207. 球形空间产生器

    传送门 思路: 设球心坐标为(x1,x2,...,xn),有 ,由此我们可以列出N+1个二次方程,我们可以对前后两个方程做差,来得到N个一次方程,同时可以消掉常数C,第i个方程即 那么我们就可以直接采 ...

  6. Pandas:各种错误

    1.输出为CSV文件时,Permission denied 原因可能是: (1).构建DataFrame时没有写index参数 (2).用Dict构建最开始的数据时,value没有写成List的形式, ...

  7. (转载)《Three easy pieces 》虚拟化部分整体介绍

    转载自知乎:https://zhuanlan.zhihu.com/p/37917910 一个程序在运行的时候发生了什么呢? 其实只是一些非常简单的事情:运行指令.处理器从内存中取出指令,译码然后执行. ...

  8. One-Hot编码(转)

    机器学习:数据预处理之独热编码(One-Hot) 前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女 ...

  9. LeetCode-015-三数之和

    三数之和 题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组. 注意:答案 ...

  10. python中max使用key参数

    arr = [1,2,2,2,2,3,3,3] arr = collections.Counter(arr) b = max(arr.keys(),key = arr.get) 这个时候b为arr中元 ...