负载均衡调度器--LVS

news2024/11/15 12:01:47

文章目录

  • 集群和分布式
    • 集群
    • 分布式
  • LVS介绍
    • LVS特点
    • LVS工作原理
    • LVS集群架构
  • LVS集群中的术语
    • CIP
    • VIP
    • RS
    • DIP
    • RIP
  • LVS集群的工作模式
    • NAT模式
    • DR模式
      • DR模式的特点:
    • TUN模式
  • LVS调度算法
  • LVS相关软件
    • ipvsadm 命令
      • 管理集群服务:增、改、删
      • 管理集群上的RS:增、改、删
    • 创建集群

在这里插入图片描述
LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。

LVS 在大型网站和服务集群中应用广泛,是一种可靠的负载均衡解决方案。通过不同的工作模式和负载均衡算法,LVS 能够灵活地适应各种网络环境和应用需求。

集群和分布式

集群

集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是─样的。

分布式

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。

分布式常见应用
  1.分布式应用--服务按照功能拆分,使用微服务
  2.分布式静态资源--静态资源放在不同的存储集群上
  3.分布式数据和存储--使用key-value缓存系统
  4.分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败。
在这里插入图片描述

LVS介绍

LVS: (Linux Virtual Server),是全球最流行的四层负载均衡开源软件,内核集成,由章文嵩博士(当前阿里云产品技术负责人)在1998年5月创立,可以实现LINUX平台下的负载均衡。

LVS是 基于linux netfilter框架实现(同iptables)的一个内核模块,名称为ipvs;其钩子函数分别HOOK在LOCAL_IN和FORWARD两个HOOK点

LVS是一种用于实现高可用性和负载均衡的技术。LVS 可以将客户端请求分配到多个后端服务器上,形成一个虚拟的服务器集群,从而提高系统的可用性、扩展性和性能。LVS 常用于负载均衡 Web 服务器、邮件服务器、数据库服务器等应用。

LVS官网:http://www.linuxvirtualserver.org/

阿里SLB:
https://developer.aliyun.com/article/1803
https://github.com/alibaba/LVS

阿里的四层SLB(ServerLoad Balance)是基于LVS+keepalived实现。

LVS特点

LVS特点:
  1.高可用性: LVS 通过将流量分配到多个后端服务器,实现了单点故障的容错能力。如果某个服务器故障,流量可以自动转移到其他服务器。
  2.负载均衡: LVS 支持多种负载均衡算法,可以根据不同的策略(如轮询、最少连接等)将流量合理地分配到后端服务器。
  3.透明性: 对客户端来说,LVS 集群表现为一个单一的虚拟服务器,后端服务器对客户端是透明的。
  4.扩展性: LVS 集群可以通过增加后端服务器来扩展系统的处理能力。
  5.低开销: LVS 运行在内核空间中,效率高,性能损失低,适合处理大量的网络连接。

LVS工作原理

LVS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理”。

查看内核支持LVS

ls /boot/
grep -i ipvs /boot/config-5.4.0-182-generic

在这里插入图片描述

root@ka1:~# grep -i ipvs -C 20 /boot/config-5.4.0-182-generic 
......(此处省略部分内容)
CONFIG_NETFILTER_XT_MATCH_IPVS=m
......
CONFIG_NETFILTER_XT_MATCH_POLICY=m

......

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y

#
# 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_FO=m
CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_MH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m

#
# IPVS SH scheduler
#
CONFIG_IP_VS_SH_TAB_BITS=8

#
# IPVS MH scheduler
#
CONFIG_IP_VS_MH_TAB_INDEX=12

......

LVS集群架构

在这里插入图片描述

LVS集群中的术语

访问流程: CIP <–> VIP == DIP<–> RIP

CIP

定义

CIP(Client IP)
  是指客户端的IP地址。
  在LVS中,CIP是指向LVS Director发起请求的终端设备的IP地址。CIP是LVS负载均衡过程中的关键因素,
  因为LVS会根据CIP来确定请求的源头,并据此将流量分发到适当的Real Server(实际服务器)。

作用

作用(Role):
  标识客户端: 
    CIP是识别和区分不同客户端请求的重要信息。
    每个请求都会带有CIP,这使得LVS能够追踪请求的来源,并根据CIP来执行负载均衡策略,
    例如在持久性会话(Persistence)场景中,确保同一CIP的请求始终被路由到相同的Real Server。

  决定负载均衡: 
    LVS可以根据CIP来选择负载均衡算法的应用,
    例如基于CIP的最少连接算法(Least Connections with Source IP Hashing),
    在这种情况下,CIP会直接影响LVS选择哪个Real Server来处理请求。

使用场景

使用场景 (Usage Scenarios):

  持久性会话 (Persistence):
    在某些应用场景中,特别是需要保持会话状态的场景(例如电商网站的购物车、用户登录等),
    LVS需要确保同一CIP的所有请求在一定时间内始终分配给同一个Real Server。
    这种机制称为持久性会话,通常通过记录CIP与Real Server的映射关系来实现。
   
  防火墙规则 (Firewall Rules):
    LVS中的CIP也可以用于定义防火墙规则。
    例如,可以基于CIP设置访问控制,允许或拒绝特定的IP地址访问某些资源。这对于提高系统的安全性非常有用。

  负载均衡策略:
    LVS的一些负载均衡算法可能会使用CIP来计算哈希值,以便决定将请求分配给哪个Real Server。
    例如,源地址哈希(Source IP Hashing)算法根据CIP来确定Real Server。
工作模式中的影响 (Impact in Different Modes):

  NAT模式(Network Address Translation):
    在NAT模式下,客户端的请求到达LVS Director时,Director会看到CIP并记录它。
    在请求被转发到Real Server时,CIP可能会被隐藏或替换为DIP,具体取决于配置。
    但Real Server仍然可以通过LVS处理后的数据包看到原始的CIP。
   
  DR模式 (Direct Routing):
    在DR模式下,CIP保持不变,Real Server直接接收到原始的客户端请求,因此Real Server可以直接看到CIP。
    这在持久性会话或日志记录等场景中尤为重要。

  TUN模式 (IP Tunneling):
    在TUN模式下,客户端请求通过IP隧道传输到Real Server,CIP也会保持不变,
    Real Server可以直接使用CIP进行处理和记录。

相关配置

相关配置 (Configuration):
  在LVS的配置中,CIP通常不需要显式配置,因为它是由客户端自动生成并附加到请求中的。
  然而,在配置LVS的持久性会话或防火墙规则时,需要考虑如何处理和利用CIP。

  如果使用持久性会话,LVS通常会建立CIP与Real Server 的映射表,
  以确保来自同一CIP的请求在指定时间内始终分配给同一个Real Server。

示例 (Example):

假设有一个LVS集群配置为DR模式,配置如下:
  VIP: 192.168.100.1
  Real Server: 192.168.100.101, 192.168.100.102
  Client: 203.0.113.5 (CIP)
  
客户端(CIP 为 203.0.113.5)发出一个请求到 VIP 192.168.100.1。
  1.LVS Director会接收请求,并基于CIP决定将请求转发到 Real Server 192.168.100.101 或 192.168.100.102。
  2.Real Server收到请求后,可以看到CIP并据此处理请求。

总结:
CIP 是 LVS 中的重要概念,它标识了客户端的来源,并在 LVS 的负载均衡决策中起着关键作用。理解 CIP 如何在不同的 LVS 工作模式中影响请求的处理和分配,对于优化和管理 LVS 系统非常重要。

VIP

VIP: Virtual serve IP VS外网的IP

定义

VIP (Virtual IP) 
  是指在LVS (Linux Virtual Server) 系统中,对外暴露的虚拟IP地址。
  VIP是客户端访问整个LVS集群的入口IP,客户端的所有请求都会先到达VIP,
  然后由LVS Director根据负载均衡算法将请求转发到后端的实际服务器(Real Servers)。

作用

作用 (Role):
  统一入口: 
    VIP作为LVS集群的对外统一访问点,使得整个服务器集群在外界看来是一个单一的服务器。
    客户端不需要知道后端的Real Servers的具体IP地址,只需通过VIP访问服务。

  负载均衡: 
    VIP LVS进行负载均衡操作的核心。
    当客户端请求到达VIP时,LVS会根据预设的负载均衡算法决定将请求转发给哪个后端的 Real Server(RIP)。

  高可用性: 
    通过VIP,LVS可以实现高可用性。
    当某个Real Server出现故障时,LVS可以自动将流量重定向到其他正常的服务器,而不会中断服务。

使用场景

使用场景 (Usage Scenarios):
  Web服务: 
    在高并发的Web服务中,VIP使得多台Web服务器可以作为一个整体对外提供服务。
    客户端的请求到达VIP后,LVS根据负载均衡算法将请求分发给不同的Web服务器,从而提高服务的并发能力。

  数据库服务: 
    在高可用的数据库集群中,VIP可以作为数据库访问的入口点。
    无论是读写分离还是读写集群,客户端只需要访问 VIP,而LVS会将请求分发给合适的数据库实例。

  防火墙规则: 
    在防火墙配置中,VIP可以被用于定义访问控制策略。
    例如,只允许特定的客户端IP地址访问VIP,以提高系统的安全性。

工作模式中的使用

工作模式中的使用(Usage in Different Modes):
 
  NAT模式(Network Address Translation):
    在NAT模式下,客户端请求首先到达VIP,LVS Director将请求的目标IP地址转换为DIP,并转发给一个Real Server。 
    Real Server 处理请求后,将响应数据发送回 LVS,由 LVS 通过 VIP 返回给客户端。

  DR模式(Direct Routing):
    在DR模式下,VIP 通常配置在LVS Director 和所有Real Servers 上。
    客户端的请求到达VIP后,LVS 修改数据包的MAC地址,将请求直接发送给Real Server,Real Server直接将响应数据返回给客户端。

  TUN模式(IP Tunneling):
    在TUN模式下,VIP作为客户端访问的目标地址,
    LVS使用IP隧道技术将请求转发到地理上分布的Real Server,Real Server处理完请求后直接将响应发送给客户端。

配置VIP

在配置LVS 时,VIP 通常是通过 LVS Director 的网络接口配置的。
管理员可以将 VIP 绑定到指定的网络接口上,从而使 LVS 能够接收客户端的请求。

示例配置:

ifconfig eth0:0 192.168.100.1 netmask 255.255.255.0 up

这里,VIP 192.168.100.1 被配置在 eth0:0 虚拟接口上,用于接收客户端请求。

示例 (Example):

假设有一个 LVS 配置如下:
  VIP: 192.168.100.1
  DIP: 192.168.100.10
  RIP: 192.168.100.101, 192.168.100.102

在这个例子中:
  1.客户端发出请求到 VIP 192.168.100.1。
  2.LVS Director 接收到请求后,根据配置的负载均衡算法,将请求转发给一个 RIP(例如 192.168.100.101)。
  3.Real Server 处理请求,并返回响应数据。响应数据通过VIP传递回客户端(NAT模式下通过LVS转发,DR模式下直接发送)。

与其他 IP 的区别

DIP(Director IP): 
  DIP是LVS Director 用于与内部Real Server通信的IP地址,主要在内部网络中使用。
  而VIP是客户端访问的公共 IP 地址。

RIP(Real IP): 
  RIP是实际处理请求的服务器的 IP 地址,只在 LVS 内部网络中可见。
  VIP是对外暴露的 IP,客户端通过 VIP 访问服务。

总结: VIP 是 LVS 系统中非常重要的概念,它作为 LVS 集群的入口点,使得 LVS 可以实现高效的负载均衡和高可用性。通过配置VIP,多个后端服务器可以作为一个整体对外提供服务,从而增强系统的扩展性和可靠性。

RS

RS: Real Server(lvs), upstream server(nginx), backend server(haproxy)

定义

RS(Real Server) 
  是指在LVS (Linux Virtual Server) 系统中,实际处理客户端请求的后端服务器。
  这些服务器执行具体的应用程序或服务,例如 Web 服务器、数据库服务器等。
  LVS 将客户端的请求分发到这些 Real Servers,以实现负载均衡和高可用性。

作用

作用(Role):
  处理请求: 
    RS是真正执行应用逻辑、处理客户端请求并生成响应的服务器。
    当LVS接收到客户端的请求后,会根据预设的负载均衡算法将请求转发给一个或多个 RS。

  分担负载: 
    通过将客户端的请求分发到多个RS,LVS可以平衡负载,防止单个服务器过载。
    这样可以提升整体服务的性能和可靠性。

  保证高可用性: 
    RS是实现高可用性的重要部分。
    通过监控和管理多个RS,LVS可以在某个RS发生故障时,自动将流量切换到其他可用的RS,从而避免服务中断。

使用场景

使用场景(Usage Scenarios):
  Web服务: 
    在大规模Web服务中,通常会有多个RS来处理客户端的HTTP 请求。
    LVS将流量分发给这些RS,从而实现高并发的处理能力。

  数据库服务: 
    在分布式数据库系统中,多个RS可以作为数据库节点,通过LVS进行负载均衡,保证数据库服务的高效运行。

  文件存储: 
    对于大规模的文件存储服务,可以通过LVS将上传和下载请求分发给不同的RS,从而提高系统的吞吐量。

工作模式中的使用

工作模式中的使用(Usage in Different Modes):

  NAT模式(Network Address Translation):
    在NAT模式下,客户端的请求首先到达 LVS Director,Director 将请求转发给一个 RS。
    RS 处理请求并将响应发送回 LVS Director,再由 Director 返回给客户端。
    在这个模式下,RS 通常不直接与客户端通信,所有流量都通过 LVS 转发。

  DR模式(Direct Routing):
    在DR模式下,LVS Director将请求转发给RS,而不改变数据包的目标 IP 地址。
    RS直接响应客户端请求,这种模式减少了LVS的流量处理负担,因此可以处理更高的并发量。
    
  TUN模式(IP Tunneling):
    在TUN模式下,客户端请求通过IP隧道传输到RS,RS处理请求后直接将响应发送给客户端。
    TUN模式允许RS位于不同的网络中,适用于跨地域的服务器集群。

配置 RS

在LVS系统中,RS通过其IP地址(RIP)在配置文件中定义。
管理员可以指定多个RS,并为每个RS设置权重,以控制流量的分配比例。

示例配置

real_server 192.168.100.101 80 {
    weight 1
    TCP_CHECK {
        connect_timeout 3
    }
}
real_server 192.168.100.102 80 {
    weight 2
    TCP_CHECK {
        connect_timeout 3
    }
}

在这个示例中,192.168.100.101 和 192.168.100.102 是两个 RS,
其中 192.168.100.102 的权重更高,因此它将处理更多的请求。

健康检测

健康检测
  1.LVS会定期对RS 进行健康检查,以确保它们处于正常运行状态。
  2.如果某个RS无法响应,LVS会将其从流量分发池中移除,直到它恢复正常为止。
  3.常见的健康检查方法包括TCP检查、HTTP检查等。

示例

假设 LVS 系统的配置如下:
  VIP: 192.168.100.1
  RIP(RS): 192.168.100.101, 192.168.100.102

在这个配置中:
  1.当客户端发出请求到VIP 192.168.100.1 时,LVS Director 接收请求。
  2.LVS Director根据负载均衡算法选择一个 RS(例如 192.168.100.101),并将请求转发给它。
  3.这个RS 处理请求后,直接或通过LVS将响应返回给客户端(具体取决于工作模式)。

与其他 IP 的区别

VIP(Virtual IP): 
  VIP 是 LVS 集群对外暴露的 IP 地址,用于接收客户端请求。
  而 RS 则是实际处理这些请求的服务器。
  
DIP(Director IP): 
  DIP 是 LVS Director 在内部网络中的 IP 地址,用于与 RS 进行通信和管理,
  而 RS 则是用来执行实际的服务任务。
Real Server (RS)
  定义: 实际服务器(Real Server)是LVS后端用于处理客户端请求的真实服务器。
       这些服务器通常运行着实际的应用程序(如 Web 服务器、数据库服务器等)。
  作用: Real Server负责处理由 LVS 转发的请求,并返回响应给客户端。

总结: RS 是 LVS 系统中的核心组成部分,负责处理和响应客户端的请求。通过配置多个 RS,并结合 LVS 的负载均衡功能,可以实现高性能、高可用性的服务架构。理解 RS 的配置和管理是确保 LVS 系统稳定高效运行的关键。

DIP

定义

 DIP: Director IP VS内网的IP
  定义:DIP是指运行LVS的Director 服务器在局域网内的IP地址。
       这个IP地址用于与Real Server(实际服务器)通信,并接受客户端请求。
       DIP是Director服务器的一个内部网络接口的IP地址,通常在NAT模式或DR模式中使用。

作用:

 通信中枢: 
     DIP是LVS Director与后端Real Server之间进行通信的主要途径。
     在NAT模式下,Director使用DIP作为源地址与Real Server通信;
     在DR模式下,DIP主要用于管理和监控Real Server的状态。
 
 管理网络: 
     DIP是LVS Director 在内部网络中的身份标识,通常用于内部网络中的管理和控制操作,如健康检查、配置同步等。

 内部流量控制: 
     DIP也可以用于处理LVS相关的内部流量,例如将数据包从VIP转发到Real Server,并在必要时返回数据包给客户端。

工作模式中的使用

NAT模式(Network Address Translation):
  在NAT模式下,DIP作为源IP地址发送数据包给Real Server。
  LVS Director将客户端发送到VIP 的请求转发到Real Server,并使用DIP作为源地址。
  Real Server的响应数据包会先发送到DIP,再由LVS Director转发回客户端。

DR模式(Direct Routing):
  在DR模式下,DIP主要用于监控和管理 Real Server 的状态。
  虽然DR模式下的请求是通过修改MAC地址直接转发的,但DIP仍然用于与Real Server保持通信,如健康检查和故障切换操作。

TUN模式(IP Tunneling):
  在TUN模式下,DIP作用较为类似于DR模式,
  主要用于管理和监控Real Server,但实际的客户端请求会通过IP隧道直接发往Real Server。

与 VIP 的区别 (Difference from VIP):

VIP(Virtual IP): 
  VIP是LVS集群对外展示的IP地址,客户端通过VIP访问服务。VIP通常是公开的,可以在互联网或局域网内访问。

DIP(Director IP): 
  DIP是LVS Director 的内部IP地址,用于内部通信和管理。DIP通常不会直接暴露给客户端。

相关配置 (Configuration):

在配置LVS时,DIP是在Director的内部网络接口上配置的IP地址。
根据不同的工作模式,DIP 的配置可能会有一些差异。一般情况下,DIP需要与Real Server在同一个子网中,以确保通信的顺畅。

示例 (Example)

假设有一个LVS集群,使用NAT模式,配置如下:
  VIP: 192.168.100.1
  DIP: 192.168.100.10
  Real Server: 192.168.100.101, 192.168.100.102
  
在这种配置中,
  1.客户端请求会先到达VIP(192.168.100.1)
  2.然后由LVS Director 通过DIP(192.168.100.10)将请求转发到其中一个 Real Server(如 192.168.100.101)。
  3.Real Server处理完请求后,将响应发送回DIP,再由 LVS Director 返回给客户端。

总结:DIP 是 LVS Director 用于与内部网络中的 Real Server 通信和管理的重要 IP 地址,它是 LVS 系统中不可或缺的组成部分之一。

RIP

定义

RIP (Real IP) 
  是指LVS中后端真实服务器的IP 地址。
  也就是实际处理客户端请求的服务器的IP地址。
  在LVS的上下文中,RIP是与Real Server相关的术语,代表这些服务器在内部网络中的身份。

作用

作用(Role):
  标识后端服务器: 
    RIP用于标识每个Real Server 在LVS集群中的位置。
    当LVS Director接收到客户端的请求时,它会根据负载均衡算法将请求转发到指定的RIP对应的服务器。
  
 流量分发: 
   LVS根据配置的负载均衡策略,将客户端请求从VIP转发到一个或多个RIP对应的Real Server。
   每个RIP都是一个潜在的目标服务器,用于处理和响应客户端请求。

使用场景

使用场景 (Usage Scenarios):
  负载均衡:
    LVS的主要功能是将流量分发到多个RIP对应的Real Server,以实现负载均衡。
    通过配置不同的RIP,管理员可以控制流量的分布,并在必要时添加或移除服务器,以应对变化的负载需求。

  故障切换: 
    在LVS中,如果某个RIP对应的Real Server 出现故障,
    LVS可以自动将流量切换到其他可用的RIP对应的服务器,以确保服务的持续可用性。这种机制提高了系统的容错能力。

  健康检查: 
    LVS通常会对RIP对应的Real Server进行健康检查,确保这些服务器处于正常运行状态。
    如果某个RIP对应的服务器无法响应,LVS将其暂时从流量分发池中移除,直到其恢复正常。

工作模式中的影响

工作模式中的影响(Impact in Different Modes):
  NAT模式(Network Address Translation):
    在NAT模式下,LVS Director 会将客户端的请求转发给一个RIP对应的Real Server,并修改数据包的源IP地址为DIP。
    Real Server 的响应数据包也会返回到 DIP,再由 LVS 转发给客户端。

  DR模式(Direct Routing):
    在DR模式下,LVS Director直接将数据包发送给RIP对应的Real Server,而不修改数据包的源IP地址。
    Real Server直接将响应数据包发送给客户端。因此在这个模式下,RIP需要与客户端的网络拓扑有一定的关联。

  TUN模式(IP Tunneling):
    在TUN模式下,LVS使用IP隧道将客户端的请求转发到不同网络中的RIP对应的Real Server。
    Real Server 接收到数据包后,处理并直接将响应发送给客户端。

总结: RIP是LVS 系统中后端真实服务器的 IP 地址,是 LVS 进行负载均衡和流量管理的核心要素。理解和配置 RIP有助于优化流量分发、提高系统的可靠性,并确保服务的持续可用性。

VS: Virtual Server, Director Server(DS), Dispatcher(调度器), Load Balancer

LVS集群的工作模式

1.lvs-nat:  修改请求报文的目标IP,多目标IP的DNAT(目的地址转换)
2.lvs-dr:   操纵封装新的MAC地址
3.lvs-tun:  在原请求IP报文之外新加一个IP首部
4.lvs-fullnat:修改请求报文的源和目标lP,默认内核不支持

参考博客:https://cloud.tencent.com/developer/article/2054205

NAT模式

官方链接:http://www.linuxvirtualserver.org/VS-NAT.html

NAT模式(Network Address Translation):
  在NAT模式下,LVS负载均衡器将客户端请求转发到后端服务器,并将后端服务器的响应数据再转发回客户端。
  LVS充当网络地址转换器,修改数据包的源地址和目的地址。
  
优点: 配置简单,后端服务器只需与 LVS 处于同一网络。
  
缺点: LVS承担双向流量,易成为性能瓶颈,不适合处理大流量的场景。

在这里插入图片描述
lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发

(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统

在这里插入图片描述
在这里插入图片描述
注意:在NAT模式中,LVS既是请求的入口又是响应的出口,负载会比较大,会有性能瓶颈。

DR模式

官方链接:http://www.linuxvirtualserver.org/VS-DRouting.html

NAT模式 (Network Address Translation):
  在NAT模式下,LVS负载均衡器将客户端请求转发到后端服务器,并将后端服务器的响应数据再转发回客户端。
  LVS充当网络地址转换器,修改数据包的源地址和目的地址。

优点: 配置简单,后端服务器只需与LVS处于同一网络。
  
缺点: LVS承担双向流量,易成为性能瓶颈,不适合处理大流量的场景。

在这里插入图片描述
LVS-DR: Direct Routing(直接路由),LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。

DR模式的特点:

1.Director和各RS都配置有VIP

2.确保前端路由器将目标IP为VIP的请求报文发往Director
2.1在前端网关做静态绑定VIP和Director的MAC地址。
2.2在RS上使用arptables工具

arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

在RS上修改内核参数以限制arp通告及应答级别

/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

3.RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director

4.RS和Director要在同一个物理网络

5.请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

6.不支持端口映射(端口不能修改)

7.无需开启ip_forward

8.RS可使用大多数OS系统

在这里插入图片描述

TUN模式

TUN模式(IP Tunneling):
  在TUN模式下,LVS使用IP隧道(IPIP)技术将客户端请求通过隧道发送给后端服务器,
  后端服务器直接将响应数据发送回客户端。适合后端服务器位于不同网络的情况。
  
优点: 支持跨广域网的负载均衡,LVS 仅处理入站流量,负载较轻。
  
缺点: 配置较复杂,需要在后端服务器上配置隧道接口。

LVS调度算法

1.轮询(Round Robin): RR,
    轮询将请求依次分配给每个后端服务器,较常用,雨露均沾,大锅饭。

2.加权轮询(Weighted Round Robin): WRR,
    根据每台服务器的权重来分配请求,权重高的服务器分配更多的请求,较常用。

3.源IP地址哈希(Source Hashing): SH,
    实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定。

4.目标IP地址哈希(Destination Hashing): DH,
    第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,
    典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存

LVS相关软件

程序包:ipvsadm

yum install -y ipvsadm

在这里插入图片描述
在这里插入图片描述
vim /usr/lib/systemd/system/ipvsadm.service
在这里插入图片描述

ipvsadm 命令

ipvsadm核心功能:
  1.集群服务管理:增、删、改
  2.集群服务的RS管理:增、删、改
  3.查看
[root@rocky ~]# ipvsadm --help
ipvsadm v1.31 2019/12/24 (compiled with popt and IPVS v1.2.1)
Usage:
  ipvsadm -A|E virtual-service [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
  ipvsadm -D virtual-service    删除
  ipvsadm -C                    清空
  ipvsadm -R                    重载,相当于ipvsadm-restore
  ipvsadm -S [-n]               保存,相当于ipvsadm-save
  ipvsadm -a|e virtual-service -r server-address [options]
  ipvsadm -d virtual-service -r server-address
  ipvsadm -L|l [virtual-service] [options]
  ipvsadm -Z [virtual-service]
  ipvsadm --set tcp tcpfin udp
  ipvsadm --start-daemon {master|backup} [daemon-options]
  ipvsadm --stop-daemon {master|backup}
  ipvsadm -h
Commands:
Either long or short options are allowed.
  --add-service     -A        add virtual service with options
  --edit-service    -E        edit virtual service with options
  --delete-service  -D        delete virtual service
  --clear           -C        clear the whole table
  --restore         -R        restore rules from stdin
  --save            -S        save rules to stdout
  --add-server      -a        add real server with options
  --edit-server     -e        edit real server with options
  --delete-server   -d        delete real server
  --list            -L|-l     list the table
  --zero            -Z        zero counters in a service or all services
  --set tcp tcpfin udp        set connection timeout values
  --start-daemon              start connection sync daemon
  --stop-daemon               stop connection sync daemon
  --help            -h        display this help message

virtual-service:
  --tcp-service|-t  service-address   service-address is host[:port]
  --udp-service|-u  service-address   service-address is host[:port]
  --sctp-service    service-address   service-address is host[:port]
  --fwmark-service|-f fwmark          fwmark is an integer greater than zero

管理集群服务:增、改、删

增、改

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

说明

service-address:

-t|u|f:
    -t: TCP协议的端口,VIP:TCP_PORT 如:-t 10.0.0.100:80
    -u: UDP协议的端口,VIP:UDP_PORT
    -f: firewall MARK,标记,一个数字
[-s scheduler]: 指定集群的调度算法,默认为wlc

范例

ipvsadm -A -t 10.0.0.100:80 -s wrr   增
ipvsadm -D -t|u|f service-address    删除

管理集群上的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

说明

server-address:
    rip[:port] 如省略port,不作端口映射
选项:
lvs类型;
  -g: gateway, dr类型,默认
  -i: ipip, tun类型
  -m: masquerade,nat类型
-w weight: 权重

范例:

ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.8:8080 -m -w 3

创建集群

第一步:创建集群

ipvsadm -A -t 10.0.0.100:80   #ip地址当然要存在,不然路由不可达呀

在这里插入图片描述
第二步:添加后端服务器
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2108993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络搭建的那点事

1.全连接网络 python&#xff1a; nn.Linear(in, out) matlab: layer fullyConnectedLayer(outputSize) layer fullyConnectedLayer(outputSize,Name,Value) 2.add和concat的区别 concat作用 concat是通道数的增加&#xff0c;也就是说描述图像本身的特征数&#xff08;通道…

ITK-高斯滤波

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 高斯滤波原理 高斯滤波&#xff08;Gaussian Blur&#xff09;是数字图像处理中常见的一种平滑滤波器&#xff0c;旨在通过模糊处…

Python 从入门到实战8(字典)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们通过举例学习了python 中元组的定义及相关操作。今天…

css弹性盒子——flex布局

目录 ​编辑 一、flex容器的样式属性(父元素属性) display:flex 弹性盒子&#xff0c;实现水平排列,在父盒子设置&#xff0c;适用于单行/单列 justify-content 二、flex元素的样式属性(子元素属性) 1.flex-grow 2.flex-shrink 3.flex-basis 4.flex组合属性 flex:flex-…

【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题

WPS表格 2019版本 升级到 WPS最新版 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 使用最新版就能够解决这个问题&#xff0c;如果仍旧无法解决可以勾选如下配置 重启Excel解决。 请勾选&#xff1a;文件 - 选项 - 编辑 - 不提示且不压缩文件中的图像

无需更换摄像头,无需施工改造,降低智能化升级成本的智慧工业开源了。

智慧工业视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用户只需在界面上…

Linux系统下载并配置vscode(无废话)写C++

首先下载visual studio code 1.可以在应用商店下载 2.进入vscode官网Documentation for Visual Studio Code点击download>>点击下载.rpm 下载好之后打开vscode&#xff0c;先下载中文拓展&#xff08;可省略&#xff09; 然后下载c语言拓展 下载完之后打开设置&#xf…

Vue 使用接口返回的背景图片和拼图图片进行滑动拼图验证

一、背景 前两天发了一篇 vue-monoplasty-slide-verify 滑动验证码插件使用及踩坑_vue-monoplasty-slide-verify 引用后不显示-CSDN博客 这两天项目又需要通过接口校验&#xff0c;接口返回了背景图片和拼图图片&#xff0c;于是在网上找了一篇帖子&#xff0c;vue 图片滑动…

了解一下HTTP 与 HTTPS 的区别

介绍&#xff1a; HTTP是超文本传输协议。规定了客户端&#xff08;通常是浏览器&#xff09;和服务器之间如何传输超文本&#xff0c;也就是包含链接的文本。通常使用TCP【1】/IP协议来传输数据&#xff0c;默认端口为80。 HTTPS是超文本传输安全协议&#xff0c;具有CA证书。…

羲和能源大数据平台——Python数据绘图方法

1. 写在前面 目前论文对绘图的美观度要求越来越高&#xff0c;在气象领域呈现维度高&#xff0c;时空关联的特性&#xff0c;为了充分展示数据在各个维度的特性&#xff0c;选用合适的绘图方法至关重要&#xff0c;下图给出了如今在科研领域中个常用的各类图像&#xff1a;线型…

远程教育与学习:探索远程控制技术在教育领域的新机遇

什么适合会用到远程控制工具&#xff1f;如果你是运维、是设计或者外勤需要办公的一些资料文件&#xff0c;有远程控制工具工具的话就能轻松解决这些情况。为了保证电脑的安全我建议从官方网站进行下载&#xff0c;比如从向日葵远程控制官网下载就可以得到向日葵的官方正版。这…

Docker Container 常用命令

文章目录 目录 文章目录 1 . 什么是容器&#xff1f; 2 . 容器命令清单 docker create docker run docker ps docker logs docker exec docker kill docker container inspect docker cp docker rm docker export 总结 1 . 什么是容器&#xff1f; 通俗地讲&a…

C++设计模式——Command命令模式

一&#xff0c;命令模式的定义 命令模式是一种行为型设计模式。在实际开发场景中&#xff0c;命令模式将一个请求的处理或者一个具体操作封装为一个对象&#xff0c;从而可以让开发者根据不同的请求参数来生成不同的执行函数。 命令模式的本质是对具体命令的拆解和封装&#…

【Git远程仓库】将本地仓库推送到github(踩坑记录)

上一篇博客已经介绍了git本地仓库的基本操作&#xff0c;接下来记录一下如何将本地仓库上传到远程仓库中 远程仓库&#xff1a;托管在因特网的版本库&#xff0c;保存版本库的历史记录&#xff0c;多人协作 1. 创建远程版本库&#xff0c;得到远程仓库git地址 2. 本地仓库添加…

C#复习之内部类和分布类

知识点一&#xff1a;内部类 知识点二&#xff1a;分布类 知识点三&#xff1a;分部方法

DisplayManagerService启动-Android13

DisplayManagerService启动-Android13 1、DisplayManagerService启动1.1 简要时序图 2、DEFAULT_DISPLAY主屏幕添加3、默认屏幕亮度 1、DisplayManagerService启动 1.1 简要时序图 2、DEFAULT_DISPLAY主屏幕添加 3、默认屏幕亮度

C#复习之继承的基本规则

知识点一&#xff1a;基本概念 知识点二&#xff1a;基本语法 知识点三&#xff1a;实例 知识点四&#xff1a;访问修饰符的影响 知识点五&#xff1a;子类和父类的同名成员 总结&#xff1a;

MIT线性代数

本文链接的原创作者为 浊酒南街https://blog.csdn.net/weixin_43597208 第1讲 MIT_线性代数笔记&#xff1a;第 01 讲 行图像和列图像-CSDN博客 第2讲 MIT_线性代数笔记&#xff1a;第 02 讲 矩阵消元_矩阵first pivot-CSDN博客 第3讲 MIT_线性代数笔记&#xff1a;第 03…

反弹shell介绍和应用

一、什么是反弹shell 1 .含义 反向连接弹shell(即反弹shell为攻击者为服务端,受害者主机为客户端主动连接攻击者的服务端) 2 .目的 对方主机在外网无法访问 对方主机防火墙限制,只能发送请求,不能接收请求 对方IP动态变化 攻击了一台主机需要在自己的机器上…

3D一览通助力成都派铂宇航航天管道设计交付

在航空航天这一高精尖行业中&#xff0c;每一处细节都承载着不可估量的责任与使命。特别是在航天航空管道设计制造的复杂供应链中&#xff0c;任何误差都可能引发连锁反应&#xff0c;影响整体性能乃至安全。当前&#xff0c;航空航天行业面临的一大挑战在于如何有效管理这一复…