大点干!早点散----------深入剖析LVS负载均衡群集原理

2020-09-03 10:27:13 浏览数 (1)

一、负载均衡群集原理

LVS在基本的生产环境中,都会同时运行在二台硬件相近的服务器上:LVS Router(主 LVS ),一个作为备份LVS(备份 LVS )。 主 LVS 服务器在网站的前端起二个作用:

(1. 均衡负载压力到真实服务器(如apache)上.

(2. 检查后面真实服务器提供的服务是否正常.

备份LVS 用来监控主LVS和备份主服务器,在当故障出现时主LVS 死机 fail 掉了以后,就会启动自己来接管主 LVS 的工作。

基中有一个叫 Pulse (心跳服务) 运行在主LVS和备份LVS上。在备份 LVS 上,每秒 pulse 发送一个心跳(heartbeat)到主LVS的外网接口检查主LVS的服务是否正常。当然在主LVS上,也有pulse服务,它主要是响应备份LVS的心跳。

LVS进程调用 ipvsadm工具(RedHat开发)去配置和维护 IPVS 路由表,它会为每一个在真实服务器上的虚拟服务启动一个nanny进程。每一个nanny进程去检查真实服务器上的服务状态,如果有异常.就会将故障情况通知LVS进程。当故障时,LVS进程通知 ipvsadm 在 IPVS 路由表中将此节点删除。当然,它发现故障的机器恢复时也能自动的加入到服务中来.

如果备份LVS未收到来自于主LVS的响应,它将调用send_arp将虚拟IP地址再分配到备份LVS的公网接口上。并在公网接口和局域网接口上分别发送一个命令去关掉主LVS上的LVS进程。同时启动自己的LVS进程来调度客户端请求。

1、企业群集应用概述

群集的含义

  • Cluster,群集,集群
  • 由多台主机构成,但对外只表现为一个整体
  • 在互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高

单台服务器力不从心

解决方法

  • 使用价格昂贵的小型机、大型机
  • 使用普通服务器构建服务群集
  • 阿里云中的SLB是典型的负载均衡调度器,ECS是云主机(虚拟机)
  • SLB调度ECS,多个ECS组成资源池,构成云计算的基础

2、企业群集分类

根据群集所针对的目标差异,可分为三种类型

  • 负载均衡群集 代理服务器服务器的参与 分配资源来处理
  • 高可用群集 虚拟ip的参与 两台代理服务器 只要有一台代理节点存活的话 虚拟ip就存在
  • 高性能运算群集 云平台

代理服务器的作用 1、健康状态的检查 2、调度

(1)负载均衡群集(Load Balance Cluster)

SLB负载均衡:阿里巴巴 以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能 调度算法是负载均衡的核心 LB的负载分配依赖于主节点的分流算法,分流算法即调度

(2)高可用群集(High Availability Cluster)

以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果 (HA) 高可用 MHA 是master high Availability

  • HA的工作方式包括双工和主从两种模式
  • 双工,两个平级状态的协同工作,随时顶替对方
  • 带有主从模式的,一台主,多台从,称为中心化群集
  • 去中心化机制:没有真正的主,如果有,也是象征意义的,所有节点都干活(Redis的群集就是典型去中心化机制)

(3)高性能运算群集(High Performance Computer Cluster)

以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力 高性能运算群集的髙性能依赖于“分布式运算″、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力 分布式运算: 将一个运算分为多个 用多台主机在不同的地方来计算 并行计算 : 所有的运算一起执行

3、负载均衡群集工作模式分析

负载均衡群集是目前企业用得最多的群集类型 群集的负载调度技术有三种工作模式

  • 地址转换
  • IP隧道
  • 直接路由(DR)

负载均衡的结构 第一层, 负载调度器(Load Balancer或Director) 前台 第二层, 服务器池(Server Pool) 后端服务 第三层, 共享存储(Share Storage) 仓库

(1)NAT模式

地址转换(Network Address Translation) 简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

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

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

(2)TUN模式

IP隧道(IP Tunnel) 简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的 Internet连接直接回应客户机,而不再经过负载调度器 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

原理图过程简述:   1)客户请求数据包,目标地址VIP发送到LB上。   2)LB接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后发送出去。   3)RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,然后解开IP Tunnel包头信息, 得到客户的请求包并进行响应处理。   4)响应处理完毕之后,RS服务器使用自己的出公网的线路,将这个响应数据包发送给客户端。源IP地址还是VIP地址(RS节点服务器需要在本 地回环接口配置VIP)

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

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

(3)DR模式

直接路由(Direct Routing) 简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

client在请求的时候 以为lvs服务器就是能帮他解决的server 直接将数据包给他 目标ip为vip 目标mac为lvs的mac lvs经过分析 直接将数据包给apache服务,然后mac地址变了 IP地址不变 mac地址变成lvs的mac

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

缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

(3)三种工作模式的区别

LVS DR直连路由 与nat模式的区别在与 需要配置vip client请求web页面是先请求lvs服务器 ,然后lvs服务器将处理的任务交给apache 然后Apache 将处理完的内容直接交给客户端

lvs dr 和tun区别在于 一个在局域网一个在广域网 两个面临的问题 也不同

二、群集架构与虚拟服务器

1、负载均衡群集的架构

负载均衡的架构 第一层,负载调度器(Load Balancer或Director) 第二层,服务器池(Server Pool) 第三层,共享存储(Share Storage)

2、LVS虚拟服务器概述

Linux Virtual Server 针对 Linux内核的负载均衡解决方案 1998年5月,由我国的章文嵩博士创建 他的座右铭:他这么看待梦想:男人身上的品质就是有梦想。如果选择-种方式死去,我希望是在工作中死去。

他是将负载均衡LVM写入到内核中 查看负载均衡的命名

代码语言:javascript复制
[root@localhost~]# modprobe ip_vs   '//确认内核对LVS的支持'
[root@localhost~]# cat /proc/net/ip_vs

3、LVS的负载调度算法

  • 轮询(Round Robin) 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而缺点是不管服务器实际的连接数和系统负载 ,
  • 加权轮询(Weighted Round Robin) 根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重 保证处理能力强的服务器承担更多的访问流量 权重是人为指定的 权重高的优先 能力强的会多分点给她
  • 最少连接(Least Connections) 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
  • 加权最少连接(Weighted Least Connections) 在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重 权重较高的节点将承担更大比例的活动连接负载

3、LVS群集创建与管理工具

使用ipvsadm工具 创建虚拟服务器 添加,删除服务器节点 查看群集及节点情况 报错负载分配策略

0 人点赞