集群:为解决某个特定问题将多个计算机组合起来形成一个单系统
提高性能的两个方向
垂直扩展:向上扩展,增加单个机器的性能。升级硬件。硬件升级是由瓶颈的
水平扩展:向外扩展,增加设备。并行的运行多个服务,通过网络和算法,来调度服务分配的的问题。
集群类型:
负载均衡集群:local blance(LB) 多个主机组成,每个主机只能一部分访问请求。靠负载均衡算法来实现
高可用集群: HA high availiablity 避免SPOF (single point offailuer) 单点故障。当系统出现一部分组件出现故障,可以保障整个系统继续运行。
主从---同步(某些特定服务需要)----负载均衡
HPC : high-performance computing 快速转发,快速响应
集群的可靠性指标:
MTBF :mean time between failure 系统在正常运行期间无故障的平均时间,一般用天或小时数来表示。MTBF值越高,系统的可靠性越高;出现故障的概率越小。
MTTR : 系统发生故障到恢复正常运行的时间,一般用小时或者天数表示。MTTR值越小,说明系统恢复故障的能力越强。
A :系统可靠性指标 A值越高越好
A=MTBF/(MTBF+MTTR)
99.9%
99.99%
99.9999%
9越多响应时间越少
停机时间:
计划内停机 :预定时间内的维护或者检修时间。自定义。
计划外停机 :运维人员关注的就是计划外。
设计集群时需要考虑的一些原则
|----------|-------------------------------------|
| 可扩展性 | 集群要有随时可以添加或者删除设备的能力。动态的扩缩容。 |
| 可靠性 | 集群中如果有节点发生故障,可以快速检测并且自动切换。 |
| 负载均衡 | 合理的分配负载,避免单个节点过载,影响整体的性能。 |
| 可维护性 | 能够方便的进行配置,部署,维护,监控,降低成本。 |
| 安全性 | 防止恶意的攻击,以及数据泄密,数据丢失。 |
| 易用性 | 相关的工作人员,可以方便的进入集群,能够快速的开发、部署等等。 |
LVS---linux virtual server
部署在linux系统通过内核层面实现负载均衡的软件。
开发者 : 章文嵩 发起的开源项目。
主要作用 :多个后端服务器组成一个高可用,高性能,负载均衡的高性能集群。通过负载均衡的算法将客户端请求发送到后端服务器。
阿里的SLB server load balance 基于Ivs+keepalived实现。
LVS当中的术语
|--------------------------|----------------------------------------------------|
| vs (virtual server) | lvs服务的逻辑名字,外部访问lvs集群时提供的一个虚拟ip地址和端口。 |
| DS (Director server) | Is集群当中的主服务器,也交调度器,是整个Ivs集群的核心,接受客户端的请求转发到后端RS。 |
| RS (real server) | Ivs的后端的真是服务器的ip,接受到了DS的请求之后,返回响应结果。 |
| CIP (client ip) | 客户端的ip地址。 |
| VIP (virtual ip) | 对外提供访问的统一虚拟IP地址。 |
| DIP (director ip) | 调度器在lvs内部使用的IP地址。用于和真实服务器进行通信。 |
| RIP (real ip) | 后端真实服务器的ip地址。 |
lvs访问的大致流程:
1、客户端访问都是访问vip
2、DS接受到请求,根据调度算法选择后端服务器(rs),请求发送给rs
3、RS处理请求并将响应发送到DS
4、DS把RS的响应包装成自己响应,发送到客户端
客户端不知道请求的真实服务器,也不知道响应的服务器是谁
LVS的负载均衡方式:
三种方式:NAT DR TUN
其中NAT和DR最常用的方式,TUN需要付费。
NAT模式
优点:配置简单
缺点:性能损失和单点故障
DR模式
直接路由模式:请求由调度器完成,但是响应客户端由真实服务器直接响应,不需要通过调度器。
优点:性能高,而且可以配置vip当中的高可用。不存在单点故障。
TUN模式
隧道协议,把请求转发后端服务器,需要在后端服务器配置隧道协议
缺点:需要付费。很少用,基本上都使用免费的。
ipvsadm
工作:设置lvs
ipvsadm工具:管理lvs内核模块的命令行工具,可用于配置和管理lvs集群
linux需要下载:yum -y install ipvsadm
选项
|---------|-------------------------|
| 选项 | 说明 |
| -A | 添加虚拟服务器 |
| -D | 删除整个虚拟服务器 |
| -s | 指定负载调度的算法 |
| -a | 添加真实服务器 |
| -d | 删除真实服务器 |
| -t | 指定vip地址的端口号 |
| -r | 指定rip的端口号 |
| -m | 表示使用nat模式 |
| -g | 表示使用DR模式 |
| -i | 表示使用TUN模式 |
| -w | 设置真实服务器的权重 |
| -p | 设置连接保持的时间60秒(默认不带) |
| -ln | 以数字和列表的形式查看lvs的配置信息 |
算法
静态调度(固定调度)
rr 轮询
wrr 加权轮询
dh 目的地址hash
根据ip地址查找静态hash表,获取需要真是的RS的地址
sh 源目地址hash
动态调度:
lc 最小连接数调度
wlc 加权最小连接数调度
权重高的,转发的就多,为了额避免性能瓶颈,在跟上最小连接数分配,可以把请求往连接数量较小的服务器继续转发。
lblc 基于地址的最小连接数调度。
将来自同一个目的地址的请求分配给RS,如果这台服务器尚未满负荷,就会把请求分配给连接数最小的rs,而且在下一次转发时会优先考虑这台RS。