🌿集群(二)- LBC
00 分钟
2024-5-22
2024-6-20
type
status
date
slug
summary
tags
category
icon
password
文章状态

负载均衡集群

LBC(load balancer Cluster)

(一)基本概念

定义

由两个或两个以上的服务实体协调、配合完成一系列工作的模式,对外表现为一个整体。

目的

提高业务性能,降低单台服务器压力

特性

负载均衡扩展了网络设备和服务器带宽,增加吞吐量,加强网络数据处理能力。
  • 不同节点之间相互独立,不共享任何硬件资源;
  • 通过一定算法将客户端的访问请求分配到集群的各个节点上,充分利用每个节点的资源。

算法

静态算法
只考虑算法本身,不考虑服务器状态
  • RR(轮循)
    • Round-Robin,从1开始到 n 结束
  • WRR(加权轮循)
    • wight-Round-Robin,按权重比例进行调度,权重越大,负责的请求越多
  • SH(源地址 hash)
    • 实现会话绑定,保留之前建立的会话信息。将来自于同一个ip地址的请求发送给一个真实服务器。
  • DH(目标地址 hash)
    • 将同一个目标地址的请求,发送给同一个服务器节点。提高缓存命中率
动态算法
原理:通过hash表记录连接状态---- active / inactive
既要考虑算法本身,也要考虑服务器状态
  • LC(最少连接)
    • 将新的连接请求分配给当前连接数最少的服务器。
      公式:
  • WLC(加权最少连接)
    • 最少连接的特殊模式。
      公式:
  • SED(最短期望延迟)
    • 加权最少连接的特殊模式。
      公式:
  • NQ (永不排队)
    • never queue,SED 的特殊模式,当某台真实服务器连接为0时,直接分配,不计算。
  • LBLC(基于局部性的最少连接)
    • DH 的特殊模式,既要提高缓存命中率,又要考虑连接数量。
      先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器
  • LBLCR(带复制的基于局部性的最少连接)
    • 公式:

(二)实现方式

硬件实现

e.g. F5(BigIP系列) A10(Thunder系列) radware
单独的硬件设备(独立专门的操作系统)

软件实现

e.g. DNS、LVS、Nginx、RAC、Haproxy 等
  • LVS
    • Linux Virtual Server,名为 Linux 虚拟服务器,中国最早纳入 Linux 内核的应用层程序
  • RAC
    • real application clusters,名为实时应用集群,是 Oracle 的负载调用软件
⚠️
DNS 实现负载均衡:将同一个域名解析为多个不同 IP
缺点:
  1. DNS 的解析缓存造成任务分配不均,导致单个服务器压力过大
  1. 无法实现健康状态检查
  1. 缓存 DNS 无法实现分配用户请求

应用层级

硬件:
二层、四层、七层
软件:
四层负载调度器 —— LVS | RAC
七层负载调度器 —— Mysql proxy | Nginx | Haproxy
 
区 别
 
触发条件不同
  • 四层负载调度器:工作在传输层
    • 转发数据依靠三层的 IP 和四层的 PORT
  • 七层负载调度器:工作在应用层
    • 数据依靠 URL 或主机名 {FQDN} 来区分,进行多次连接
实现原理不同
  • 四层负载调度器:TCP连接建立一次
    • 客户端和RS主机之间
  • 七层负载调度器:TCP连接建立两次
    • 客户端 —— 负载调度器
      负载调度器 —— RS 主机
应用场景不同
  • 四层负载调度器:TCP 应用为主
    • 应用:OA、ERP
  • 七层负载调度器:HTTP 协议为主
    • 根据用户访问页面进行判断调度
       
安全性不同
  • 四层负载调度器
    • 转发SYN攻击
  • 七层负载调度器
    • 拦截SYN攻击
 

负载均衡的分层结构

高可用的负载均衡集群
高可用的负载均衡集群
上图是一个典型的负载均衡集群,共三层,每层的作用如下:
上图是一个典型的负载均衡集群,共三层,每层的作用如下:
  • 第一层:负载调度器,这是访问整个群集系统的唯一入口,对外使用所有服务器共有的 VIP(虚拟IP)地址,也称为集群 IP 。通常会配置主、备两台调度器实现热备份。确保高可用性。
  • 第二层:服务器池,集群所提供的应用服务(如 HTTP 、FTP)由服务器池承担,其中每个节点具有独立的 RIP(真实 IP)地址,只处理调度器分发过来的客户机请求,当某个节点暂时失效,负载调度器的容错机制会将其隔离,等待错误排除后在将其重新纳入服务器池。
  • 第三层:共享存储,为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。在 Linux/UNIX 环境中,共享存储可以使用 NAS 设备,或者提供 NFS(网络文件系统)共享服务的专用服务器。
 
上一篇
集群(一)- 基础
下一篇
集群(三)- LBC - LVS