集群的分类:
LB, load Balancing 负载均衡集群
LVS 实现多台主机以特定方式组合起来 分摊大容量的并发请求压力
时时在线 7*24小时在线 服务不中断 关键性的业务要求达到5个9 (99.999%)
高可用集群要求至少要有两台主机同时在线 ,在某一个时刻只有一台主机在工作,一旦这条主机宕机了 另外的主机马上顶替上来提供同样的服务运行 要保 证时时在线可用性
HP, High Performance 高性能集群 也叫科学计算集群 解决需要用到大量复杂数据 如:天气监控 ,人口的统计 ,科学勘探 绘制DNA基因图谱
计算机扩展方式:
scal on: 向上扩展 用更好的计算机代替原有的性能叫差的计算机
也能实现高可用性,设计冗余结果,但成本过高
scal out:向外扩展 组合方式足够先进 全球前500强超级计算机其中有90%的计算机大多数是使用 接近于 废弃的PC机组合成的集群 照样能排名全球前500强超级计算机 只要 组合方式足够先进
1.负载均衡
主要目的是分摊负载
要想具有负载均衡的能力 需要一个前端的负载器 //负载均衡调度器
能够实现将来源于客户端的请求负载到其他节点上去
F5 : 硬件 实现负载均衡转发
LVS: (Linux虚拟服务器) 负责分配 // 章文嵩开发的一个基于Linux的开源软件
工作机制: 前端部署一个调度器 监控客户端发来的请求 当用户发来请求的时候 LVS 查找后台真正提供服务的服务器 而基于特定算法进行转发
基于至少10种算法进行转换 分别用于计算不用应用的轮转 请求调度 优化后基本达到硬件速度
前端调度器 接收请求 转发到后台服务器节点
缺点:单点故障 一个地方出错导致整个集群系统失效
优点:
1.也能可提供高可用性 不考虑单点故障 考虑后端提供的真正服务器 一但后台一台服务器出现了故障 请求的数据就会自动转向于另外的服务器 一个服务器宕机了 只 要把请求转发到另外的服务器就0K 了
2.负载均衡
3.便于扩展
2.高可用性集群
提供至少两台主机 时时在线的能力 保证时时在线
Source 资源 在个个节点之间流动(float)转移
保证服务器时时在线但特定时间内只有一个节点在运行
集群间数据共享解决方案:
NFS 共享存储 效率低 文件级
文件同步
rsync 检测双方节点上是否发生改变 检查文件是否同步
rsync Server 服务器监控 是否发生改变
DRBD 在内核中基于块实现
SAN 专业级别的共享存储:输出的是块级别的共享
3.高性能集群: 云计算 (分布式文件系统)
也需要前端的转发节点 前端主机可以实现把一个复杂的运算任务 解剖成N个小任务 然后每一个节点分别计算每一个小任务 每一个节点把小任务完成以后 在把 计算的结果返回给转发节点 转发节点在整合所有的结果
框架bowerfull Hadoop(java实现)
各种开源集群常见的解决方案:
LB:
lvs
haproxy
HA:
heartbeat
corosync+openais: RHCS 红帽集群套件 // 可靠性 可部署性优于heartbeat
ultramokey
keepalive
HP: boweerful
Linux解决问题的思路:
集合一个个小软件 组合起来实现强大的功能 个个组件套件存在
-----------------------------------------------------------------------------------------------------------------------------------
LVS : 开源软件
lvs 接受用户发来的请求 本身并不响应请求 把接受到的请求转发到后台真正的服务器
LVS只需要装在调度节点上
direcor 调度器 叫做四层交换机 默认情况下 判断用户请求端口是那种服务于是
把用户请求的信息转发到后台真正提供服务的节点上去 转发机制在四层实现 客户端上几乎是透明的
术语:LVS (linux virtual server) 常见缩写地址:
RIP: real IP address 真正提供服务的地址
DIP: Director's IP 调度器 转发请求
CIP: Client computer's IP 客户端地址
LVS工作模式:
特点: 高吞吐性 高并发 , 冗余 ,适应性(扩展服务器,缩减服务器)
1.NAT LVS-NAT
1).集群节点必须在同一个网络中 DIP 和 RIP 不能跨越网络
2).RIP 通常是私有地址 NAT 非路由地址
3).调度器要处理所有进出的请求 压力较大
4).所有RIP 必须以DIP为网关
5).NAT机制可以做端口映射 --> 端口转换[不但做地址转换还要做端口转换]
6).任何操作系统都能做RIP 只要能提供服务就OK ,对后台的操纵系统没有要求,很强的兼容性
7).单个Director 成为系统的瓶颈
2. LVS-DR 直接路由 出去的请求直接发送至客户端
进来的请求经过Director 出去的请求不经过Drector
LVS-DR 基本 properties 必须在同一个物理网络
RIP 可以使用公网地址仅处理请求 不处理响应 集群节点的网关不能指向DIP不支持端口转换
绝大多数操作系统都支持RealServer
基于二层转发实现 响应速度比NAT 速度快N倍以上 应用于小型网络
3. LVS-TUN 隧道
经过修改过的DR 模型可以跨越网段转发
不需要在同一个网段RIP 必须要使用公网地址
调度器只需要处理进来的请求
不能做端口映射
只能使用支持IP隧道的 REAL server
LVS 模型的配置:
1.定义集群服务
ipvsadm -A|-E -t|-u|-f VIP:port -s schedule_menthod
-A 添加集群服务
-E 修改
-t|-u|-f 定义服务 tcp udp firewal(基于防火墙标记服务)
-s (scheduler)调度算法 默认WLC
-D 删除
-C 清空规则
-s 保存
2.realserver
ipvsadm -a|-e -t|-u VIP:port -r REALSERVER [ -g|-i|-m ]
-a 向某个集群服务当中添加某个对应的realserver 地址
-e
-g|-i|-m [gateway| internet(tunnel)|地址伪装] // 指定LVS 的类型
3.查看
-L|-n
--stats 数据统计
e.g.
ipvsadm -A -t 172.16.100.1:80 -s rr
ipvsadm -a -t 172.16.100.1:80 -r 10.0.0.11 -m
ipvsadm -a -t 172.16.100.1:80 -r 10.0.0.12 -m
ipvsadm -L -n
LVS Scheduling Methods 调度 10种算法
静态调度算法:
RR : 轮调
DH 目标地址散列 目标地址的请求做固定地址转发
将同一个目标的请求转发到一个目标上
SH 源地址散列: 实现来自于同一个用户的请求 转发到同一个 路由器或者 防火墙上
实现平均内网负载 特定防火墙
静态算法不考虑当前状态的情况
优先级 : 活动连接*256+分活动连接
动态调度算法:
LC :least-connection 最少连接算法连接数最少的会接受下一个连接请求 谁最小 谁胜出 接受下一次请求
同时考虑连接和非连接
缺陷:不能区分服务器响应能力
WLC: 加权最少连接数 // 最好的算法SED: shortest expected delay 最短期望延迟 对WLC 的简单改进
NQ :不用排队 不用考虑非活动连接状态
LBLC: 基于本地算法 基于DH算法 动态算法 考虑后台连接数
LBLCR: 基于本地的最少连接数 对整个负载均衡上的真正负载均衡