集群与负载均衡,分布式计算入门学习

1.集群的概念

计算机集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。

是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信,应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。

比如单个重负载的 运算分担到多台设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高,一般分为几种:

***高可用性集群:一般是指当集群中某个节点失效的 情况下,其上的任务会自动转移到其他正常的节点上,还指可以将集群中的某节点进行离线维护再上线,该过程不影响整个集群的运行;

***负载均衡集群:负载均衡集群运行时,一般通过一个或多个前端负载均衡器,将工作负载分发到一组服务器上,从而达到整个系统的高性能和高可用性;

***高性能计算集群:高性能计算集群采用将计算任务分配到集群的不同节点而提高计算能力,因而主要应用在科学计算领域;

2.负载均衡的概念:

它是利用一个集群中的多台单机,完成许多并行的小的工作。一般情况下,如果一个应用使用的人多了,那么用户请求的相应时间就会增大,机器的性能也会受到影响,如果使用负载均衡集群,那么集群中任意一台机器都能响应用户的请求,这样集群就会在用户发出服务请求之后,选择当时负载最小,能够提供最好的服务的这台机器来接受请求并响应,这样就可以用集群来增加系统的可用性和稳定性。

3.分布式的概念:

集群:同一个业务,部署在多个服务器上。分布式:一个业务分拆成多各子业务,或者本身就是不同的业务,部署在不同的服务器上

简单地说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行任务数来提升效率的。举例:比如新浪网,访问的人多了,他可以做一个集群,前面放一个负载均衡服务器,后面几台服务器完成同一业务,如果还有业务访问的时候,响应服务器看哪台服务器的均衡不是很重,就将那台去完成,并且一台服务器垮了,其他的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务可能就失败了。

4.负载均衡技术实现

负载均衡技术通过设置虚拟服务器IP(VIP),将后端多台真实服务器的应用资源虚拟成一台高性能的应用服务器,通过负载均衡算法,将用户的请求转发给后台内网服务器,内网服务器将请求的响应返回给负载均衡器,负载均衡再将响应发送给用户,这样向互联网用户隐藏了内部网络结构,阻止了用户直接访问后台(内网)服务器,使得服务器更加安全,可以阻止对核心网络栈和运行在其他端口服务的攻击。

系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内容容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力,比如:一台机器不能满足,则增加两台或多台机器,共同承担访问压力。

负载均衡最重要的一个应用就是利用多台服务器提供单一服务,这种方案有时也称为服务器农场,通常,负载均衡主要应用于Web网站,大型的Internet Relay Chat网络,高流量的文件下载网站,NNTP服务(网络新闻传输协议)和DNS服务,现在负载均衡也开始支持数据库服务,称之为数据库负载均衡器。

5.服务器负载均衡的三大基本元素:负载均衡算法,健康检查和会话保持

负载均衡设备的实现原理是把多台服务器的地址映射成一个对外的服务IP(我们称之为VIP,关于服务器的映射可以直接将服务器IP映射成VIP地址,也可以将服务器IP:Port,不同的映射方式会采取相应的健康检查,在端口映射时,服务器端口与VIP端口不相同),这个过程对用户是不可见的,用户实际上不知道服务器是做了负载均衡的,因此他们访问的还是一个目的IP。

6.详细的访问流程:

用户(IP:207.17.117.20)访问域名(www.a10networks.com),首先通过DNS查询解析出这个域名的公网地址:199.237.202.124,接下来用户207.17.117.20会访问199.237.202.124这个地址,因此数据包会达到负载均衡设备,接下来负载均衡设备会把数据分发到合适的服务器,看下图:

负载均衡设备在将数据包发给服务器时,数据包是做了一些变化的,如上图所示,数据包达到负载均衡设备之前,源地址是:207.17.117.20,目的地址是:100.237.202.124,当负载均衡设备将数据转发给选中的服务器时,源地址还是:207.17.117.20,目的地址变为172.16.20.1,我们称这种方式为目的地址NAT(DNAT,目的地址转换)。一般来说,在服务器负载均衡中DNAT是一定要做的(还有一种模式叫做服务器直接返回--DSR,是不做DNAT的),而源地址根据部署模式的不同,有时候也需要转换成别的地址,我们称之为:源地址NAT(SNAT),一般来说,旁路模式需要做SNAT,而串接模式不需要,本示意图为串接模式,所以源地址没有做NAT。

7.负载均衡算法:

一般来说,负载均衡服务器都会默认支持多种负载均衡分发策略,例如:

(1)轮询:将请求顺序循环地发到每个服务器,当其中某个服务器故障,AX就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其回复正常;

(2)比率:给每个服务器分配一个加权值为比例,根据这个比例,把用户的请求分配到每个服务器,当其中某个服务器发送故障,AX就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

(3)优先权:给所有服务器分组,给每个组定义优先权,将用户的请求分配到优先级最高的服务器组(在同一组内,采用预先设定的轮询或比率算法,分配用户的请求);当最高优先级中所有服务器或指定数量的服务器出现故障,AX将把请求送给次级优先级的服务器组,这种方式,实际为用户提供一种热备份的方式。

(4)最少连接数:AX会记录当前每台服务器或者服务端口上的连接数,新的连接将传递给连接数最少的服务器,当其中某个服务器发生故障,AX就把其从服务器队列中拿出,不参与下一次的用户请求的分配,直到其恢复正常。

(5)哈希算法:将客户端的源地址,端口进行哈希运算,根据运算的结果转发给一台服务器进行处理,当其中某个服务器发送故障,就把其从服务器队列中拿出,不参与下一次的 用户请求的分配,直到其恢复正常。

(6)基于数据包的内容分发:例如判断HTTP的URL,如果URL中带有.jpg的扩展名,就把数据包转发到指定的服务器。

8.健康检查:

健康检查用于检查服务器开放的各种服务的可用状态,负载均衡设备一般会配置各种健康检查方法,例如Ping,TCP,UDP,HTTP,FTP,DNS等。Ping属于第三层的健康检查,用于检查服务器IP的连通性,而TCP/UDP属于第四层的健康检查,用于检查服务端口的UO/DOWN,如果要检查的更准确,就要用到基于7层的健康检查,例如创建一个HTTP健康检查,Get一个页面回来,并且检查页面内容是否包含一个指定的字符串,如果包含,则服务时UP的,如果不包含或者取不回页面,就认为该服务器的Web服务是不可到别的服务器。比如,负载均衡设备检查到172.16.20.3这台服务器的80端口是DOWN的,负载均衡设备将不把后面的连接转发到这台服务器,而是根据算法将数据包转发到别的服务器。创建健康检查时可以设定检查的间隔时间和尝试次数,例如设定间隔时间为5秒,尝试次数为3次,那么负载均衡设备每隔5秒发起一次健康检查,如果检查失败,则尝试3次,如果3次都检查失败,则把该服务标记为DOWN,然后服务器仍然会每隔5秒对DOWN的服务器进行检查,当某个时刻发现服务器健康检查又成功了,则把该服务器重新标记为UP。健康检查的间隔和尝试次数要根据综合情况来设置,原则是既不会对业务产生影响,又不会对负载均衡设备造成较大负担。

9.会话保持

如何保证一个用户的两次http请求转发到同一个服务器,这就要求负载均衡设备配置会话保持。

绝大部分的负载均衡设备都支持两大类基本的会话保持方式:源./目的地址会话保持和cookie会话保持,另外像hash,URL Persist等也比较常用的方式,但是所有设备都支持,基于不同的应用要配置不同的会话保持,否则会引起负载的不均衡甚至访问异常。

原文地址:https://www.cnblogs.com/hqutcy/p/9548490.html

时间: 2024-10-12 21:10:39

集群与负载均衡,分布式计算入门学习的相关文章

Nginx实现集群的负载均衡配置过程详解

Nginx实现集群的负载均衡配置过程详解 Nginx 的负载均衡功能,其实实际上和 nginx 的代理是同一个功能,只是把代理一台机器改为多台机器而已. Nginx 的负载均衡和 lvs 相比,nginx属于更高级的应用层,不牵扯到 ip 和内核的修改,它只是单纯地把用户的请求转发到后面的机器上.这就意味着,后端的 RS 不需要配置公网. 一.实验环境 Nginx 调度器 (public 172.16.254.200 privite 192.168.0.48)RS1只有内网IP (192.168

signalR的集群与负载均衡

signalR是相当不错的websocket应用,最近要做集群和负载均衡 主要用到了redis进行集群,signalR的backplane集成redis. 细节,订阅redis之后注意database号 再使用nginx进行负载均衡. 细节,设置websocket(我是用websocket的传输)的配置参数,Upgrade 头的处理 http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstre

使用LVS+DR搭建集群实现负载均衡

使用LVS+DR搭建集群实现负载均衡 DR模式的概述与工作原理 DR模式服务概述:        Direct Routing(直接路由) --在同一个地域,同一个网段 Director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接.负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性.Direct Routing由与采用物理层(修改MAC地址)技术,因此所有服务器都必须在一

MetaQ 集群和负载均衡

https://github.com/killme2008/Metamorphosis/wiki/集群和负载均衡

通过Apache+mod_JK+Tomcat集群实现负载均衡

通过Apache+mod_JK+Tomcat集群实现负载均衡 1.概念 通过Apache+mod_JK+Tomcat集群搭建起来的环境主要用来实现负载均衡和高可用性.使用apache作为反向代理服务器实现负载均衡,使用mod_jk可以实现节点的故障恢复功能,达到高可用性.使用tomcat集群功能实现sessionID共享复制.用户访问数据在到达apache后,如果是静态内容,直接由apache处理,如果是动态请求,就通过mod_jk调用后端的一台tomcat服务器去处理请求,可以通过黏性Sess

使用LVS+NAT搭建集群实现负载均衡

使用LVS+NAT搭建集群实现负载均衡 LVS集群简介    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多        LVS集群分布图   集群有三种类型:           

用apache和tomcat搭建集群,实现负载均衡

型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问题需要解决. 一.Session的复制 二.如何将请求发送到正常的服务器 针对以上问题,可以使用群集和负载均衡来解决,整体架构如下:  中间由一台服务器做负载均衡(Load Balancer),它将所有请求,根据一定的负载均衡规则发送给指定的群集服务器(Cluster),群集服务器拥有着相同的状态和

Nginx实现tomcat集群进行负载均衡

一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问题. 二.基本概念 1.说明:关于Nginx的概念和介绍以及Centos7下安装步骤,请移步:Centos7安装Nginx实战 2.正向代理和反向代理 假设我们给定客户端A.代理服务器B.以及最终服务器C 正向代理:代理服务器B来代替客户端A来访问最终服务器C并将最终结果转发给客户端A,站在客户端A

在Linux上使用Nginx为Solr集群做负载均衡

在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxyserver,和Apache,效果均很差,两台服务器做了负载均衡之后并发响应速度还没单台不做负载均衡的速度快.最后使用nginx,效果很不错,下面将在Linux上安装步骤记述一下. 1        安装准备 nginx软件版本:nginx 1.2.5 安装包:rhel_nginx-1.2.5-1.