集群:为解决某一个特定的问题,将多个计算机组合起来形成一个单系统
集群的目的就是为了解决系统的性能瓶颈
垂直扩展:向上扩展,增强单个机器的性能,也就是升级硬件。但是硬件升级硬件是有瓶颈的。
水平扩展:向外扩展,并行的运行多个服务,主要是通过网络和算法来调度服务分配的问题。
集群的类型
负载均衡集群:LB(loab blance)多个主机组成,每个主机只承担一部分访问请求,靠负载均衡算法来实现
高可用集群:HA(high avaliiablity)避免SPOF(single point of failuer)单点故障。系统当中一部分组件出现故障,可以保障整个系统继续运行。
目前企业中都是负载均衡和高可用同时使用
高性能集群:HPC(high-performance computing)快速转发,快速响应。
集群的可靠性指标:
MTBF:系统在正常运行期间,无故障的平均时间,一般用小时或者天数来表示。MTBF值越高,系统的可靠性越高,出现故障的概率越小。
MTTR:系统从发生故障到恢复正常运行的平均时间,一般用小时或者天数表示。MTTR值越小,系统恢复故障的能力越强。
A:系统的可靠性指标。A值越高越好。
A=[MTBF/(MTBF+MTTR)]%
停机时间:
计划内停机:预定时间内的维护或者检修时间。时间根据服务配置自定义的。
计划外停机:这是我们常关注的停机。需要7*24小时。
设计集群的原则:
1.可扩展性:集群要有随时可以添加或者删除设备的能力。动态的扩缩容。
2.可靠性:集群中如果有节点发生故障,可以快速检测并快速切换。
3.负载均衡:合理的分配负载,避免单个节点过载,影响整体性能
4.可维护性:能够方便的进行配置,部署,维护,监控,降低成本。
5.安全性:防止恶意的攻击,以及数据泄露,数据丢失。
6.易用性:相关的工作人员可以方便的进入集群,能够快速的开发,部署,测试等等。
lvs(linux virtual server)集群:
只能部署在linux系统,通过内核层面实现负载均衡的软件。由章文嵩发起的开源免费的项目。
主要作用:多个后端服务器组成一个高可用,高性能,负载均衡的高性能集群。通过负载均衡的算法将客户端请求发送到后端服务器。
lvs集群中的术语:
vs(virtual server):lvs服务的逻辑名字,外部访问lvs集群时提供的一个虚拟的IP地址和端口
DS(director servsr)lvs集群当中的主服务器,也叫调度器,是整个lvs集群的核心,把接收客户端的请求转发到后端RS。
RS(real server)lvs的后端真实服务器的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并发送
3.rs处理请求并将响应发送到ds
4.ds把rs的响应包装成自己的响应,发送到客户端
(客户端并不知到请求的真实服务器与响应的服务器)
lvs的负载均衡方式:
NAT DR TUN
其中NAT和DR是最常用的方式。
NAT模式:
NAT模式是最常用的lvs负载方式之一。
地址转换
1.在调度器上配置双网卡,一个对内,一个对外
2.配置一个可以和公网进行通信的vip
3.配置转发策略,如果访问vip,就会把请求的数据转发到后台的rs
4.rs处理完请求之后响应客户端,先到调度器,调度器进行地址转换,把内网地址转换成公网地址,响应给用户
数据请求进入调度器的请求报文中ip地址的修改
调度器的内网IP地址和真实服务器的IP地址要在同一网段。
net对于客户端来说请求地址始终不变,客户端不需要修改任何配置,转发由调度器通过算法完成,后端服务器只管接收响应,也不需要修改任何配置。不过会有性能损失和单点故障。
DR模式:
直接路由模式。请求由调度器完成,但是响应客户端由rs真实服务器直接响应,不需要通过调度器。好处是性能强而且可以配置代理地址的高可用,所以并不存在单点故障
tun模式:
隧道模式,使用隧道协议把请求转发到后端服务器,需要在后端服务器配置隧道协议
设置lvs:
ipvsadm工具:管理ipvs内核模块的命令行工具,可用于配置和管理lvs集群。
-A:添加虚拟服务器
-D:删除整个虚拟服务器
-S:指定负载调度的算法:
静态调度:
rr:轮询
wrr:加权轮询
dh:目的地址hash
sh:源地址hash
动态调度:
lc:最小连接数调度
wlc:加权最小连接数调度(权重高的,转发的就多)
lblc:基于地址的对小连接数调度(将来自同一个地址的请求分配给rs,如果服务器尚未满负荷,就会把请求分配给连接数最小的rs,而且在下一次转发时会优先考虑这个rs)
-a:添加真实服务器
-d:删除真实服务器
-t:指定VIP地址的端口号
-r:指定rip的端口号
-m:表示使用的是net模式
-g:表示使用dr模式
-i:表示使用隧道模式
-w:设置真实服务器的权重
-p 60:设置连接保持的时间是60s(默认不带)
-ln:以数字和列表的形式查看lvs的配置信息
net模式的部署方式:
负载调度器:
配置双网卡:
两台后端web真实服务器:
一台nfs共享服务器