摘要-导图
集群技术与负载均衡
负载均衡是集群技术的一种应用,谈负载均衡,首先我们需要了解集群是什么?
集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
也就是说,集群是由多个计算机组成的一个系统,其中这每一个计算机被称为节点,节点之间通过局域网或者其他方式连接起来,彼此配合完成一个或者多个任务。从宏观上来讲,这个系统相当于一个计算机 。
集群分为三大类:
1.高性能计算集群
被使用在 计算机任务重的环境中,因为如果进程进行一些复杂的科学计算任务,全部运行在一个服务器上效率会非常的低,但是如果运行在高效能计算集群中,从效率上会优化很多呢!
2.负载均衡集群
被使用在 一些像访问频繁的网站这样任务繁重的环境中,负载均衡集群的目的是重新把任务分配给拥有资源的服务器去处理任务. 这个听起来和高性能集群没有区别,但是实际上是不一样的. 高性能集群中所有节点的计算都是为了完成同一个任务,而负载均衡集群需要兼顾任务分配以找到最有效的任务处理方式和处理任务这两件事.
3.高可用集群
这类集群的目的就是为了确保关键资源或服务最大限度的可用性,集群通过在每个节点安装特定软件来完成这点,该软件会负责监控每个集群节点和集群服务是否可用,如果节点不可用或者服务停止,集群需要立即知道并且确保尽可能快的重启节点.
说到这里,大家一定对集群有了一些了解,接下来我们来说一下集群中的负载均衡(Load Balance).
一般提到的负载均衡,是指实现负载均衡集群.负载均衡实现了横向扩展,避免纵向的升级换代.
本文中的web负载均衡,特指能够分担web请求的负载均衡技术.
what is the Load Balance in web?
任何的负载均衡技术都要想办法建议某种一对多的映射机制:
一个请求的入口映射到多个处理请求的阶段,说白了就是多个服务器一起处理一个复杂的事情,来降低某一个服务器的压力.
这种映象机制使得多个物理存在对外体现为一个虚拟的整体,对服务的请求者屏蔽了内部的结构.
采用不同的机制建立映射关系,可以形成不同的负载均衡技术,常见的三种有
- DNS轮询
- CDN
- IP负载均衡
why should we use the Load Balance in web?
通常我们的项目开发都是在Tomcat上完成的,当然这样是有优点的,比如开发简单,部署简单,但是单个的Tomcat有时候就会有问题,它的容量是有峰值的,大家都知道,任何东西也都是有峰值的,我们的力气也是一样,所以,如果Tomcat出现了问题,那么这个那个项目就会出现故障,这是不可容忍的.
如图:单机Tomcat架构
↓
↓
优化:多应用服务器
多个Tomcat的ip轮询,解决单点故障问题,但是这样也有危害,就是应用服务器全部暴露在外网入口,不集中,不安全.
如图:多Tomcat DNS轮询架构
↓
↓
优化:采用负载均衡的算法(随机,轮询,加权,ip-hash,fair),解决了安全问题.
如图:负载均衡
how to realize the Load Balance in web?
-
DNS
最简单的负载均衡方式,通过配置多条DNS A记录使得请求可以分配到不同的服务器。
没有快速的健康检查机制,而且只支持WRR的调度策略导致负载很难“均衡”,通常用于要求不高的场景。并且DNS轮询方式直接将服务器的真实地址暴露给用户,不利于服务器安全。 -
CDN
通过发布机制将内容同步到大量的缓存节点,并在DNS服务器上进行扩展,找到里用户最近的缓存节点作为服务提供节点。 通常使用CDN运营商的服务。目前国内的服务商很少,而且按流量计费,价格也比较昂贵。 -
IP负载均衡
基于特定的TCP/IP技术实现,比如NAT、DR、Turning,可以使用硬件设备,也可以使用软件实现.