一、集群简介
1、为什么需要集群?
假如我们有一个web站点,服务器因为配置原因只允许100个用户同时在线访问。网站上线初期,通常只有几个用户在线,后期用户数量达到上千人。网站负荷加重,经常会“反应迟钝”影响用户体验,怎么解决?
web站点键入网址后3s内必须响应,经统计若3s后响应将流失40%用户,10s后流失70%用户
解决方案:
Scale up:向上扩展/垂直扩展
就是使用配置更高的服务器(加CPU,内存,SSD硬盘)
性能增长不是线性的,性价比不高,容易产生瓶颈,
Scalle out:向外扩展/横向扩展
2、系统指标
可扩展性:或称为伸缩性,扩展是否便捷
表明了需要增加资源以完成更多工作任务时能够获得划算地同等提升
可用性:可用性指标(99%,99.9%,99.99%,99.999%一年不可用时间不超过5分钟)
高可用性:系统在一定时间单位内,保证服务在绝大多时间内可用
性能:
响应时间:发出请求到获得结果中间的时长,同一系统在不同并发下表现不同
容量:在一定时间内能完成的工作量,容量必须是可有效利用,在保证可接受性能的情况下能够达到的吞吐量
最大吞吐量:基准性能测试时得出的数据指标,系统容量的极限
系统运维的工作:保证系统可用 --> 标准化 --> 自动化
SPOF:Single Point Of Failure 单点故障
构建高可扩展的系统,应该遵循一个基本原则:在系统内部尽量避免串行化和交互
消息队列:将同步改成异步
GSLB:Global Service Load Balancing 全局服务负载均衡;如:CDN
3、集群
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。
集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
4、集群的类型
1)负载均衡集群(LB:Load Balancing Cluster)
扩展容量,实现伸缩性设计
负载均衡集群是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。
负载均衡集群能够平均分配客户请求到服务器列阵,籍此提供快速获取重要数据,解决大量并发访问服务问题(容量问题)。这种群集技术可以用最少的投资获得接近于大型主机的性能。
负载均衡器:
也称:director/dispatcher/load balancer
调度器/分发器/负载均衡器
是一种把网络请求分散到一个服务器集群中的可用服务器上去,管理进入的Web数据流量和增加有效的网络带宽。
硬件:F5,BIG-IP
软件:LVS,Nginx及HAProxy
2)高可用性集群(HA:High Availability Cluster)
提升服务可用性,
A(可用性)=平均无故障时间/(平均无故障时间+平均修复时间)
95%,99%,99.9%,99.99%,99.999%
高可用性集群的出现是为了使集群的整体服务尽可能可用,以便考虑计算硬件和软件的易错性。如果高可用性集群中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,并且因此使系统环境对于用户是一致的。
3)高性能集群(HP :High Performance Cluster)
提升计算能力
向量机:服务器内部扩量,加CPU,内存
并行处理集群:
通常,是一种涉及为集群开发并行编程应用程序,以解决复杂的科学问题。这是并行计算的基础,尽管它不使用专门的并行超级计算机,这种超级计算机内部由十至上万个独立处理器组成。但它却使用商业系统,如通过高速连接来链接的一组单处理器或双处理器 PC,并且在公共消息传递层上进行通信以运行并行应用程序。因此,您会常常听说又有一种便宜的Linux超级计算机问世了。但它实际是一个计算机集群,其处理能力与真的超级计算机相等,通常一套象样的集群配置开销要超过 $100,000。这对一般人来说似乎是太贵了,但与价值上百万美元的专用超级计算机相比还算是便宜的。
在集群的这三种基本类型之间经常会发生混合与交杂;于是,可以发现高可用性集群也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的集群中找到一个并行集群,它可以在节点之间执行负载均衡。尽管集群系统本身独立于它在使用的软件或硬件,但要有效运行系统时,硬件连接将起关键作用。
下面开始学习LB,HA集群方式,也是企业中最常用的。
5、构建负载均衡高可用系统
构建高可扩展的系统,应该遵循的一个基本原则:在系统内部尽量避免串行化和交互
思路:
分层:接入层-->应用层-->服务层-->数据层
分割:切割大业务为多个小业务,化整为零
分布式:
分布式应用
分布式静态资源
分布式数据和存储
分布式计算
二、LB集群调度器实现
1、按工作的协议层来划分
传输层:根据请求报文中的目标地址和端口进行调度
应用层:根据请求的内容进行调度,而且此种调度为“代理”方式
软件:
tcp:
LVS:Linux Virtual Server
性能好,但控制能力差(哪些转,哪些不转)
HAProxy:功能强大
应用层:
http:HAProxy,nginx,apache(Proxy module,balancer module),ats(apache traffic server),squid,varnish
mysql:mysql-proxy
硬件:
F5:Big-IP
Citrix(思杰):NetScaler
A10:A10
Array:Array