linux 集群
一、集群概述
1. 集群是什么
定义:一组协同工作的服务器,对外表现为一个整体
集群的意义:更好的利用现有资源实现服务的高度可用
集群的扩展方式:
垂直扩展:更换服务器硬件
水平扩展:添加更多的服务器节点
常见的集群拓扑
2. 集群的分类
2.1 负载均衡集群 - LBC(Load balancing clusters)
使用目的:减轻单台服务器的压力,将用户请求分担给多台主机一起处理
实现方法:
软件:LVA RAC Nginx
硬件:F5 BIG-IP
负载均衡集群架构拓扑
调度器分类
触发条件不同
四层:传输层 IP + PORT
七层:应用层 URL
实现原理不同
四层:TCP 连接只建立一次,客户端和正式服务器
七层:TCP 连接建立两次,客户端和负载调度器,负载调度器和真实服务器
实现场景不同
四层:TCP 应用 如:基于 C/S 架构的ERP系统
七层:THHP 应用 如:根据用户访问域名的方式,判断用户语言
安全性不同
四层:转发 SYN 攻击
七层:可以拦截 SYN 攻击
使用范围:业务并发较大的应用程序
2.2 高可用集群 - HAC(High Available clusters)
使用目的:最大限度的保证用户的应用持久,不间断的提供服务
最大限度
99% 99 87.6小时 99.9% 999 8.8小时 99.99% 9999 53分钟 99.999% 99999 5分钟
实现原理:心跳检测
实现方法
软件
heartbeat linux-HA
RHCS
ROSE
keepalived
硬件
F5
特殊情况:脑分裂
可能出现的问题:数据不完整、数据不可访问
解决方法:预防:冗余、强制隔离:电源交换机
使用范围:需要持续提供服务的应用程序
2.3 高性能运算集群 - HPC(High Performance Computing)
使用目的:提供单台计算机所不具备的计算能力
LBC 与 HPC 原理对比:
负载均衡集群通过提高单位时间内执行的任务数来提高效率
高性能运算集群通过缩短单个任务的执行时间来提高效率
使用范围:天气计算、火箭弹道演算
二、负载均衡集群
1. LVS 相关原理
LVS 的组成
IPVS:运行在内核空间
IPVSADM:运行在用户空间,管理集群服务的命令行工具
LVS 的原理:根据用户请求的套接字判断,分流至真实服务器的工作模块
2. LVS 工作方式
工作模式
2.1 LVS - DR 模式
工作逻辑图
模式特点
集群节点,必须在一个网络中
真实服务器网关指向路由器
RIP 既可以是私网地址,又可以是公网地址
负载调度器只负责入站请求
大大减轻负载调度器压力,支持更多的服务器节点
原理:用户请求lvs 到达director,director 将请求的报文的目标MAC 地址改成后端的realserver MAC地址,目标IP为VIP(不变),源IP为用户IP 地址(保持不变),然后director 将报文发送到 realserver,realserver 检测到目标为自己本地VIP,如果在同一个网段,然后将请求直接返给用户。如果用户跟realserver 不在一个网段,则通过网关返回用户。
2.2 LVS - NAT 模式
工作逻辑图
模式特点
集群节点,必须在一个网络中
真实服务器必须将网关指向负载调度器
RIP 通常都是私有 IP,仅用于各个集群节点通信
负载调度器必须位于客户端和真实服务器之间,充当网关
支持端口映射
负载调度器操作系统必须是 Linux,真实服务器可以使用任意系统
原理:用户请求lvs到达director,director 将请求的报文的目标IP地址改成后端的 realserver IP 地址,同时将报文的目标端口也改成后端选定的 realserver 相应端口,最后将报文发送到realserver,realserver 将数据返给director,director 再把数据发送给用户。因为两次请求都经过 director,所以访问量大的话,director 会成为瓶颈。
2.3 LVS - TUN 模式
模式特点
集群节点不必位于同一个物理网络但必须都拥有公网IP(或都可以被路由)
真实服务器不能将网关指向负载调度器
RIP 必须是公网地址
负载调度器只负责入站请求
不支持端口映射功能
发送方和接收方必须支持隧道功能
原理:用户请求LVS 到达director,director 通过IP-TUN 加密技术将请求的报文的目标MAC 地址改成后端的realserver MAC地址,目标IP为VIP(不变),源IP为用户IP地址(保持不变),然后director 将报文发送到realserver,realserver基于IP-TUN解密,然后检测到目标为自己本地VIP,如果在同一个网段,然后将请求直接返给用户。如果用户跟realserver 不在一个网段,则通过网关返回用户。