一、前言

IPVS是基于TCP四层(IP+端口)的负载均衡软件。

IPVS会从TCP SYNC包开始为一个TCP连接所有的数据包建立状态跟踪机制,保证一个TCP连接中所有的数据包能到同一个后端。所以IPVS是基于TCP状态机进行控制管理,只感知TCP头而不对TCP的payload进行查看;因此,对IPVS后端服务器集群还有一个假定,那就是所有后端都具有同样的应用层的服务功能,但是由于IPVS可以给后端设定权重,所以每个后端的服务的能力可以不同。

一个合理的负载均衡软件,应该能够尽量提高服务接入能力(ReqPS, Request Per Second)而将服务处理能力(ResPS, Response Per second)通过合理分配后端来达到最佳。

根据处理请求和响应数据包的模式的不同,IPVS具有如下四种工作模式:

  • NAT模式
  • DR(Direct Routing)模式
  • TUN(IP Tunneling)模式
  • FULLNAT模式

而根据响应数据包返回路径的不同,可以分为如下两种模式:

  • 双臂模式:请求、转发和返回在同一路径上,client和IPVS director、IPVS director和后端real server都是由请求和返回两个路径连接。
  • 三角模式:请求、转发和返回三个路径连接client、IPVS director和后端real server成为一个三角形。

转载自https://blog.csdn.net/cloudvtech

二、IPVS的基本构建

IPVS系统由如下一些构建组成:
  1. Director:请求的入口,具有外网和内网多网络能力;由于director需要很高的ReqPS,所以可能需要微调它的CPU、NIC IRQ以及一些kernel IP/TCP能力参数(RPS、RFS、IRQ affinity、ARP配置)
  2. Virtual IP:具有外向暴露能力的外部IP,需要在director上绑定,根据模式不同,也有可能需要额外在real server进行绑定并且设定一些ARP参数和相应的iptables规则
  3. Real Server:在应用层处理请求,产能返回结果。
  4. 路由算法:分析数数据包头,维护和选择real server;路由算法需要维护一个TCP连接状态机。

转载自https://blog.csdn.net/cloudvtech

三、IPVS各种工作模式的分析和比较

1.NAT模式

采用双臂模式,数据的进出都经过director;real server只需要内部IP、不需要在real server绑定外部IP;director需要处理返回数据包,容易成为瓶颈;需要后端分布在同一个局域网或者最低限度director需要设定为所有real server的网关;进出director的数据包需要进行请求数据包目的IP的替换和响应数据包的源IP的替换、请求的源IP可以被real server获取;可以进行端口转换;ReqPS和ResPS需要进行平衡。

2.TUN模式

采用三角模式,数据从director进入,响应从real server直接回到client;real server和director都要配置IP tunnel,real server需要配置外部IP并且绑定VIP;real server可以分布在互联网络的任何位置;请求的源IP可以被real server获取;不可以进行端口转换;director只需要处理请求数据包、ReqPS是最重要的指标。

3.DR模式

采用三角模式,数据从director进入,响应从real server直接回到client;real server需要配置外部IP并绑定VIP,并且real server需要分布在同一个局域网内;进出director的数据包需要进行请求数据包目的MAC地址的替换、请求的源IP可以被real server获取;不可以进行端口转换;director只需要处理请求数据包、ReqPS是最重要的指标。

4.FULLNAT模式

采用双臂模式,数据的进出都经过director;real server可以使用任何类型IP,只要和director可达即可;director需要处理返回数据包,容易成为瓶颈;real server可以分布在互联网络的任何位置;进出director的数据包需要进行请求数据源IP和包目的IP的替换和响应数据包的源IP和目的IP的替换、请求的源IP丢失(但是可以通过director修改数据包将源IP放在指定区域以被real server获取,但是需要修改director和real server的协议栈);可以进行端口转换;ReqPS和ResPS需要进行平衡。

转载自https://blog.csdn.net/cloudvtech

四、IPVS使用场景分析

互联网数据传输的一大特点是请求的数据传输量跟返回的数据传输量相比小到可以忽略,尤其是在现在多媒体和高清晰视图片和频的使用率越来越高的情况下,如何在director提高接入能力(处理请求包)的同时能完全发挥后端应用服务器集群的处理能力是一个亟待解决的问题。

在传统的服务器在内网提供对外网的服务能力的场景中,NAT和FULLNAT是比较合理的选择;在服务视频流的场景中,DR模式是更应该考虑的选择;在基于云提供商的场景中,NAT、FULLNAT或者TUN可能是合适的选择,或者直接使用云提供商的负载均衡服务;在基于容器的服务场景中,根据对于容器管理平台和容器主机的管理能力的不同,也需要选择合理的负载均衡服务。而在超大型分布式网络服务场景中,不仅后端需要具有集群服务的功能,承担流量接入的director本身也需要具有分布式的能力,并且需要保证后端能不借助director而将数据返回client,例如google的Maglev。

转载自https://blog.csdn.net/cloudvtech

kubernetes系列之五:IPVS概览相关推荐

  1. Kubernetes系列之五:使用yaml文件创建service向外暴露服务

    系列链接 Kubernetes系列之一:在Ubuntu上快速搭建一个集群Demo Kubernetes系列之二:将Slave节点加入集群 Kubernetes系列之三:部署你的第一个应用程序到k8s集 ...

  2. Kubernetes 系列之 kubeadm 搭建k8s集群

    Kubeadm 搭建k8s集群 注意:Kubernetes 系列 所采用的kuberntetes版本都是 1.15+ 1 Master 节点安装 1.1 系统环境配置 1.1.1 设置主机名称 hos ...

  3. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  4. iOS动画系列之五:基础动画之缩放篇旋转篇Swift+OC

    这一篇主要介绍基础动画之缩放和旋转.这些基本操作分享完之后,我想想可以找个稍微复杂一点点的动画做做啦. 这篇继续基础篇,分享一下缩放和旋转.因为整体思路和平移基本上没有变化,加上源代码里面也有OC版本 ...

  5. SQL Server 学习系列之五

    SQL Server 学习系列之五 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  6. 作业——Windows核心编程学习手札系列之五

    作业 --Windows核心编程学习手札系列之五 Windows提供作业内核对象,可以将进程组合在千毫 ,并创建一个"沙框"以便限制进程能够进行的操作.作业可视为进程的容器,win ...

  7. DNS扫盲系列之五:域名配置ZONE文件

    DNS扫盲系列之五:域名配置ZONE文件 这次把ZONE文件拿出来简单说明一下.ZONE文件是DNS上保存域名配置的文件,对BIND来说一个域名对应一个ZONE文件,现以abc.com的ZONE文件为 ...

  8. 隐马尔科夫模型(Hidden Markov Models) 系列之五

    隐马尔科夫模型(Hidden Markov Models) 系列之五 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...

  9. Kubernetes系列之Helm介绍篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来 ...

最新文章

  1. 也谈.net加密解密
  2. 【Python】Python中的for循环,没你想的那么简单~
  3. 为CodeLove编写插件——常用软件扫描(SoftwareToScan)
  4. 【设计模式之美】<Reading Notes>抽象类与接口
  5. 自己动手架设linux下Web服务器(图)1
  6. C# 关闭主窗口后让所有线程都停止工作
  7. 图说:快!快!抢注自己名字的Outlook.com的邮件别名吧
  8. Node.js连接mysql报加密方式错误解决方案
  9. 神奇的数学:牛津教授给青少年的讲座
  10. SOLID原则(转载)
  11. mysql表操作约束_MySQL操作表的约束
  12. 凸二次规划的解法(x取值具有上确界)
  13. Python精灵模块:走来走去的小猫咪
  14. 【LinuxOS】Ubuntu学习感悟
  15. USACO 1.1.2 - Greedy Gift Givers(模拟)
  16. 关于《数据出境安全评估办法》,来看看3位行业专家的不同视角
  17. 支付宝福利:银行卡信息查询
  18. 如何在bat文件中切换盘符并执行命令
  19. 让我们唠一唠:微信有哪些功能越来越不行了呢?
  20. (学习记录)Win32开发之键盘

热门文章

  1. 数字信号处理——振动篇
  2. 最近日益火热的三农金融话题能为理财的首选吗
  3. 2021年中国电动剃须刀行业发展现状分析,行业高端化趋势明显「图」
  4. macbookair苹果MAC笔记电脑本更换电池教程
  5. 交叉编译和交叉工具链
  6. 缺省波特率57600
  7. OMA DRM原理的研究及实现
  8. ntpdate提示Server dropped: no data处理记录
  9. Error:Execution failed for task ':app:validateSigningDevDebug'. Keystore file E:\workspace\trunk\H
  10. 游泳各种姿势大全 -图文 【好东西收藏之】