Swiftype 是一家搜索解决方案提供商,目前已为超过 10 万个网站和应用程序提供搜索服务。 Oleksiy Kovyrin 是其技术运营部门的负责人。近日,他发表了一篇博文,介绍Swiftype 为什么以及如何从EC2 切换到真正的服务器。
2012 年,Swiftype 创建之初选择了 Amazon Web Services 作为基础设施,因为云容易增加服务器,而又不需要自己管理硬件,并且没有前期成本。遗憾地是,虽然有些服务(如 Route53 和 S3)非常有用且稳定,但 EC2 却常常给团队带来困扰。基础设施的可靠性和稳定性决定着他们能否满足客户的性能期望和不间断服务的需求。但在 Amazon 云上,他们经常会遇到网络问题、VM 实例宕机问题、不可预见的性能衰减(可能是由同他们共享硬件的其它应用程序导致的)。这些问题占用了他们大量的时间。因此,他们决定放弃 EC2,转而使用真正的硬件。基于以往与托管供应商打交道的经验,他们决定选择 SoftLayer。
在迁移之前,他们有大约 40 个 Amazon EC2 实例,每周会遇到 2 到 3 次严重的问题,有时候每天都遇到。于是,他们决定切换到真正的硬件,并且切换过程不能中断现有服务。为此,他们从以下两个方面做了充分的准备:
- 连接 EC2 和 SoftLayer——他们在 SoftLayer 上的数据中心里构建一个新的基础设施架构,即可以以开发级负载运行所有关键生产服务的最小服务器子集。然后,他们在新旧数据中心之间构建了一个 VPN 隧道系统,用于确保两个数据中心的组件之间可以实现透明的网络连接。
- 修改应用程序架构——他们对应用程序进行了修改,确保它们可以在原有的云环境和新建的基础设施上并行运行。然后,他们构建了一个数据复制通道,用于确保云基础设施和 SoftLayer 部署能够保持同步。
Amazon EC2 的 Virtual Private Cloud(VPC)功能提供了一种连接 EC2 服务器和另一个私有网络的方法。但是,对于 Swiftype 的现有实例而言,他们需要停机才能以这种方式实现连接。在经过慎重地考虑和计划之后,他们意识到,真正需要跨数据中心互连的只有 MongoDB 节点,其它的都可以使用数据中心的本地服务,如 Redis 集群、搜索服务器、应用程序集群等。这样一来,需要互连的实例数量就相对较少了。因此,他们采用了一种简单但经证明稳定且有效的方式:
- 每个数据中心部署一个专用的 OpenVPN 服务器,用于实现所有客户端流量到其私有网络地址的转换;
- 每个需要连接到另一个数据中心的节点会建立一个 VPN 通道,并建立本地路由表,将所有指向另一个数据中心的连接正确地转发到那个隧道。
接下来是修改应用程序架构,这项工作的前提是深入了解每个组件。Kovyrin 指出,对于任意复杂度的基础设施,其迁移都必须有足够的时间和工程师资源,要仔细考虑应用程序和后端服务之间建立的每一个网络连接。该过程主要包含如下步骤:
- 所有无状态服务(缓存、应用程序集群、Web 层)均在两个数据中心单独部署。
- 对于每个有状态后端服务(数据库、搜索集群、异步队列等),他们必须考虑是否需要将数据复制到另一个数据中心,或者是否不得不承担数据中心互连造成的延迟。总之,VPN 是最后选项,尽量减少数据中心之间的流量和到无法复制的主服务副本的连接。
- 对于可以复制的服务,他们就复制,并确保应用程序服务器总是或优先使用服务的本地副本。
- 对于无法复制的服务(如搜索后端),他们修改应用程序,使用异步工作进程和队列实现数据复制。
经过一个多月的努力后,一切准备就绪。他们通过将 DNS TTL 调至几秒开启切换。在 EC2 流量已经很少之后,他们停用了旧数据中心,并将剩余的连接转发到新数据中心。由于 DNS 更新需要时间,这个过程持续了至少一个周的时间。
从 EC2 切换到真正的硬件之后,发生了以下几个方面的变化:
- 稳定性提升:严重故障次数由每周 2 到 3 次降到了每月 1 到 2 次;
- 性能提升:所有后端服务的性能都获得了提升,IO 密集型服务(如数据库和搜索集群)比 CPU 密集型服务提升更明显,更重要的是,性能有了更强的可预见性,不会突然出现与软件活动本身无关的降低或升高;
- 成本降低:月度成本至少降低了 50%;
- 配置灵活度提升,但配置时间增加了。
最后,Kovyrin 总结道:
如果你的目标从一开始就是业务构建,并且没有多余的工程师资源消耗在“云税(cloud tax)”上,那么,使用真正的硬件可能是更好的选择。
感谢徐川对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。
立即免费注册 AWS 账号,获得 12 个月免费套餐:点击注册
有云计算问题?立刻联系 AWS 云计算专家:立即联系
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论