Created
Jun 6, 2024 03:36 AM
Tags
负载均衡集群
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
缺点:
- DNS 的解析缓存造成任务分配不均,导致单个服务器压力过大
- 无法实现健康状态检查
- 缓存 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