如今,浏览科技博客时,几乎总能看到称赞多云架构的文章。这并非没有道理:多云可带来多方面的优势,包括节省成本、提高可靠性等。
但多云策略也会带来一些挑战,尤其是在应用部署方面。在跟进多云趋势之前,应评估多云架构将如何影响部署策略,并确保已做好应对这些难题的准备。
本文介绍多云环境中常见的部署挑战,以及缓解这些挑战的实用建议。
挑战 1:资源配置
使用多个云时,需要先预置多个环境,才能在这些云中部署应用。
基础设施即代码(IaC)工具在一定程度上有助于简化这一流程。您可以使用同一个IaC模板,以相同方式预置多个云环境。
不过,IaC在应对这一挑战时能发挥的作用有限。如果使用特定云供应商提供的IaC工具,该工具可能与其他云的兼容性很差,甚至完全不兼容。因此,可能需要为每个云使用不同的IaC工具,这在一定程度上违背了采用IaC的初衷。即使所用的IaC工具能够支持所有云,也很可能需要手动调整配置,因为无法对每个云使用完全相同的模板。
当IaC无法解决多云配置挑战时,更合适的方法是采用一种将工作负载与底层云完全解耦的解决方案。这样就无需再为每个云单独进行配置。
挑战 2:应用部署
与资源配置类似,如果将应用实例部署到多个云,实际的应用部署过程可能会很复杂。每个云都需要采用不同的部署流程。
可以尝试使用第三方发布自动化工具,将应用实例自动部署到所使用的各个云中。这可以简化流程,但与IaC工具一样,可能仍需进行一些手动更改,因为无法使用完全相同的配置部署到每个云。
同样,与发布自动化工具相比,能够将工作负载与其托管云解耦,并在多个云之间提供完全一致部署流程的解决方案,可以更有效地缓解多云架构面临的部署挑战。
挑战3:负载均衡
如果在多个云中托管应用的多个实例,如何确保每个实例都处理适量的流量?如何避免一个云承载过多流量,而另一个云却处于闲置状态?如何判断何时需要添加或移除实例?
这些问题至关重要。如果无法在多云架构中合理均衡负载,可能会出现性能问题并造成资金浪费,这与采用多云架构的初衷恰恰相反。
遗憾的是,在多云环境中,这些问题很难回答。由于云供应商本身并不提供可与其他供应商的云配合使用的负载均衡解决方案,因此需要分别仔细监控每个云,以确定如何在不同的云和应用实例之间均衡流量。
通过使用可部署到多个云的通用网络和监控平台,以及能够自动连接并实现负载均衡的应用交付网络,可以避免这些挑战,切实获得多云战略应有的优势。
挑战 4:出站流量
云提供商很贪婪。他们希望您的工作负载和数据永远留在其云中。如果将数据移出,也就是执行数据出站,您就需要支付高额费用。
这意味着,如果多云架构需要频繁地在不同云之间传输数据,数据传出费用可能会大幅增加云计算账单。
从基本层面来看,可以通过合理设计多云架构,避免数据在不同云之间频繁移动,从而降低这一风险。例如,应避免将应用部署在一个云中,而其需要摄取的数据托管在另一个云中,因为这会导致大量跨云数据传输。
另一种有助于降低风险的策略是使用应用交付网络来存储部分使用较频繁的数据。应用交付网络不仅能带来其他多项安全和性能优势,还可以减少一个云中的应用与另一个云之间传输数据的频率。应用可以改用应用交付网络中的数据存储。
挑战 5:监控
保持对单个云环境的可见性已非易事。当环境中包含多个云时,监控其中运行的所有服务和配置将成为一项极其艰巨的任务。
专为支持多云环境而设计的应用性能监控(APM)工具可以在一定程度上帮助完成这项任务,但作用有限。当某个应用程序似乎出现问题时,这些工具会发出警报,但仍需自行确定问题源自一个还是多个云,然后使用与每个受影响云关联的工具来解决问题。
或者,可以考虑将工作负载与底层云抽象分离,以便只需监控一个“逻辑云”和一套部署工具。这种方法可减少需要处理的组件数量,从而持续掌握应用和基础设施的运行状况。
结论
在多云架构中管理应用部署本身就很困难。虽然各类自动化工具有助于简化预配、部署和监控等任务,但仍无法完全避免人工操作。
与其尝试使用各种工具解决多云部署难题,不如从根本上改变多云架构的设计方式。借助VoltMesh和VoltConsole,可以采用一致的集中式方式跨多个云部署和连接应用,同时利用Volterra的全球应用交付网络优化工作负载的性能和安全性。
关于作者
相关博客文章
Thingbot正转变为攻击平台
Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。
借助F5全新Quick Start,在AWS上快速开展业务
在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。