亚马逊AWS官方博客
通往托管之路:Amazon Elasticsearch Service 用例分析
在加入AWS之前,我曾领导过一支开发团队,负责使用Elasticsearch构建移动广告解决方案。Elasticsearch是一款高人气开源搜索与分析引擎,适用于日志分析、实时应用程序监控、点击流分析以及搜索等多种场景。我负责的这套平台在推动公司业务中,发挥着至关重要的作用。
我的团队在AWS运行着一套自建的Elasticsearch方案。当时,市面上还没有任何真正托管的Elasticsearch产品。我们需要构建脚本与工具,才能跨越三个地理区域部署起这套Elasticsearch集群。其中涉及的具体任务包括(但不限于):
- 配置网络、路由与防火墙规则,以保证各集群能够相互通信。
- 保护Elasticsearch管理API免受未授权访问侵扰。
- 创建负载均衡器,负责跨越各数据节点进行请求分配。
- 创建自动规模伸缩组,保证在出现故障时快速进行实例替换。
- 配置自动化。
- 针对安全问题进行升级管理。
如果要用一个词来形容这段经历,那无疑就是“痛苦”。大规模部署并管理自己的Elasticsearch集群需要耗费大量时间、学习多种专业知识。而更重要的是,过于繁重的管理工作也让我们的工程师无法真正专心于自己最擅长的任务——为客户提供创新和可行的解决方案。
Amazon Elasticsearch Service (Amazon ES)于2015年10月1日正式上线,这时我已经加入AWS近2年时间。而在5年之后,Amazon ES已经进化为当初难以想象的完善形态,能够为用户提供极为强大的功能集,切实满足大家在搜索方面提出的各类需求。借助Amazon ES,我们将获得一项全托管服务,进而在AWS云中安全、经济且高效地部署、操作及扩展Elasticseearch集群。Amazon ES还允许用户直接访问Elasticsearch API,借此将Elasticsearch的现有代码及应用程序同托管服务无缝对接起来。
Amazon ES负责为您的Elasticsearch集群配置所有资源,并能够在指定的任意区域分钟级启动ES集群。Amazon ES还能自动检测并替换掉出现故障的Elasticsearch节点,从而降低与自管理基础架构相关的运营开销。大家只需执行一次API调用,或者在AWS管理控制台上单击几下,即可实现集群的横向或纵向扩展,最高数据容量可扩展至3 PB,且完全不会造成任何宕机时间。凭借这种出色的灵活性,Amazon ES足以支撑起从单节点开发集群、到生产规模多节点集群的一切工作负载。
Amazon ES还提供一套功能强大的免费的Kibana插件。其中囊括细粒度访问控制、警报、索引状态管理以及SQL支持等常见功能。Amazon ES功能集的设计完全立足于客户需求,同时考虑到Open Distro for Elasticsearch (ODFE)等开源社区倡议的方针。
当然,在迁移至托管服务之前,大家首先需要认真考量当前需求与相关影响因素。很明显,我们希望团队能够专注于完成有意义的工作,真正推动公司发展。为此,大家必须首先明确将哪些流程引入托管服务,而哪些最好继续保留在自管理流程当中。结合我在上一份工作中管理Elasticsearch中积累下的实践经验,再加上进入AWS之后处理过的数以千计客户迁移用例,本文将通过以下几个重要问题的章节供大家参考。
工作负载
在迁移至托管服务之前,我们可能需要先参考参考“垂直”行业中其他用户的作法,例如金融、电信、法律、电子商务乃至制造业等从业组织的具体实践。好消息是,目前来自各个行业的成千上万客户已经在Amazon ES上成功部署了自己的搜索、日志分析、SIEM乃至其他多种工作负载。
在默认情况下,Elasticsearch主要作为一款搜索引擎。Compass公司使用Amazon ES扩展其搜索基础架构,并借此构建起一套完整且可扩展的房地产站内搜索解决方案。通过使用行业领先的搜索与分析工具,消费者们可以快速找到公司目录中的各种分,并帮助消费者更快找到适合的房屋,最终顺利完成市场宣传与房屋销售。
凭借聚合与警报等强大工具,Elasticsearch被广泛用于日志分析类工作负载,借此深入了解企业运营活动。随着Intuit全面迁移至云托管架构,该公司也踏上了自己的“可观察性”探索之旅,旨在改进其监控应用程序运行状况的具体方式。Intuit公司使用Amazon ES构建起可观察性解决方案,借此实现从容器到无服务器应用程序的完整平台的运行状况可视化。
在安全性方面,Sophos公司堪称下一代网络安全领域的全球领导者,负责保护客户免受当今最先进网络威胁的侵害。Sophos使用Amazon ES配合其他AWS组件开发出大规模安全监控与警报系统,旨在充分发挥Amazon ES在规模化安全用例中的强大潜能。
无论是寻找房屋、检测安全事件、还是协助开发人员发现应用程序中存在的问题,Amazon ES都表现出广泛的用例与工作负载支持能力。
成本
在对运营最佳实践的讨论当中,成本永远是无法回避的重要因素。使用Amazon ES,只需要在控制台上单击几下,我们即可为自己的工作负载选择最佳实例类型与存储选项。如果无法确定具体的计算与存储要求,Amazon ES还提供按需计费的服务,无需任何前期投入或长期使用承诺。而如果大家对工作负载需求比较明确,则可以选择Amazon ES提供的预留实例以享受更低费率、节约大量成本。
当然,计算与基础设施都只是运营成本中的一部分。在AWS,我们鼓励客户在比较不同解决方案时充分评估其总体拥有成本(TCO)。作为组织中的决策者,在选择替换自管理环境时,必须关注由此带来的具体成本收益。我们鼓励客户认真考量以下因素:
- 对于24/7/365全天候运行的集群,您需要为其支付多少管理成本?
- 对于业务环境中的集群,您需要为其支付多少操作组件构建成本?包括支持流程以及自动/手动修复程序等。
- 各项高级功能对应的许可成本是多少?
- 对于各集群或DNS服务之间用于实现产品公开的网络功能,您需要为其支付多少成本?
- 您在备份过程方面花费了多少成本?现有备份方案能够提供怎样的故障恢复速度?
Amazon ES的最大优势,是把大家从这些问题当中解放出来。Amazon ES提供专门的运营团队负责管理和运维您的集群,并提供保留周期达14天、每小时进行一次的自动数据备份,同时对集群故障进行自动修复,且不会带来任何额外的许可成本。
此外,大家还需要特别注意Elasticsearch中的数据存储管理成本。以往,为了防止存储成本失控,自管理Elasticsearch用户往往需要依靠复杂的解决方案实现跨数据层管理,并导致某些情况下我们无法快速访问这些数据。AWS通过新型低成本存储层UltraWarm解决了这一难题。在UltraWarm的帮助下,大家可以使用Elasticsearch与Kibana配合Amazon Simple Storage Service(Amazon S3)实现数据的存储与交互分析。更重要的是,与现有热数据存储选项相比,其每GB存储成本降低近90%。
安全性
在与客户的实际交流中,我发现大家最关心的是安全性。一次数据泄露就可能造成数百万美元的损失,并给企业的声誉造成不可弥补的损害。在AWS,为客户提供数据安全保护工具是我们服务体系中的重要组成部分。对于Amazon ES中的数据,大家可以执行以下安全保护操作:
- 使用Amazon Virtual Private Cloud (Amazon VPC)实现网络隔离
- 通过AWS Key Management Service (AWS KMS)创建并控制密钥,并借此实现静态数据加密。
- 使用TLS 1.2实现传输数据加密。
- 使用Amazon Cognito与AWS Identity and Access Management (IAM)策略管理身份验证与访问控制。
在与Kibana集成时,很多客户希望能拥有统一的登录环境。Amazon ES提供Amazon Cognito authentication for Kibana,大家可以根据需求选择集成身份提供程序,例如AWS Single Sign-On, PingFederate, Okta等等。关于更多详细信息,请参阅将第三方SAML身份提供程序与Amazon Cognito用户池相集成。
最近,Amazon ES引入了细粒度访问控制(FGAC)机制。FGAC允许用户对Amazon ES上的数据进行精细控制。例如根据请求的提出方,我们可以设定搜索引擎仅返回一条索引结果。此外,我们还可以隐藏文档中的某些字段或者将某些文档彻底排除在特定用户的搜索结果之外。FGAC使我们能够全面控制任意用户在Amazon ES群中所能看到的数据范围。
合规性
相当一部分组织需要严格遵守合规性标准。而经历过审计与认证工作的朋友们一定很清楚,保障合规性是一项昂贵、复杂且漫长的过程。但在Amazon ES的支持下,大家可以轻松享受到AWS在遵守各类重要合规标准方面做出的努力与相应成果。Amazon ES符合PCI DSS、SOC、ISO以及FedRamp的要求,可帮助大家轻松满足特定的行业或法规要求。此外,Amazon ES还通过了HIPAA认证,因此有资格处理、存储及传输PHI信息,帮助客户加快涉及到此类敏感数据的工作负载的开发速度。
Amazon ES近期还通过了SoC服务评估,并得到独立审计员的承认。大家可以在Amazon ES之上构建起可靠的解决方案,保证其充分满足各关键行业提出的严苛监管标准。
可用性与弹性
在内部或云环境中部署Elasticsearch时,我们需要充分考虑实施方案能否承受意外故障的影响。并明确如何从故障中恢复。在AWS上,我们对一切可能导致服务中断的情况做出了提前规划,例如硬件故障及磁盘损坏等。
与其他技术基础设施供应商不同,AWS在每个区域内又划分出多个具体可用区。每个可用区由一处或者多处数据中心组成,各数据中心彼此保持物理分隔,且各自配备冗余电源与网络设施。为了进一步提升应用程序的可用性与性能,用户可以在同一区域内的多个可用区中部署应用程序,借此实现更强的容错性与更低的延迟。可用区之间使用高速专用光纤网络互连,保证用户可以在各可用区间建立起自动故障转移机制,且转移过程不会导致应用程序中断。与传统的单/多数据中心基础设施相比,AWS的可用区设计在可用性、容错性以及可扩展性方面都带来了显著的提升。
Amazon ES允许用户从单、双及三可用区当中做出实例部署选择。如果大家运行的是开发或者测试类工作负载,请选择“单可用区”选项。对于运行生产级工作负载的应用程序,则建议使用双或者三可用区方案。
若需了解更多详细信息,请参阅通过三可用区部署架构提升Amazon Elasticsearch Service可用性。另外,大家也可以在多个可用区中部署多个专用主节点,借此带来更好的Amazon ES SLA表现。
运营
AWS拥有一支24/7/365全天候运营团队,拥有管理全球数千Elasticsearch集群的经验,专门负责监控Amazon ES服务。如果您需要支持,可以从AWS Support获取跨学科专家团队的指导与帮助,以更低的成本更快实现业务目标。这里需要强调的是,统一的云基础设施技术支持也是重要的一个方面。Amazon ES并非孤立运行,其能够配合来自AWS的各种服务建立起的庞大且统一的云基础设施,从而大大简化技术支持流程。AWS还为客户提供企业级支持方案选项,您将拥有专门的技术客户经理——这位经理将成为您团队中的成员,致力于帮助您以AWS平台为基础获得业务上的成功。
Amazon ES还提供多种工具:以警报为例,它可帮助您针对数据中发生的特定事件采取对应的行动;而索引状态管理(允许用户自动执行日志输出等操作)则为大家提供多种现成的常见功能,您将无需自行创建。
在对部署体系进行监控时,Amazon ES还为大家提供丰富的Amazon CloudWatch指标。通过这些指标,您可以通过单一面板监控所有Amazon ES部署体系。关于更多详细信息,请参阅使用Amazon CloudWatch监控集群指标。
保持更新状态同样相当重要。为了保证能够访问Elasticsearch与Kibana的最新版本,Amazon ES为支持5.1乃至更高版本的域提供Elasticsearch就地升级选项。只要发行版通过了我们严格的安全评估,Amazon ES就能够访问开源社区中最稳定的最新版本。我们也为能够向客户提供这些安全可靠的AWS内部安全审计版本而感到自豪。
AWS集成与其他优势
AWS提供众多能够与Amazon ES实现无缝集成的服务选项。与广大客户一样,您可能需要监控AWS上原生云服务的运行状况与性能表现。大多数AWS服务会将相关事件记录到Amazon CloudWatch Logs当中。您可以据此配置一个日志组,通过CloudWatch Logs订阅将接收到的数据以流形式传输至您的Amazon ES域集群。
日志数据量可能出现大幅波动,因此我们有必要在大规模运营体系中考虑引入缓冲层。缓冲层将极大改善设计流程的稳定性。在设计规模化运营场景时,缓冲机制可以算是保证集群不会致因为高强度数据接入操作而意外崩溃的最简单方法(削峰填谷)。Amazon Kinesis Data Firehose与Amazon ES直接集成,并可作为服务中的一部分提供缓冲与重试功能。大家可以通过简单的设置将Amazon ES配置为目的地,而后数据就将以流形式传输至您的Amazon ES集群。
提高速度与敏捷性
在构建新的产品或调优现有解决方案时,试错也是一项必不可少的工作。我们需要保证在实验中支持快速验证失败,让各团队能够不断尝试新的方法以加快创新的步伐。在这一流程中,我们需要使用交付服务以快速创建环境,并在实验失败后通过新的方法重新开始下一轮试验,直至找到能够获得所需结果的可行实现途径。
利用Amazon ES,我们可以在“数分钟”之内配置出完整的Elasticsearch集群以及Kibana环境。如果当前测试无法得到理想的结果,则可通过一次API调用或者在控制台上单击几下,快速选择服务提供的其他实例类型、或者对集群进行横向/纵向规模伸缩。
在部署环境时,Amazon CloudFormation等工具允许我们通过JSON或者YAML格式的配置脚本创建完整环境。AWS命令行界面(AWS CLI)提供的命令行工具则可使用一组命令快速启动新域。至于希望在环境当中快速推动脚本化的用户,AWS CDK也为Amazon ES提供专用模块。
总结
技术团队的最大意义,在于专注于完成真正重要的创新工作,打造出能够为企业带来差异化竞争优势的产品及服务。在这方面,Amazon ES无疑是一款必不可少的工具,能够为您的搜索与分析基础设施带来强大的运营稳定性、安全性与性能支持。面对Amazon ES带来的以下收益,大家还有什么理由不踏上迁移之旅呢?
- 支持搜索、日志分析、SIEM以及其他多种工作负载。
- 使用UltraWarm的创新功能管理运营成本。
- 提供可满足PCI及HIPAA工作负载实际要求的高安全性环境。
- 能够将运营流程移交给经验丰富的服务商,由他们负责管理Elasticsearch的大规模运行。
- 提供免费插件,借此实现细粒度访问控制、基于矢量的相似性算法以及基于事件自动响应的警报与监控功能。
在起步阶段,大家可以尝试将Amazon ES与AWS Free Tier配合使用。该免费层每月提供最多750个小时的t2.small.elasticsearch实例免费使用时长,且每月提供10 GB的EBS存储(磁盘或通用)。
在接下来的几个月中,我还将发布一系列文章,具体介绍迁移模式并帮助大家了解如何迁移至Amazon ES。此外,AWS还拥有强大的合作伙伴生态系统与专业的服务团队,经验丰富且能力出众的专业人士将帮助大家顺利完成迁移工作。