导航:首页 > 配服务器 > 阿里云服务器集群采用多台服务器

阿里云服务器集群采用多台服务器

发布时间:2024-12-03 20:07:18

1. 阿里巴巴是用的什么服务器阿里巴巴是用的什么服务器的

转载:阿里巴巴为什么选择ApacheFlink?

本文主要整理自阿里巴巴计算平台事业部高级技术专家莫问在云起大会上的演讲。

一棵大树从一棵小树苗长成;小小橡实可能长成参天大树

随着人工智能时代的到来和数据量的爆炸,在典型的大数据业务场景中,最常见的数据业务方式是使用批处理技术处理全量数据和流计算处理实时增量数据。在大多数业务场景中,用户的业务逻辑在批处理和流处理中往往是相同的。但是,用户用于批处理和流处理的两套计算引擎是不同的。

因此,用户通常需要编写两套代码。无疑,这带来了一些额外的负担和成本。阿里巴巴的商品数据处理往往需要面对增量和全量两种不同的业务流程,所以阿里在想,我们能不能有一个统一的大数据引擎技术,用户只需要根据自己的业务逻辑开发一套代码就可以了。在这样不同的场景下,无论是全数据还是增量数据,还是实时处理,都可以有一套完整的解决方案支持,这也是阿里选择Flink的背景和初衷。

目前开源的大数据计算引擎有很多选择,如Storm、Samza、Flink、KafkaStream等。、以及Spark、Hive、Pig、Flink等批量处理。但是同时支持流处理和批处理的计算引擎只有两个选择:一个是ApacheSpark,一个是ApacheFlink。

技术、生态等多方面综合考虑。首先,Spark的技术思路是模拟基于批量的流量计算。另一方面,Flink使用基于流的计算来模拟批处理计算。

从技术发展的角度来看,用批处理来模拟流程存在一定的技术局限性,这种局限性可能很难突破。Flink基于流模拟批处理,在技术上具有更好的可扩展性。从长远来看,阿里决定将Flink作为统一通用的大数据引擎作为未来的选择。

Flink是一个统一的大数据计算引擎,具有低延迟、高吞吐量。在阿里巴巴的生产环境中,Flink的计算平台每秒可以处理数亿条消息或事件,延迟为毫秒级。同时,Flink提供了一次性的一致性语义。保证了数据的正确性。这样,Flink大数据引擎就可以提供金融数据处理能力。

弗林克在阿里的现状

基于ApacheFlink在阿里巴巴搭建的平台于2016年正式上线,从阿里巴巴的搜索和推荐两个场景实现。目前,包括阿里巴巴所有子公司在内的所有阿里巴巴业务都采用了基于Flink的实时计算平台。同时,Flink计算平台运行在开源的Hadoop集群上。Hadoop的YARN作为资源管理调度,HDFS作为数据存储。所以Flink可以和开源大数据软件Hadoop无缝对接。

目前,这个基于Flink的实时计算平台不仅服务于阿里巴巴集团,还通过阿里云的云产品API向整个开发者生态系统提供基于Flink的云产品支持。

Flink在阿里巴巴的大规模应用表现如何?

规模:一个系统是否成熟,规模是一个重要的指标。Flink最初推出阿里巴巴只有几百台服务器,现在已经达到上万台服务器,在全球屈指可数;

状态数据:基于Flink,内部积累的状态数据已经是PB规模;

事件:如今,每天在Flink的计算平台上处理的数据超过万亿条;

PS:高峰期每秒可承担超过4.72亿次访问,最典型的应用场景是阿里巴巴双11的大屏;

弗林克的发展之路

接下来,从开源技术的角度,我们来谈谈ApacheFlink是如何诞生,如何成长的。而阿里又是如何在这个成长的关键时刻进来的?你对它做过哪些贡献和支持?

Flink诞生于欧洲大数据研究项目平流层。这个项目是柏林工业大学的一个研究项目。早期,Flink做的是批量计算,但2014年,同温层的核心成员孵化了Flink,同年将Flink捐赠给Apache,后来成为Apache最顶尖的大数据项目。同时,Flink计算的主流方向被定位为流式,即使用流式计算来计算所有的大数据。这就是Flink技术诞生的背景。

2014年,Flink作为专注于流计算的大数据引擎,开始在开源大数据行业崭露头角。不同于Storm、SparkStreaming等流计算引擎,它不仅是一个高吞吐量、低延迟的计算引擎,还提供了许多高级功能。比如提供有状态计算,支持状态管理,支持数据语义的强一致性,支持事件时间,水印处理消息无序。

Flink核心概念和基本概念

Flink区别于其他流计算引擎的地方其实是状态管理。

是什么状态?比如开发一套流量计算系统或者任务做数据处理,可能经常需要对数据做统计,比如Sum,Count,Min,Max,这些值都需要存储。因为它们是不断更新的,所以这些值或变量可以理解为一种状态。如果数据源正在读取Kafka,RocketMQ,可能需要记录读取的位置并记录偏移量。这些偏移变量是要计算的状态。

Flink提供了内置的状态管理,可以将这些状态存储在Flink内部,而不需要存储在外部系统中。这样做有以下优点:第一,减少了计算引擎对外部系统的依赖和部署,运维更简单;其次,在性能上有了很大的提升:如果是通过外部访问,比如Redis,HBase必须通过网络和RPC访问。如果Flink在内部访问这些变量,它只通过自己的进程访问这些变量。同时,Flink会定期让这些状态的检查点持久化,并将检查点存储在分布式持久化系统中,比如HDFS。这样,当Flink的任务出错时,它会从最新的检查点恢复整个流的状态,然后继续运行它的流处理。对用户没有数据影响。

Flink如何保证在检查点恢复的过程中没有数据丢失或冗余?要保证计算准确?

原因是Flink使用了一套经典的Chandy-Lamport算法,其核心思想是将这种流计算视为一种流拓扑,在这种拓扑的头部有规律地插入来自源点的特殊屏障,并将屏障从上游广播到下游。当每个节点接收到所有栅栏时,它将拍摄状态快照。每个节点完成快照后,整个拓扑将被视为一个完整的检查点。接下来,无论发生什么故障,都会从最近的检查点恢复。

Flink使用这种经典算法来确保语义的强一致性。这也是Flink与其他无状态流计算引擎的核心区别。

以下是Flink解决无序问题的方法。比如星球大战的序列,如果按照上映时间来看,可能会发现故事在跳跃。

在流量计算上,和这个例子很像。所有消息的到达时间与源在线系统日志中实际发生的时间不一致。在流处理的过程中,希望消息按照它们在源端实际发生的顺序进行处理,而不是按照它们实际到达程序的时间。Flink提供了一些先进的事件时间和水印技术来解决乱序问题。以便用户可以有序地处理该消息。这是Flink的一个很重要的特点。

接下来介绍一下Flink起步时的核心概念和理念,这是Flink发展的第一阶段;第二阶段是2015年和2017年。这个阶段也是Flink发展和阿里巴巴介入的时候。故事源于2015年年中我们在搜索事业部做的一项调查。当时阿里有自己的批处理技术和流计算技术,既有自研的,也有开源的。但是,为了思考下一代大数据引擎的方向和未来趋势,我们对新技术做了大量的研究。

结合大量的研究成果,我们最终得出结论,解决一般大数据计算需求,整合批量流的计算引擎是大数据技术的发展方向,最终我们选择了Flink。

但2015年的Flink还不够成熟,规模和稳定性都没有付诸实践。最后我们决定在阿里成立Flink分公司,对Flink进行大量的修改和改进,以适应阿里巴巴的超大型业务场景。在这个过程中,我们团队不仅改进和优化了Flink的性能和稳定性,还在核心架构和功能上做了大量的创新和改进,并贡献给了社区,比如:Flink全新的分布式架构、增量式检查点机制、基于信用的网络流量控制机制和流式SQL。

阿里巴巴对Flink社区的贡献

我们来看两个设计案例。第一个是阿里巴巴重构了Flink的分布式架构,对Flink的作业调度和资源管理做了明确的分层和解耦。这样做的第一个好处是Flink可以在各种开源资源管理器上本地运行。这种分布式架构改进后,Flink可以原生运行在HadoopYarn和Kubernetes这两种最常见的资源管理系统上。同时将Flink的任务调度由集中式调度改为分布式调度,使Flink可以支持更大的集群,获得更好的资源隔离。

另一个是实现增量检查点机制,因为Flink提供了有状态计算和规则检查点机制。如果内部数据越来越多,检查点就会越来越大,最终可能导致做不下去。提供增量检查点后,Flink会自动找出哪些数据是增量更改的,哪些数据是修改的。同时,只有这些修改过的数据被持久化。这样检查点就不会随着时间的运行越来越难,整个系统的性能也会非常稳定,这也是我们贡献给社区的一个非常重要的特性。

经过2015-2017年对Flink流媒体能力的提升,Flink社区逐渐走向成熟。Flink也成为了流媒体领域最主流的计算引擎。因为Flink最开始是想做一个统一流式、批量处理的大数据引擎,这个工作在2018年就已经开始了。为了实现这一目标,阿里巴巴提出了新的统一API架构和统一SQL解决方案。同时,在流式计算的各种功能得到改进后,我们认为批量计算也需要各种改进。无论在任务调度层还是数据洗牌层,在容错性和易用性方面都有很多工作需要改进。

究其原因,这里有两个要点与大家分享:

●统一的API堆栈

●统一的SQL方案

我们来看看FlinkAPI栈的现状。研究过Flink或者用过Flink的开发者应该知道。Flink有两个基本的API,一个是数据流,一个是数据集。数据流API提供给流用户,数据集API提供给批量用户,但是这两个API的执行路径完全不同,甚至需要生成不同的任务来执行。所以这和统一API是冲突的,这也是不完善的,不是最终的解决方案。在运行时之上,应该有一个统一批量流程集成的基础API层,我们希望API层能够统一。

因此,我们将在新架构中采用一个DAG(有限非循环图)API作为批处理流的统一API层。对于这种有限无环图,批量计算和流量计算不需要明确表示。开发者只需要在不同的节点和不同的边定义不同的属性,就可以规划数据是流属性还是批属性。整个拓扑是一个统一的语义表达,可以集成批量流。整个计算不需要区分流量计算和批量计算,只需要表达自己的需求。有了这个API,Flink的API栈就统一了。

除了统一的基础API层和统一的API栈,SQL解决方案在上层也是统一的。而批处理SQL,我们可以认为有流计算和批处理计算的数据源,我们可以把这两个数据源模拟成数据表。可以认为流数据的数据源是一个不断更新的数据表,而批量数据的数据源可以认为是一个相对静态的表,没有更新的数据表。整个数据处理可以看作是SQL的一个查询,最终结果也可以模拟成一个结果表。

对于流计算,它的结果表是一个不断更新的结果表。对于批处理,其结果表是相当于一次更新的结果表。从整个SOL语义表达来看,flow和batch是可以统一的。此外,流SQL和批处理SQL都可以使用同一个查询来表示重用。通过这种方式,所有流批次都可以通过同一个查询进行优化或解析。甚至许多流和批处理操作符都可以重用。

弗林克的未来方向

首先,阿里巴巴要基于Flink的本质做一个全能的统一大数据计算引擎。放在生态和场景的地面上。目前Flink是主流的流计算引擎,很多互联网公司已经达成共识,Flink是大数据的未来,是最好的流计算引擎。接下来的重要任务是让Flink在批量计算上有所突破。在更多的场景下,已经成为主流的批量计算引擎。然后进行流量和批次的无缝切换,流量和批次的界限越来越模糊。使用Flink,在一个计算中,可以同时进行流量计算和批量计算。

第二个方向是Flink得到更多语言的生态支持,不仅仅是Java,Scala,还有Python和Go进行机器学习。未来希望用更丰富的语言开发Flink计算任务,描述计算逻辑,连接更多生态。

最后不得不说AI,因为很多大数据计算需求和数据量都在支撑非常热门的AI场景。所以我们会在完善Flink流批生态的基础上,继续往上走,完善上层Flink的机器学习算法库。同时,Flink会借鉴成熟的机器,深度学习融合。比如Flink上的Tensorflow,可以用来整合大数据的ETL数据处理和机器学习的特征计算、特征计算,以及训练的计算,让开发者同时享受多个生态系统带来的好处。

阿里巴巴云境是什么东西?

这个是阿里巴巴做的一款信息化系统产品,主要针对中小企业,它的服务器??硬件的支持,都是阿里放在云端的。相当于都是由阿里来帮你管理数据??,客户的硬件投入非常低,系统管理成本也很低,通常是以年费的形式来运行。

为什么阿里巴巴,腾讯等这些公司要把服务器放在美国?

为了让美国人民享受到阿里巴巴和腾讯的服务啊,另外国内的人到美国去,也是需要相关的服务的。

阿里巴巴属于哪个行业?

阿里巴巴主营属于电子商务,还包括互联网金融、电子支付、物流等。同时,阿里巴不断发展还涉及到更广的领域,比如传媒、物联网等。

阿里巴巴集团本家产业:阿里巴巴、淘宝、支付宝、阿里软件、阿里妈妈、口碑网、阿里云、中国雅虎、一淘网、淘宝商城、中国万网,聚划算、云峰基金、蚂蚁金服。

一般的网店需要多大的服务器?

不需要因为你申请的淘宝店是一个虚拟空间来着,在阿里巴巴自已建设的机房之中,可直接使用,无需自备服务器。直接装修店铺,上架商品即可

阿里千岛湖数据中心建在湖底吗?

是的,阿里巴巴的一个服务器中心就放在千岛湖湖底。阿里云千岛湖数据中心建筑面积30000平方米,共11层,可容纳至少5万台设备。作为水冷驱动的工业数据中心建设的模板,很有创新性和代表性。数据中心90%时间不需要电制冷,深层湖水通过完全密闭的管道流经数据中心,帮助服务器降温,再流经2.5公里的青溪新城中轴溪,作为城市景观呈现,自然冷却后又回到千岛湖。

2. 阿里云服务器是什么

阿里云也就是指的云主机.它可以简单的理解成是一台虚拟服务器.是类似VPS的东西.但与VPS还有所不同.VPS是在一台物理服务器上划分出来一部分的资源搭建而成.一旦母机出现故障.上面所有的VPS将受影响.而云主机是在一组集群服务器上划分出来的多个类似独立主机的部分.集群中的每台机器都有云主机的一个镜像备份.当其中一台机器出现故障时.系统会自动访问其他机器上的备份.所以在安全与稳定性方面.云主机更加强大.
云主机与服务器一样.有独立的IP.内存.带宽等.用户可以根据需要安装各种操作系统以及配置各种网站运行环境.在功能以及使用上与服务器一模一样.同样因为是虚拟的.费用通常比服务器要便宜的多.主要是针对中小规模的应用来使用.

3. 阿里云服务器价格一年多少钱

1、服务器租用,像一般的个人网站或者仅做展示型的企业网站,需要的配置不用太高,前期可以选择虚拟主机类型的云服务器,一年下来估计一两千,再简单些的,几百块就能搞定。

2、云服务器一年费用大概在5万左右。云服务器(ElasticComputeService,ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。

3、租机也分云服务和物理服务,云服务一般是由多台服务器集群,多个客户共同使用的,这种价格比较便宜,适合需求量较小的用户,目前活动价价格在200-300左右。

4、阿里云服务器各项配置的推荐:进阶类型:2核4GB1M40G系统磁盘825元/年1,260元2年1,650元3年适用于流量适中的网站应用程序,或简单的开发环境,代码存储库等。

4. 云服务器ECS是什么

云服务器 Elastic Compute Service(ECS)是易迈云提供的一种基础云计算服务。使用云服务器ECS就像使用水、电、煤气等资源一样便捷、高效。您无需提前采购硬件设备,而是根据业务需要,随时创建所需数量的云服务器实例,并在使用过程中,随着业务的扩展,对云服务器进行扩容磁盘、增加带宽。如果不再需要云服务器,也可以方便的释放资源,节省费用。
云服务器 ECS 实例是一个虚拟的计算环境,包含了 CPU、内存、操作系统、磁盘、带宽等最基础的服务器组件,是 ECS 提供给每个用户的操作实体。一个实例就等同于一台虚拟机,您对所创建的实例拥有管理员权限,可以随时登录进行使用和管理。您可以在实例上进行基本操作,如挂载磁盘、创建快照、创建镜像、部署环境等。

5. 负载均衡进阶:SLB常见问题解决方法

摘要: 在由云栖社区和阿里云网络团队联合主办的2017阿里云网络技术在线高峰论坛上,阿里云技术专家添毅分享了网络产品部根据客户和阿里云运维的反馈提炼出的几大最主要和最常见的在使用SLB产品中发生的问题,并为大家介绍了针对这些常见问题的相应处理方法。

摘要: 在由云栖社区和阿里云网络团队联合主办的2017阿里云网络技术在线高峰论坛上,阿里云技术专家添毅分享了网络产品部根据客户和阿里云运维的反馈提炼出的几大最主要和最常见的在使用SLB产品中发生的问题,并为大家介绍了针对这些常见问题的相应处理方法。想知道如何借助SLB构建高可用系统以及健康检查是如何实现的,本文不容错过!

本文内容根据演讲嘉宾分享视频以及PPT整理而成。

本次的分享将会主要围绕以下5个部分

基本概念回顾

如何构建高可用系统

选择性能共享型还是性能保障型实例

为什么健康检查异常

为什么负载不均衡

一、基本概念回顾

SLB是什么

SLB是阿里云推出的一款云负载均衡服务,其主要针对于多台云服务器进行流量分发,能够将业务流量分发到由多台云服务器所组成的后端服务器池上去,以此来提升系统的处理能力。负载均衡所解决的问题主要包括两点:第一点,SLB能够消除系统的单点故障,这是因为SLB的后面是由多台云服务器组成的服务器池,那么当其中某一台服务器出现故障的时候并不会影响整个系统的可服务性。第二点,由于后端的云服务器能够横向地进行扩展,所以也具有为海量业务提供服务的能力。那么,为什么要使用云上的负载均衡呢?这是因为云上负载均衡主要有这样的几个特点:高可靠、高性能、低成本、安全性、易用性。

SLB基本组件

阿里云的SLB主要包括了三个基本组件,这里也进行简单地介绍。第一个基本组件就是实例,每个实例都唯一地标识了云负载均衡器,并且每个实例都对应一个VIP,VIP唯一地标识了负载均衡实例,也是负载均衡对外提供服务的地址。第二个组件是监听,监听是由VIP+端口号来唯一标识的,一个监听中包含用户定制的负载均衡策略和转发规则。最后一个基本组件就是后端挂载的服务器,也就是云服务器ECS,负责处理真正的业务请求。

二、如何构建高可用系统

多层次的高可用

如下图所示,阿里云的负载均衡是从四个层面上去构建高可用的。从底层往上层看,分别是应用级别的高可用、集群级别的高可用、可用区级别(AZ)的高可用以及地域级别(Region)的高可用。

应用级别的高可用主要是通过针对SLB后端的ECS实例的健康检查来实现的。当SLB发现后端不健康的或者不能正常工作的ECS的时候,会将这些不健康的ECS从SLB的转发路径中剔除掉,保证业务流量能够转发到正常的工作服务器当中。集群级别的高可用主要是通过集群中LVS机器间的session同步来保障任何一个用户的业务会话都能够在所有的LVS机器上是相互同步的,当其中某一台LVS出现故障时,可以由其他的LVS来接替出现故障的机器的工作。同时,由于会话保持的存在,用户的业务是不会发生中断的。对于可用区级别的高可用和地域级别的高可用,在本文的后面会进行更加详细的介绍。

细说可用区级别容灾

这里详细地介绍一下可用区级别的容灾。可用区级别容灾的设计初衷是在当一个可用区出现重大灾情的时候,比如整个可用区的机房发生了掉电、光缆出现了中断、整个可用区机房中所有的物理机都无法正常工作的时候,也就是整个可用区都宕掉了的情况下,能够由备可用区来继续提供服务,这就是可用区级别容灾的设计初衷。可用区级别的容灾并不是说某一个可用区中的某一个实例或者是某几个实例出现了故障就会发生可用区的切换,实例自动从可用区A切换到可用区B,这是一个比较常见的误区。而针对于这样的误区,阿里云也建议用户在构建可用区级别的高可用的时候采取以下两个步骤:

首先,建议用户在SLB实例的后端尽可能地去挂载多个可用区的ECS实例。SLB能够支持跨可用区地挂载ECS云服务器,这样可以避免某个可用区的ECS都出现故障的情况下,还有其他可用区的ECS能够接替工作,虽然跨可用区挂在ECS会存在大约2毫秒左右的延迟,但是却能够大大地提升服务的可用性。

第二步就是针对于一些特别重要的业务,建议在不同的可用区分别地去购买SLB的实例。比如在可用区A和可用区B各自购买一个SLB实例,在此基础之上再使用全球负载均衡GSLB来进行实例间的调度。

跨地域容灾的实现

跨地域容灾这一部分与上面介绍的可用区级别容灾的第二步非常相似,也是借助于GSLB产品实现的,GSLB即 智能DNS实现了针对于后端的健康检查、路由调度的优化功能,能够实现在地域之间的负载均衡实例的调度。关于这部分的更详细的内容请参考:全球负载均衡跨地域容灾解决方案(https://promotion.aliyun.com/ntms/act/globalslb.html)。

三、选择性能共享型还是性能保障型实例

共享型vs保障型-WHY保障型

在如今这个共享经济的时代,像滴滴打车这样的模式是非常火的。但是即便是有了滴滴打车,但是还有人会去买车,这是因为会出现如下两个大家可能曾经都碰到过的场景:

早晚高峰叫不到车?雨雪天气路边冻成狗?还大幅提价?

假期想远离尘嚣,找个僻静旷野放空自我,叫个滴滴?也许有去,但保证无回!

所以说共享和保障都是客户的需求。出于对于类似需求的考虑,阿里云的负载均衡也推出了性能保障型实例。以前所推出的SLB共享型实例是因为性能指标没有办法实现隔离,因为所有的共享型实例都处于同一个大共享资源池中,所以在高峰期的时候就会出现资源的争抢,这样就无法满足对于性能具有刚性需求的大客户的诉求。除此之外,还有一些体量特别大的超级用户,他们对于性能的要求会是非常高的,但是由于共享型实例无法做到性能隔离,也支持不了大颗粒度的性能指标,所以也无法完成这样的工作。因此,阿里云推出了性能保障型的负载均衡实例。

超强性能

保障型实例的性能规格如上图所示,其并发连接数最大可以达到500万,每秒的新建链接数(CPS)可以达到50万,针对于七层负载均衡系统的QPS可以达到10万。除此之外,性能保障型实例还具有以下的特点:

超强HTTPS性能。 性能保障型实例针对于七层系统,特别是HTTPS的业务进行了优化,实现了高性能硬加解卡,并且能够实现使HTTPS的业务单实例可达10万QPS。

超大并发连接数。 性能保障型实例的单实例的并发连接数可达500万,所以其可承载物联网场景的下海量连接,可以支撑共享自行车、智能手表等存在特别大量长连接的场景。

共享型实例平滑升级。 原有的共享型实例可以平滑升级至性能保障型实例,而无需更换VIP。

完善的业务监控系统。 在推出性能保障型实例之后,因为每个实例都有相应的性能规格和性能指标,所以阿里云也为用户提供了完整的业务指标监控系统,并支持电话、短信、钉钉企业群等方式的告警。

性能规格

上图所展现的是阿里云SLB性能保障型实例的规格参数。图中的最后两行规格7、8默认在控制台上是无法购买的,目前只针对企业级用户,而且需通过客户经理申请后,通过白名单开放。

如何选择规格

对于保障型实例而言,主要有如下几个性能指标:

最大连接数:一个实例可承载的最大连接数。

新建连接数:CPS表示一个实例每秒可以新建的链接数。

每秒查询数:QPS表示一个实例7层的像HTTP或者HTTPS系统的吞吐量。

通常一个4层SLB的性能好坏由最大连接数和新建连接数来衡量,它们表示了一个SLB系统的并发能力和处理突发连接的能力。通常一个7层SLB的性能好坏主要由QPS决定,QPS表示了一个7层系统的吞吐量。这里需要注意的是QPS是7层独有概念。虽然每个规格都定义了三个性能指标,但是这并不代表这三个性能指标在任何一个性能场景下或者任何一个时刻都能够同时达到最大值,这里存在一个性能指标的短木板原则。比如在某一个应用系统中,QPS已经达到指标上限,但最大连接数还远远没有达到上限,这时不论怎样加大客户端数量,最大连接数都会因为QPS达到上限,而无法达到最大值。

对于规格的选择而言,需要通过之前提到的业务监控系统来获取相关指标。如果用户十分了解自己业务的相关指标,也就是对于高峰期的并发连接数会达到多少以及QPS会达到多少都有非常清晰的了解,也可以直接在控制台上选购。但是如果用户并不清楚自己的相关业务指标,可以在初期选购按量付费的较高规格的实例,并且在一个业务周期内监控流量的峰值,在峰值确定好之后再通过变配的方式改变到比较合适的实例规格。目前性能保障型实例还处于公测阶段,所以现在还没有对于实例收取规格费用,也就是说在这个阶段无论用户选择最小规格还是最大规格,实际上都只需要花费IP配置费和带宽费就可以了,这样也比较便于用户去熟悉和使用阿里云的性能保障型实例。

监控和告警

前面也有所提及,在负载均衡的控制台上面能够直接地显示出相应的一些性能指标,但是在这里只能够实现对于性能指标的监控,却无法进行告警。如果用户需要进行监控告警,可以在阿里云所提供的云监控控制台进行操作。云监控平台可以监控阿里云中的所有产品并且实现业务告警的定制,并且可以选择包括短信邮件、电话、企业钉钉群等方式进行业务的实时告警。

四、为什么健康检查异常

健康检查机制

接下来分享在负载均衡的日常使用中出现的问题,特别是很多用户都存在疑问的健康检查部分的问题。

阿里云的负载均衡一共可以支持四种协议,四层的负载均衡系统主要包括了TCP、HTTP以及UDP协议,而七层的系统则包括了HTTP和HTTPS,而由于目前HTTP和HTTPS都是使用的普通的HTTP方式,所以其实也可以归结为三类协议。对于TCP而言,健康检查的过程是通过发送ACK这种TCP的探测报文去探测端口是否仍然存活;对于HTTP而言,则主要使用的是HEAD的请求方式来检查目标的页面是否正常;UDP部分则主要借鉴了SMP协议的原理。

健康检查部分主要会涉及到几个指标,这些指标需要用户在控制台上进行设置,上图中给出了一些默认的建议值,比如响应的超时时间,也就是在每一次进行健康检查的时候,如果超过一定时间健康检查还没有回应就认为这次的健康检查是失败的;还有健康检查间隔,也就是两次健康检查之间通常需要间隔2秒钟;而所谓的不健康阀值和健康阀值就是在网络环境中往往会由于网络的抖动以及其他的因素导致偶尔的一次健康检查失败了,但是这时候并不能认为服务是真的失败了,所以需要设置一个阀值,比如3次就指的是当3次健康检查都失败的时候才会认为后端的服务是存在问题的,然后将其从转发路径中摘除掉。同样的,当服务从不健康变为健康的时候,也需要进行连续的几次探测,当确定处于稳定的健康状态之后再将其加入到SLB的后端中去。

为啥会失败(TCP)

TCP的健康检查也经常会出现一些失败的情况,这里也为大家提供了简单的故障排查顺序供参考。当出现健康检查失败的时候,首先可以检查一下后端的服务器是否已经启动。如果后端服务器的负载是比较高的,也可能会因为没有CPU时间去处理健检查的回应,这样就有可能导致健康检查失败。除此之外,因为对于阿里云的负载均衡而言,健康检查使用的都是私网地址实现的,所以如果根本没有监听到私网地址或者私网地址本身存在故障也会导致健康检查的失败。还有服务器上可能存在防火墙,将监听端口屏蔽掉了,导致健康检查并未通过。此外还可能存在一些配置方面的问题,比如提供服务的端口和做健康检查的端口不一致也可能存在健康检查失败。

针对于TCP的健康检查而言,很多用户会经常看到自己的后端服务器上日志上面有很多10或者16这些网段的访问,并且访问流量还比较大,这是因为之前所提到的健康检查具有一定的间隔时间,比如2秒或者3秒一次。这时候一些用户可能就会认为健康检查会影响服务器的性能,占了很多的服务器的连接数。其实可以从上图中左侧的报文交互情况看到,当SLB对于云服务器发起健康检查的时候首先会发一个SYN的请求,如果服务器端口是存活的,那么它会回应一个ACK,这个时候SLB端就会紧接着发送RST报文。也就是说实际上连接是并没有建立的,所以也不会占用后端服务器的连接数的资源,并且对于性能的影响也是极为有限的。

为啥会失败(HTTP)

HTTP常见的健康检查失败原因大概会有这样的三点:最常见的情况就是有些用户把服务器的HEAD请求方式禁掉了,因为默认在使用浏览器或者手机等请求一个页面的时候使用的都是GET方式,有时候可能需要上传数据则会使用POST方式,虽然很多服务器都支持HEAD请求方式,但是有些服务器可能会处于安全或者其他复杂因素的考虑将HEAD请求禁掉。所以在这里建议客户将服务器的HEAD请求方式打开,因为阿里云负载均衡七层健康检查方案就是使用的HEAD方案。另外一种常见情况就是页面访问本身上就存在问题,这样的情况下健康检查也是无法通过的。最后一种常见情况就是期望结果配置错误,针对于七层的健康检查是通过使用HEAD请求方式去请求页面,页面返回码可能会是200、300或者400以及500等,用户可以在健康检查的配置中设定预期的正常情况下的返回码值,当健康检查返回码值与预期值不一致就会判定健康检查是失败的。

为啥会失败(UDP)

这里介绍一下UDP健康检查的原理。首先,健康检查通过SLB向后端发送UDP报文探测来获取状态信息。SLB会周期性地给后端ECS发送UDP报文,如果UDP端口的业务处于正常情况,则没有任何回应。而当服务出现问题,比如指定的UDP服务端口处于不可达的情况或者无服务的状态的时候,会回复ICMP的不可达报文。这里也会存在一个问题就是如果后端服务器已经变成了网络中的孤岛,比如出现了整个服务器的掉电、关机情况这样完全不能工作的状态,这时候的ICMP不可达报文是永远不可能收到的,因为后端的服务器无法收到SLB发来的UDP探测报文,那么在这种情况下,可能会出现误认为后端健康的情况,但是实际上这个服务可能已经宕掉了。为了应对这种情况,健康检查还提供用户自定义UDP应答报文来实现精确的UDP健康检查,也就是由用户自定义指定一个字符串,当后端的云服务器收到UDP健康检查的探测的时候,也回应指定的字符串,之后SLB对于这个字符串进行对比和校验,如果匹配成功则认为服务一定是健康的,这样就可以实现非常精确的健康检查。

而UDP的健康检查失败也有很多原因,比如在协议栈里面有可能会有ICMP限速保护。当频率达到一定速率的时候,ICMP会被协议栈限制,后端无法回应ICMP不可达报文,进而导致SLB收不到ICMP的报文,出现健康检查的失败情况。所以这部分是需要注意的,如果可能尽量将速率限制放大一些。

其他问题

健康检查时好时坏的可能原因如下:

HTTP类型健康检查目标URI响应慢。比如本身是动态页面,会涉及到大量的计算才能够渲染完成并返回到前端,这样肯定就会导致健康检查响应比较慢。如果服务器负载过高同样也会出现这样的问题。

未全部放开对SLB健康检查源地址的限制导致分布式健康检查失败。因为阿里云的服务器都是分布式的部署,健康检查也会是分布式的探测,LVS等机器在后端有不同的源去针对某一个云服务器进行探测的,所以如果没有将这些源地址都放开,实际上也会影响健康检查的效率,因为对于这么多机器而言,只要有一台机器检测到是正常的那么就是正常的。

还可能出现直接访问正常,但是健康检查失败的情况。造成这样情况的可能原因如下:

防火墙限制。

目的端口不一致。

检查方法不同,可能使用浏览器看页面是没问题的,但是健康检查却不行,这就是因为刚才所提到的HEAD方法没有开启。或者七层的健康检查配置了URL按照域名转发,但是在浏览器上直接访问则是使用域名去做的,而健康检查是使用IP地址做的,这样也可能出现转发和预期结果的不同。

检查频率不同,ICMP限速。

五、为什么负载不均衡

调度算法与会话保持

首先介绍一下负载均衡的调度算法。阿里云的负载均衡支持三种算法,第一种算法是单纯的轮询(RR),也就是将业务的请求依次地分发到后端的服务器。第二种算法是加权轮询(WRR),也就是在处理调度的时候会根据针对于每一台后端服务器设置权重来进行转发。这里之所以设置权重是因为后端服务器的处理能力可能是不同的,如果使用相同的权重进行轮询可能就会把后端处理能力比较弱的服务器挤爆,所以需要针对于服务器的处理能力设置一些权重。第三种算法是针对于加权最小连接数的轮询(WLC),也就是除了根据每台后端服务器设定的权重值来进行轮询,同时还考虑后端服务器的实际负载,也就是连接数。当权重值相同时,当前连接数越小的后端服务器被轮询到的次数也越高,这样就能够保证负载尽量地均衡。如果不考虑这一点就会造成某些服务器连接数已经很高了但是流量依然还往上面分发,而另外一些服务器却一直处于空闲状态。

会话保持指的是来自同一用户请求始终保持分发到同一台后端的云服务器上。对于同一用户而言,使用的是四层的负载均衡和使用七层的负载均衡在理解上是不一样的。如果是四层负载均衡,则会使用源IP地址标识同一用户,所以如果在可能会有很多办公电脑的大型企业中,这些电脑在企业内部是通过局域网的IP进行通信的,在访问公网的时候都是通过NAT网关处理的,所以在走到Internet的时候,源地址通常会是一个或者很有限的几个。在这种情况下,如果是四层的负载均衡就会把里面所有的请求都视为来自同一个用户的,这种情况下如果开启了会话保持,就会发生问题。而七层的负载均衡是根据用户浏览器中的Cookie来进行唯一识别的,对于刚才的案例在大型企业里面因为内网访问公网的源地址都是一样的,导致没有办法识别到底是不是同一个用户,此时建议使用七层的负载均衡方案解决,因为Cookie是每个浏览器都唯一的。会话的保持时间是可以在控制台上配置的,四层的负载均衡方案最大可达1小时,而七层的方案最大可达24小时。

为何不均衡

最后分享一下不均衡的常见情况。有时候会需要新加一个服务器进来,这时候往往到新加进来的服务器上的连接会很少,这是因为可能会存在以下原因:

存在会话保持的情况下,会话保持会让请求停留在原有的服务器上,这样到新加进来的服务器上的连接自然会少一些。

权重设置不一致,如果在权重的设置上存在区别,而新加进来的服务器的权重如果很低,连接也过不去。

应用属于长连接类型,因为需要在TCP上复用,如果客户端不主动断开连接,后续所有的请求都会继续复用当前服务器上的连接,只有新建连接才有可能到新的服务器上。

而有时候在业务量或者新建连接较少时,也会出现负载不均衡的问题。这是因为每个Core都是独立的调度单元,因此可能存在将某个Client的多条业务经过不同core的调度后全部转发到一台ECS上的情况,同时由于业务量较少,因此出现了不均衡。建议使用轮询算法解决,在RR轮询算法中加入了扰乱因子,可以更加有效的打散SLB到后端的转发路径。

原文链接

阅读全文

与阿里云服务器集群采用多台服务器相关的资料

热点内容
阿里云配置mysql数据库服务器地址 浏览:911
关于安卓系统老化怎么解决 浏览:812
php撮合交易 浏览:1001
决战服务端源码编译 浏览:994
腾讯云服务器如何保持开启 浏览:372
程序员抽烟怎么样 浏览:876
模拟器怎么加入服务器 浏览:295
yt88加密狗初始化 浏览:133
期货5分钟app哪里有 浏览:509
什么叫编译编辑 浏览:462
未加密的wifi是什么渠道 浏览:874
手机的文件夹怎么卸载 浏览:244
php的配置文件在哪 浏览:119
linux安装驱动怎么编译 浏览:259
男生解压舞教程 浏览:236
压缩弹簧尺寸怎么写 浏览:402
证券app哪里看公司业绩预测 浏览:426
快速掌握python3语法 浏览:158
好矿云服务器购买费用 浏览:307
递归算法如何分析时间复杂度 浏览:264