2KB项目,专业的源码交易网站 帮助 收藏 每日签到

Facebook 如何将 Instagram 从 AWS 搬到自己的服务器

  • 时间:2019-01-23 18:34 编辑:2KB 来源:2KB.COM 阅读:308
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:Mig
英文原文:Migrating From AWS to FB

当Instagram在2012年加入Facebook,我们快速建立了大量的Facebook基础设施整合点,以加速产品开发,使社区更加安全。一开始我们通过使用ad-hoc端点在Facebook web服务之间有效传递来构建这些整合。不过我们发现这种方式可能稍显笨拙,还限制了我们使用内部的Facebook服务的能力。

2013年四月伊始,我们开始将Instagram的后端从Amazon Web Services(AWS)向Facebook的数据中心大规模迁移。这将缓和与其他内部的Facebook系统整合并允许我们充分利用为管理大规模服务器部署构建的工具。迁移的主要目标是在过渡中保持网站的完整服务,避免影响特性部署,最小化基础设施级别的改变来避免操作的复杂性。

起初迁移好像很简单:在Amazon的Elastic Compute Cloud(EC2)和Facebook的数据中心之间搭建一个安全的连接,一块一块地将服务迁移过来。简单。

不止如此。这个简单的迁移的主要障碍是Facebook的私有IP空间和EC2的私有IP空间冲突。我们只有一条路可走:先迁移到Amazon的Virtual Private Cloud(VPC),随后使用Amazon Direct Connect迁移到Facebook。Amazon的VPC提供了必要的伸缩寻址来避开与Facebook的私有网络冲突。

我们对这个任务望而却步;在EC2上运行着数以千计的实例,还有每天出现的新实例。为了最小化停工时间和操作上的复杂性,运行在EC2和VPC中的实例必须像是来自同一个网络。AWS没有提供分享安全群组的方法,也没有私有EC2和VPC网络的桥接。这两个私有网络通信的唯一方法是使用公共地址空间。

所以我们用Python开发了Neti—— 一个动态IP信息包过滤系统守护进程,由Hadoop的正式子项目ZooKeeper提供支持。Neti提供了安全群功能,并且为运行在EC2和VPC中的每一个实例提供单独地址。它管理着上千个本地NAT和每一个实例的过滤规则,允许使用独立的、平坦的"重叠"("overlay")地址空间进行安全通信。NAT规则在源实例和目标实例之间选择最高效的路径。VPC和EC2之间的实例通信使用公共网络,内部通信使用私有网络。这对我们的应用和后端系统是透明的,因为Neti在每一个实例上应用了合适的IP信息包过滤系统。

构成Instagram栈的各式各样的组件从EC2到VPC环境的迁移不到三周,这让我们相信如果没有Neti,时间会长很多。在此过程中,没有出现过重大的服务停工,同时也让我们很快意识到这是有史以来最快的VPC规模迁移。

随着VPC迁移的完工,我们的实例运行在兼容的地址空间中,Instagram准备开始完成向Facebook数据中心的迁移。

一个围绕EC2构建的工具集已经存在多年,它管理着Instagram的产品系统,包括配置管理脚本,用来供应的Chef("大厨”),从应用部署到数据库master提升等广泛的操作任务使用的Fabric。这个工具集对EC2做出的假定在Facebook环境中已经不再适用。

为了让我们的供应工具更加轻便,Instagram特定的软件现在都运行在Facebook数据中心服务器上的一个Linux容器中(LXC)。Facebook供应工具用来构建基础系统,Chef运行在容器中安装并配置Instagram特定的软件。为了提供跨越EC2和Facebook数据中心的的基础设施,我们现行的Chef recipes("大厨配方“)就是否允许它们支持Facebook内部使用的CentOS平台一并支持在EC2中使用的Ubuntu的新逻辑展开争论。

用于基础任务的EC2特定命令行工具,例如枚举运行主机和Chef“knife"工具内的供给支持,被同一个工具替代。这个工具被设计成一个抽象层,向EC2中使用的工具提供相似的工作流,减少了人的压力,缓和了向新环境的技术过渡。

我们在工具和环境到位后的两周内完成了Instagram的产品基础设施从VPC到Facebook的数据中心的迁移。

这个分阶段的工作达到了工程开始时设定的主要目标,是一次巨大的成功。此外,在计划和执行迁移的阶段中,团队运送了接近两倍的诸如Instagram Direct的主要特性和我们的用户基数。我们恪守最小化改变的客观初衷,所以过渡对于我们的工程团队几乎是透明的。

回顾一下这个一年之久的工程的一些关键点(key takeaways):

  • 计划支持新环境的最小改变, 避免 “while we’re here.”的诱惑。

  • 有时,疯狂的想法是有用的——Neti是一个证明。

  • 投身于打造你的工具;执行这样的大规模迁移,你最需要的是出人意料的曲线球。 

  • 重用团队熟悉的概念和工作流以避免向团队掺杂通信改变的复杂。

这是多团队和诸多个体贡献者的通力协作。在接下来的几周,我们将提供这个迁移工作更深入的介绍,时刻关注这个空间。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部