一、lvs介绍

LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。

LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。

LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。

1. ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。

2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

工作在input链上,lvs接收报文转发的流程:PREROUTING-->INPUT-->POSTROUTING

用户空间:ipvsadm:定义转发规则通过系统调用把规则发送给内核中的ipvs

lvs术语:

调度器:director server

RS: Real Server

Client IP: CIP

Director Virtual IP:VIP

Director IP: DIP

Real Server IP: RIP

二、lvs的三种模式

1、lvs type: lvs-nat

lvs-dr(direct routing)

lvs-tun(ip tunneling)

2、lvs-nat

多目标的DNAT(IPTABLES):它通过修改请求报文的目标ip地址(同时可能修改目标端口)至挑选出来的某个RS的RIP地址实现转发(通过网络地址转换来实现负载均衡)

特点:

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

(2)请求和响应报文都要经过director server,因此在并发量较高的情况下,director server有可能成为瓶颈

(3)支持端口映射

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

(5)RS的RIP和director的DIP必须同一网络中

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

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址

缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢

3、lvs-dr: direct routing

它通过修改请求报文的目标mac地址进行转发

特点:

(1)保证前段路由器将目标ip为vip的请求发送给director server

解决方案:

静态绑定

arptables

修改RS主机内核的参数

(2)RS的DS必须在同一个物理网络中

(3)请求报文经由Director调度,但响应报文一定不能经过director

(4)不支持端口映射

(5)RS可以是大多数的OS(Unix内核)

(6)RS的网关不能指向DIP

注意: 需要设置lo接口的VIP不能响应本地网络内的arp请求。

优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

DR模式的效率很高,但是配置稍微复杂一点,因此对于访问量不是特别大的公司可以用haproxy/nginx取代。日1000-2000W PV或者并发请求1万以下都可以考虑用haproxy/nginx。

缺点:所有 RS 节点和调度器 LB 只能在一个局域网里面。

4、lvs-tun(ip tunneling)

特点:

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。

注意:需要设置lo接口的VIP不能在公网上出现。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

三、lvs支持的算法(不区分大小写)

1. 轮叫调度 rr

这种算法是最简单的,就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去。

2. 加权轮叫 wrr

这种算法比 rr 的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对rr算法的一种优化和补充, LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的2倍。权值越高的服务器,处理的请求越多。

3. 最少链接 lc

这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1

4. 加权最少链接 wlc

这个算法比 lc 多了一个权重的概念。

5. 基于局部性的最少连接调度算法 lblc

这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

6. 复杂的基于局部性最少的连接算法 lblcr

记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

7. 目标地址散列调度算法 dh

该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

8. 源地址散列调度算法 sh

与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

grep -i -A 10 'IPVS' /boot/config-3.10.0-957.el7.x86_64

# IPVS scheduler

CONFIG_IP_VS_RR=m

CONFIG_IP_VS_WRR=m

CONFIG_IP_VS_LC=m

CONFIG_IP_VS_WLC=m

CONFIG_IP_VS_LBLC=m

CONFIG_IP_VS_LBLCR=m

CONFIG_IP_VS_DH=m

CONFIG_IP_VS_SH=m

CONFIG_IP_VS_SED=m

静态方法:仅根据算法本身进行调度

RR:round robin,轮调

WRR:weighted RR

SH:source hash,实现session保持的机制

DH:destination hash,将同一个目标的请求始终发往同一个RS

动态方法:gun局算法及各RS的当前负载状态进行调度

LC:Least Connection

Overhead=Active*256 + Inactive

WLC:Weighted LC

Overhead=(Active*256 + Inactive)/weighted

overhead较小的即被挑选的主机

SED:

LBLC:

LBLCR:

转载于:https://www.cnblogs.com/renyz/p/11384582.html

linux中级之lvs概念相关推荐

  1. linux服务器lvs,Linux的企业-LVS(Linux虚拟服务器)及FULLNAT设置

    一.Linux Virtual Server (linux虚拟服务) lvs工作于IOS七层模型的传输层,通过对TCP.UDP.SCTP.IPsec ESP.AH这些工作在四层的协议的支持,根据目标地 ...

  2. 在Linux下用LVS和Ipvsadm做Web负载均衡

    在Linux下用LVS和Ipvsadm做Web负载均衡,如果想对负载均衡有一个全面.宏观上的理解,可以看:服务器负载均衡技术的原理及应用. 一.简介及环境配置 在Linux下用 LVS和Ipvsadm ...

  3. linux中级篇--网络相关命令

    网络相关命令 Linux中常见的网络相关命令如下表所示,本书将选取其中使用较频繁的命令进行讲解. 命令 说明 格式 ifconfig 显示或设置网络设备 ifconfig [网络设备][选项]- pi ...

  4. Linux学习之CentOS(八)--Linux系统的分区概念

    不知不觉已经记录了8篇Linux学习随笔了,虽然还是漂浮在Linux系统的表面,还有很多很多没有学,但是坚持学下去.坚持写下去就是成功的!!!! 在讲Linux系统分区之前,首先得介绍一下硬盘分区的知 ...

  5. linux说明是集群,集群——菜鸟学习Linux集群之概念篇

    前两天学习了集群的应用,简单总结下:集群并不是很高深难懂的知识,只要掌握其原理,那么实现起来并不是很困难.下面我们一起来简单学习下集群. 什么是集群? 集群或者说是群集:其目的是为了实现将多台计算机组 ...

  6. Linux负载均衡Linux Virtual Server (lvs) 内核自带的负载均衡器

    目录 lvs 转发模式 调度算法 lvs配置示例 LVS缺点 Haproxy Nginx 自研负载均衡 Google Maglev UCloud Vortex 参考文档 lvs Linux Virtu ...

  7. Linux Virtual Server LVS Load Balancing

    简介: Linux虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等 ...

  8. linux ps swn,Linux操作的基本概念与命令(转)

    3. 格式化内存,挂载. [root@online2 /]# cd /dev/ [root@online2 dev]# ls ram* //4兆一个内存 ram ram1 ram11 ram13 ra ...

  9. linux进程管理基本概念

    linux进程管理基本概念 进程管理 进程树 什么是进程和程序 启动进程 前台启动进程 后台启动进程 创建进程 1 地址空间 2 进程元数据 3 如何创建进程 特殊进程 僵尸进程 孤儿进程 守护进程 ...

  10. 【Linux】文件系统的概念和类型

    一. Linux文件系统的基本概念 文件系统(File System)是磁盘上有特定格式的一片区域,操作系统利用文件系统保存和管理文件. 不同的操作系统需要使用不同的文件系统,为了与其他操作系统兼容, ...

最新文章

  1. 终端读写命令 -- read write wall
  2. H3C 交换机S6520X软件版本升级
  3. mysql int 默认值 为ull_mysql的 约束 数据库设计 数据库 存储 触发器 mysql 权限问题...
  4. 实现单链表--Python
  5. 教你用BitMap排序、查找和存储大量数据
  6. Zookeeper知识梳理
  7. log4j debug写法
  8. 对虚拟目录的操作(转)
  9. 超融合将成为数据中心技术应用主流
  10. CentOS7下Nginx 安装 Lua 支持
  11. HBuilderX真机调试检测不到魅族手机
  12. java 组播_java使用MulticastSocket实现组播
  13. Three Bags CodeForces - 1467C (贪心)
  14. 设置Win10防火墙规则,使得局域网能访问此电脑的Tomcat服务器
  15. 设计模式之九原型模式
  16. es6 去掉空格_微信小程序自动去除input空格的方法
  17. 如果你的网站需要免费的 SVG 插图,一定不要错过 Undraw 这个网站
  18. 从零开始写一个框架的详细步骤
  19. 测试手机新机软件,玩机小技巧 篇一:手把手教你快速验新机——写给剁手节买了新手机的值友...
  20. 回声消除中的LMS和NLMS算法与MATLAB实现

热门文章

  1. 学习 Python 第八天
  2. javascript:访问iframe中的js函数
  3. Virtual TreeView使用示例
  4. 「leetcode」617. 合并二叉树:【三种递归】【一种迭代】详解
  5. poj Eeny Meeny Moo 我用链表暴力超时了!!!
  6. poj 1503 Integer Inquiry高精度
  7. 如何在iPhone、iPad和Mac上查看照片的EXIF数据?
  8. 苹果Mac如何限制进程 CPU 资源占用?
  9. iTerm2 如何设置以单词为单位快速移动光标?
  10. TensorFlow机器学习实战指南之第二章