后台集群服务的初始研究
集群(Cluster):就是一组计算机,它们作为一个整体向用户提供一组网络资源。相对于单个计算机节点(Node),集群中有>=1个计算机节点
集群的特点:可扩展性、高可用性、负载均衡、错误恢复
集群主要分为:
1、高可用性集群(HA: High Availability Cluster)
2、负载均衡集群/负载均衡系统(LB: Load Balance Cluster)
3、科学计算/高性能集群(HPC: High Performance Computing)
1、高可用性集群HA
定义:一般是指当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供。
作用:当一个机器宕机另一台进行接管(双机热备)
开源软件:keepalived,heartbeat
工作模式:
主从方式(非对称方式):主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。
双机双工方式(互备互援):两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键 数据存放在共享存储系统中。
集群工作方式(多服务器互备方式):多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。
2、负载均衡集群/负载均衡系统(LB)
定义:通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
作用:分担访问流量(负载均衡),保持业务的连续性(高可用性)
开源软件:lvs,haproxy,nginx,apache
商业集群硬件:F5,Netscaler,Radware,A10
负载均衡的分类
二层负载均衡(数据链路层) :负载均衡服务器对外依然提供一个VIP(虚IP),集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。
三层负载均衡(网络层):和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。
四层负载均衡(传输层):四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。
七层负载均衡(应用层):七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
PS:OSI的7层从上到下分别是 7、应用层;6、表示层;5、会话层;4、传输层;3、网络层;2、数据链路层;1、物理层;
DNS负载均衡 :在DNS服务器上配置多个域名对应IP的记录。例如一个域名www.baidu.com对应一组web服务器IP地址,域名解析时经过DNS服务器的算法将一个域名请求分配到合适的真实服务器上
HTTP负载均衡:根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问
IP负载均衡:在网络层通过修改请求目标地址进行负载均衡, LVS 实现了IP负载均衡,包含三个方法:NAT(传输层4),DR(直接路由, 数据链路层2),TUN(隧道)
链路层负载均衡:在通信协议的数据链路层修改mac地址,进行负载均衡
混合型负载均衡:多种均衡方式组合使用
参考:https://www.cnblogs.com/danbing/p/7459224.html
3、高性能计算集群(HPC)
定义:计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域,主要有高吞吐计算、分布式计算
作用:大规模的计算,数据挖掘、天气预报等
参考:http://www.jointforce.com.cn/page/hardware_linux.html
分布式与集群的联系与区别如下:
(一) 分布式是指将不同的业务分布在不同的地方。
(二) 而集群指的是将几台服务器集中在一起,实现同一业务。
(三)分布式的每一个节点,都可以做集群,而集群并不一定就是分布式的。而分布式,从狭义上理解,也与集群差不多,但是它的组织比较松散,不像集群,有一定组织性,一台服务器宕了,其他的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,一个节点宕了,这个业务就不可访问了。
集群:同一个业务,部署在多个服务器上 。
分布式:一个业务拆分为多个子业务,部署在多个服务器上 。
主流的负载均衡对比:
总结:
大型网站架构:对性能有严格要求的时候可以使用lvs或者硬件F5,单从负载均衡的角度来说,lvs也许会成为主流,更适合现在大型的互联网公司;
中型网站架构:对于页面分离请求由明确规定,并且性能有严格要求时,可以使用haproxy
中小型网站架构:比如日访问量小于1000万,需要进行高并发的网站或者对网络不太严格的时候,可以使用nginx