特殊云机制里面包含了:云技术架构里面的灵活的部分,用户可以把这些机制看成对云基础设施的扩展。
自动伸缩监听器(AUTOMATED SCALING LISTENER)
自动伸缩监听器机制是一个服务代理。它就是监听用户和云服务之间的通信或者IT资源的使用情况。如果发现超过阈值,那么就会通知云用户,进行资源调整。他们就部署在云里面,通常会靠近防火墙,因为在那里它们可以自动跟踪工作负载状态的信息。
根据不同的负载波动,自动伸缩监控器可以提供不同类型的响应:
例如:
(1) 根据云用户实现定义的参数,自动伸缩IT资源(通常称做自动扩展,auto-scaling)。
(2) 当负载超过当前阈值或低于已分配资源时,自动通知云用户。这样,云消费者就可以调整当前的 IT 资源分配。
例子
三个云服务消费者,尝试同时访问一项云服务。自动伸缩监听器,就会向外扩展,然后创建三个实例 。这时候,第四个云服务消费者尝试使用云服务 。因为,之前的编程为最多只允许三个云服务实例。所以,自动伸缩监听器会拒绝第四次尝试,然后通知云消费者:已超过请求的工作负载限制。云消费者的云资源管理员,会访问远程管理环境,调整配置设置,然后增加实例限制 。
负载均衡器(Load Balancer)
首先,负载均衡的意思就是:把负载(工作任务或者网络请求)进行平衡,分摊到多个操作单元(服务器或者组件)上进行运行。
目的:把网络流量 平均 发送到多个服务器上,以保证整个业务系统的高可用。
要进行负载均衡的原因就是:在互联网的早期,网络还不是很发达,流量相对较小,业务也比较简单,单台服务器就可以满足访问需要。
但如今在互联网发达的今天,流量请求动辄百亿、甚至上千亿,单台服务器已完全不能满足需求,这就有了集群。就是要用到多台机器来扩展服务能力,所以,需要负载均衡来让用户的请求不管连接到哪台服务器,都能得到相同的相应处理。
一共有3种分配方式:
非对称分配(asymmetric distribution):较大的工作负载,会被送到具有较强处理能力的IT资源上面负载优先级(workload prioritization):负载根据其优先级别,进行调度、排队、丢弃和分配上下文感知的分配(content-aware distribution):根据请求内容,分配到不同的IT资源
负载均衡的实现方式有5类:
1. 软件负载均衡技术
该技术适用于一些中小型网站系统,可以满足一般的均衡负载需求。
软件负载均衡:在服务器的操作系统上,安装负载均衡软件。所以,流量会经过软件负载均衡算法,路由到后端集群的某一台机器上。
常见负载均衡软件有:LVS(Linux Virtual Server)、Haproxy(代理服务器)。
优点:成本低廉(可以在任何物理设备上运行),配置简单,操作方便。
缺点:相比于硬件负载均衡,软件负载均衡的性能要略低一些。
2. 硬件负载均衡技术
由于硬件负载均衡技术需要额外增加负载均衡器,成本比较高,所以适用于流量高的大型网站系统。
硬件负载平衡器是一种硬件设备,有专门的操作系统。
硬件负载平衡器就在传入流量和内部服务器之间,本质上充当“流量警察”。当用户访问网站或者使用app某个功能时,它们首先被发送到负载均衡器,然后负载均衡器根据一定的策略,将流量转发到后端不同的服务器。
传统上,硬件负载平衡器会被部署在本地数据中心。而且,通常成对部署,以防其中一个失败。
优点:硬件设备更稳定。而且安全性高:往往都有防火墙。
缺点:成本昂贵:购买和维护硬件负载均衡的成本都很高(F5价格在15w~55w不等,A10价格在55w-100w不等)。
3. 本地负载均衡技术 (Local Load Balance)
本地负载均衡:对本地的服务器群做负载均衡。
不需要花费高额成本购置高性能服务器,只需利用现有设备资源就可以。
4.全局负载均衡技术(Global Load Balance)
全局负载均衡:对分别放置在不同的地理位置、有不同网络结构的服务器群间,作负载均衡。
其实就是,把分布在全国各地的,多个服务器,进行负载均衡处理。很多大型网站都使用这种技术。
全局负载均衡,目前实现方式有以下几种:
通过运营商线路调度:这个主要是指国内,比如:联通用户访问电信的机房服务器。通过地域线路调度:要知道,网站服务器越近,访问速度越快。比如,天津用户访问北京服务器会比广州服务器快很多。所以,通过通过地域线路调度的意思就是:把用户访问域名解析到离他们近的服务器IP上面,这样用户就会访问离自己最近的服务器,可以提升访问体验。
5. 链路集合负载均衡技术
就是根据OSI(开放式系统互联模型)来分类的。
根据负载均衡技术在OSI七层模型的不同层次,我们给负载均衡分类:
七层负载均衡:工作在应用层的负载均衡称四层负载均衡:工作在传输层的负载均衡称三层负载均衡:工作在网络层的负载均衡二层负载均衡:工作在数据链路层的负载均衡其中最常用的是四层和七层负载均衡。
这个技术的优点:节约成本。而且,不改变现有的线路结构、不增加现有带宽,就可以提高网络数据吞吐量。
故障转移系统(Failover System)
故障转移系统:通过集群技术提供冗余,然后实现IT资源的可靠性和可用性。
故障转移集群:就是由很多计算机组成,每台计算机相当于一个冗余节点。当其中一个节点出现故障也没关系,不会影响整个系统的正常运作。
“故障转移”:就是当一个服务器故障时,另一个服务器会接管故障服务器。
故障转移系统有两种基本配置:
主动-主动:IT资源的冗余,会主动同步的为工作负载服务。下图:就是一个例子,当其中一个云服务A故障的时候,故障转移系统就会让负载平衡器,把工作负载切换到冗余云服务 A 上面。
主动-被动:就是冗余机制:系统里面有活跃实例和待机实例。如果检测到活跃实例失效,那个待机实例就成为了活跃实例。⚠️:当失效的活跃实例可以重新工作后,他不会再变成待机实例,他就一直是活跃实例了。
故障转移工作原理:
第一台服务器(Database01):处理所有事务的活动服务器。
当 Database01发生故障时,处于空闲状态的第二台服务器(Database02)才会处理事务。
资源集群(Resource Cluster)
基于云的 IT 资源,可能会在不同的地方,这时候你就可以在逻辑上把他们组合成组。然后就可以方便的进行分配和使用。
分组的目的:增加集群 IT 资源的综合计算能力、负载平衡和可用性。
常见的资源集群的类型:
服务器集群
就是把虚拟服务器和物理服务器进行集群化。
数据库集群
目的:提高数据可用性。
它具有同步功能:可以让集群里面,使用的不同存储设备上存储的数据保持一致。
他的冗余能力:可以用来维护:主动-主动 / 主动-被动的故障转移系统。
大数据集集群(Large Dataset Cluster)
实现数据的分区和分布。
目的:在不影响数据完整性或计算准确性的情况下,对目标数据集进行有效分区。
资源集群有两种基本类型
HA集群(High-availability Cluster)
HA 集群(高可用性集群):其实就是实现了一种故障转移系统机制:可以监控故障情况,然后自动将工作负载从任何故障节点重定向。
Linux-HA的全称是High-Availability Linux,是一个开源项目。该项目的主要软件产品是 Heartbeat。
它的基本功能:例如,心跳监测,资源监控等等。
相关术语
其中涉及节点、资源、事件和动作4个相关术语。
1. 节点(Node)
首先,集群(cluster)就是一组计算机,其中,单个的计算机系统就是集群的节点(node)。
节点是HA的核心组成部分:每个节点上运行着操作系统和Heartbeat软件服务。
在Heartbeat集群中的节点有主次之分:分别称为主节点,和备用/备份节点。
在主节点上一般运行着一个或多个应用服务,而备用节点一般处于监控状态。
2. 资源(Resource)
资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其他节点接管。
在Heartbeat中,可以当作资源的实体有如下几种。
磁盘分区、文件系统IP地址应用程序服务NFS文件系统(Network File System)
3. 事件(Event)
事件就是集群中可能发生的事情。
例如:节点系统故障、网络连通故障、网卡故障、应用程序故障等。
HA的测试都是基于这些事件进行的。
4. 动作(Action)
事件发生时,HA的响应方式。
动作是由Shell脚本控制的。
拓扑图
下图:是一个Heartbeat集群的一般拓扑图。
在实际应用中,由于节点的数目、网络结构、磁盘类型配置不同,拓扑结构可能会有所不同。
heartbeat (Linux-HA)的工作原理
heartbeat最核心的包括两个部分:心跳监测部分和资源接管部分。
心跳监测:服务器之间会相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效。
这个时候,就需要启动资源接管模块,来接管运行在对方主机上的资源或者服务。
多设备代理 (Multi-Device Broker)
首先,单个云服务会由一系列云服务消费者访问。这些消费者有不同的硬件设备和/或通信要求。为了克服它们之间的不兼容性,需要创建映射逻辑,来转换在运行时交换的信息。就有了,多设备代理机制:用来帮助运行时的数据转换。
上图:就是多设备代理,图上有:不同类型的云服务消费者设备。
多设备代理通常是作为网关存在的,或者包含有网关的组件:
例如XML网关(传输和验证 XML 数据)、云存储网关(转换云存储协议)、移动设备网关等。
例子
多设备代理:会拦截传入消息,然后检测源设备(Web 浏览器、iOS、Android)多设备代理:把消息转换为云服务所需要的标准格式云服务商:处理请求,然后使用相同的标准格式进行响应多设备代理:把响应消息转换为源设备的格式,然后传递消息
状态管理数据库(State Management Database)
状态管理数据库:是一种存储设备:用于临时保存软件程序的状态数据。
云服务商:基本上都会使用状态管理数据库,尤其是那些涉及长期运行的数据库。