云端干货 | 降本秘籍:竞价实例应用与集群管理

SpotMax云上说禅
​实例,即云端虚拟主机(instance),是最基本的云计算资源,分为按需实例、预留实例、竞价实例(Spot)三种计费模式,价格由高到低。当前,在大多数的云上系统中,实例成本在总成本中都占有很高的比重,在这种情况下,我们可以怎样充分利用价格低廉的竞价实例的优势、降低云端系统成本?一键Get你的省钱秘籍——

云端构建大规模系统的挑战

云计算平台拥有“按需获取”的特性,用户可以随时获取所需计算资源,实现计算资源与业务规模的动态匹配。云计算时代,计算资源已不再是构建大规模系统的瓶颈,多数情况下,成本已经成为企业在构建大规模应用时的最大挑战

如何降低云端系统的成本

降低云端系统的成本,核心是要充分利用云计算“按需获取”和“按使用付费”的特点。例如,根据业务量变化来及时伸缩计算资源,就是常见的降低成本的方式。在架构上,以微服务架构替代单体架构,使系统获得更细的伸缩粒度,从而利用更合适,更便宜的计算资源。

关于降低成本,一个容易被忽视的、与构建传统非云端系统不同的要点,就是系统的实现要充分考虑云计算的计费模式,例如,云端的消息服务通常是按请求次数来计费的,所以在一次调用中发送多条消息就可以将成本降至原来的几分之一。

实例,即云端虚拟主机(instance),是最基本的计算资源,当前在大多数的云上系统中,实例成本在总成本中都占有很高的比重(目前多数云端系统都是直接从本地系统迁移过来,较少采用Serverless等架构),所以,关注实例的计费模式,对于降低系统成本至关重要。

以下是3种基本的实例计费模式:

  • 按需实例:随用随启,根据运行的实例以按小时或按秒的方式计算容量并付费。
  • 预留实例:有一定的使用承诺(如:1年,3年的使用承诺),与按需实例的定价相比,预留实例可提供大幅折扣(通常为按需实例的60%)。
  • 竞价实例(Spot):是一种由云商推出的极端弹性和廉价的计算资源。它的价格根据供需关系变化,与按量付费实例的相比具有非常明显的价格优势(通常为按需实例的10%-20%)。同时,竞价实例中存在系统中断机制,系统将根据价格和资源池的存量等情况综合考虑,决定中断运行实例。

由以上可见,竞价实例是最具有价格优势的计算资源,有效利用好竞价实例,将可以大幅节省计算资源的成本。


关于竞价实例

计费模式

为了获得某一种竞价实例资源,用户需要设置一个最高价,当设置的最高价高于当前该种实例的市场价格时,用户就可以获得实例。需要注意的是:用户根据使用量支付的费用是基于市场价格的,而非用户的出价。

实例池

整个竞价实例市场按地区(Region)、机型、可用区(Availbility Zone)维度切分成了很多不同的实例池,每个池都单独评估自己的供求关系,这意味着每个池都有自己的容量和市场价格。因此,当某个池的供需关系变化导致实例价格发生变化,或者实例被中断回收时,并不会影响其他的实例池。

中断

竞价实例的中断发生在以下两种情况:

1.为某个实例池设置的最高竞价小于当前该池的市场价格

2.实例池出现供需关系紧张,资源短缺

在实例被终止回收前的数分钟,云平台会发出中断告警。

竞价实例的应用

由于竞价实例存在被中断的可能性,往往吓退了不少的用户,而实际上,竞价实例规模巨大,在合理利用的情况下,是可以保证集群中实例容量的稳定性的。云商也会提供竞价实例的历史价格及回收率查询。

竞价实例适用场景:

1 时间灵活性

目前,竞价实例被较多地使用在大数据计算、机器学习模型训练等后台批量任务中,这类任务的通常的特点是与线上系统不同,不要求实时的对线上请求给以响应,我们称之为时间灵活性。所以,可以利用重试机制实现对中断进行容错。目前,如果你使用云平台提供的大数据服务或机器学习服务,云平台通常都对使用竞价实例提供了内置的支持(可以自动完成任务的重试)。

2 实例灵活性

当在线服务的请求不需要由某个特定实例来进行处理,这样的服务就具有实例灵活性。如果能够使线上服务具有良好的弹性,并且有效地处理好中断的影响,竞价实例同样可以被使用于线上服务集群。提升线上系统的弹性,通常可以遵循面向失效和面向恢复的设计原则。

竞价实例集群管理

接下来,我们将重点介绍竞价实例集群的管理实践,它可以有效提高集群容量的稳定性,从而减少竞价实例回收带来的对服务可用性的影响。

“混搭”构建集群

1. 多种价格模式的混搭

可以考虑通过预留实例来保证服务基本的SLA,利用Auto Scaling和竞价实例来应付流量变化。

2. 不同池的竞价实例混搭

如上面提及,不同池的价格变化和中断回收是独立的,所以我们在机器中混合来自不同池的主机,就可以有效避免某个池内机器发生短缺而导致中断引起的集群大规模容量损失。

主动管理中断

在回收竞价实例的数分钟前,云计算平台都会发出中断警告(中断警告可以通过查询实例的元数据或者监听事件管理器来获得)。如果能有效利用这段时间,不仅可以实现被中断实例的完美终止(graceful termination),还能通过服务及状态迁移大大提高集群容量的稳定性从而保证可用性和服务能力。

1. 简单的场景通常包括以下步骤:

2. 对于更为复杂的情况,要如何处理?

  • 有状态的情况:需要处理数据和状态的迁移;
  • 使用其他服务发现机制:需要调用其他服务发现机制来管理服务实例的添加和移除。目前,Consul是最常见的服务发现软件;
  • 容器化环境:如Kubernetes,这时需要配合Kubernetes来完成中断节点上Pod的迁移及替代node的预先开启。

在实践中,我们可以借助云成本优化解决方案 SpotMax 的集群管理产品MaxGroup来完成这些复杂的主动中断管理工作。MaxGroup拥有智能规划集群构成、稳定与节省兼顾、时刻稳定集群容量、持续降低中断概率、确保状态一致性、拥抱云原生等特性,让开发者能充分享用云计算廉价的闲置算力,而不用担心可靠性问题,减少额外采购包括按需实例、预留实例等昂贵算力。

了解 SpotMax : https://spotmaxtech.com/

了解 MaxGroup:https://new.spotmaxtech.com/p...

阅读 219
1 声望
1 粉丝
0 条评论
你知道吗?

1 声望
1 粉丝
宣传栏