InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

Swiftype 为什么从 EC2 切换到真正的服务器

  • 2015-03-26
  • 本文字数:1858 字

    阅读完需:约 6 分钟

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(微信同手机号)。

2015-03-26 00:351870
用户头像

发布了 1008 篇内容, 共 361.7 次阅读, 收获喜欢 334 次。

关注

评论

发布
暂无评论
发现更多内容

分析型数据库:分布式分析型数据库

星环科技

分析型数据库

灵活、快捷、低运维成本的数据集成方法:数据联邦架构

星环科技

数据集成 数据联邦结构

共建清洁能源岛!华为中国数字能源旗舰峰会海南站盛大举行

Geek_2d6073

高性能、快响应!火山引擎ByteHouse物化视图功能及入门介绍

字节跳动数据平台

大数据 数据仓库 云原生 Clickhouse 企业号 4 月 PK 榜

用C++编写一个简单的发布者和订阅者

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

Wallys/DR7915/MT7915/MT7975/industrial mini pcie card /support openwrt

Cindy-wallys

MT7975 MT7915

临沂等级保护测评机构有几家?在哪里?

行云管家

等保 等级测评 临沂

超级App的构建与技术驱动

没有用户名丶

支持多模型数据分析探索的存算分离湖仓一体架构解析(上)

星环科技

湖仓一体

【Python实战】Python采集大学教务系统成绩单

BROKEN

三周年连更

【获奖案例巡展】信创先锋之星——浙江省某市区视频能力中心

星环科技

大数据

软件测试/测试开发丨Docker 容器技术与常用命令

测试人

Docker 软件测试 自动化测试 测试开发

不愧是阿里内部新产springboot实战派文档!干货满满,不讲一句废话

采菊东篱下

微服务

阿里RocketMQ创始人首次分享出这份RocketMQ技术内幕神级架构手册

做梦都在改BUG

Java RocketMQ 消息队列 消息中间件

AppleParty(苹果派)v3 支持 App Store 新定价机制 - 批量配置自定价格和销售范围

37手游iOS技术运营团队

In App Purchase AppleParty App Store Connect API 批量创建内购IAP app store

anyRTC快对讲融合通信指挥调度平台

anyRTC开发者

音视频 融合通信 快对讲 视频监控 综合调度

宝塔人机识别验证:如何确保人脸识别的安全性?

百度开发者中心

人脸识别 人工智能’

【获奖案例巡展】科技向善之星——中航电梯5G+大数据管理平台

星环科技

大数据管理

面试官:HashMap线程不安全体现在哪里?

做梦都在改BUG

Spring Cloud Stream:打造强大的微服务事件驱动架构

做梦都在改BUG

Java 微服务 spring cloud stream

厦门等保备案平台是哪个?多久可以办好?

行云管家

等保备案 厦门

内蒙农信携手星环科技建设农信大数据平台,激活金融业务创新

星环科技

数据要素流通

iOS MachineLearning 系列(6)—— 视频中的物体轨迹分析

珲少

ShareSDK Google平台注册指南

MobTech袤博科技

神了!阿里P8级数据库专家手写出了这份438页数据库高效优化手册

做梦都在改BUG

Java 数据库 sql 性能优化

屌的一批!阿里P8推荐的Spring Cloud实战笔记

小小怪下士

Java 微服务 SpringCloud

什么是存算分离架构?

星环科技

存算分离

火山引擎DataTester智能发布平台:智能化A/B实验,助力产品快速迭代

字节跳动数据平台

大数据 AB testing实战 A/B 测试 企业号 4 月 PK 榜

python游戏开发-pgzero

AIWeker

Python python小知识 三周年连更

在高校内投放共享电单车有什么优势

共享电单车厂家

共享电动车厂家 景区共享电单车 共享电单车投放 校内共享电单车 共享电单车优势

支持多模型数据分析探索的存算分离湖仓一体架构解析(下)

星环科技

湖仓一体

  • 扫码添加小助手
    领取最新资料包
Swiftype为什么从EC2切换到真正的服务器_最佳实践_谢丽_InfoQ精选文章