[第1部分,共2部分]

Hike博客发表于2012年12月12日,那时的读者很少。 到2016年,我们已达到1亿注册用户和400亿每月帖子。 但是,这种增长凸显了扩大基础架构的问题。 为了消除它,我们需要一个价格合理的高性能平台。 在2016年和2017年,我们面临着许多工作中断,我们不得不对此紧急采取措施,因此我们开始考虑各种选择。
我们需要一个可在可扩展且可靠的云环境中快速创建,测试和部署应用程序的云平台。 乍一看,似乎所有主要的云平台在很多方面都是相似的,但是它们有一些根本的区别。
我们将本出版物分为两部分:
- 选择GCP的原因
- 切换到GCP,无需停机
概念证明
我们首先从概念的正确性入手,在此过程中,我们检查了现有基础架构与Google Cloud云平台提供的服务的兼容性,并规划了未来发展的要素。
概念验证的关键领域:
⊹负载均衡器
⊹电脑
⊹网络和防火墙
⊹安全
⊹云可用性
⊹大数据
⊹帐单
对概念的确认包括测试和检查虚拟机/网络/负载平衡器的带宽,以及稳定性,可伸缩性,安全性,监视,计费,大数据和机器学习服务。 2017年6月,我们做出了一项重要决定,将整个基础架构迁移到Google Cloud云平台。
我们希望选择一个可以应对我们遇到的无数挑战的云平台:
⊹负载均衡器:
我们在管理本地HAProxy群集以每天处理数千万个活动用户连接方面遇到许多问题。 全局负载平衡器(GLB)解决了我们的许多问题。

使用全局GCP负载平衡,单个任播IP地址每秒最多可以将100万个请求转发到各种GCP服务器,例如托管实例组(MIG),而这不需要“预热”。 自从GLB使用池实现以来,我们的总体响应时间缩短了1.7–2倍,该实现允许您在多个源之间分配流量。

⊹计算机:
电脑本身并没有什么大问题,但是我们需要一个价格合理的高性能平台。 Google虚拟机的总吞吐量增加了1.3-1.5倍,从而减少了正在运行的虚拟机实例的总数。
Redis测试使用6个副本的集群(8个内核,每个30 GB)进行。 根据以下结果,我们得出结论,对于大多数REDIS操作,GCP最多可提供48%(平均)的性能改进,而对于特定REDIS操作则可提供77%的性能改进。
redis基准-h -p 6379 -d 2048 -r 15 -q -n 10000000 -c 100

Google Compute Engine(GCE)云计算服务通过使用以下内容在管理我们的基础架构方面提供了其他好处:
● 托管实例组(MIG): MIG帮助我们在具有多区域功能的强大环境中维护应用程序服务,而不是为每个区域分配资源。 MIG会自动识别并纠正组中无法运行的实例,以确保所有实例的最佳运行。
● 动态迁移:即使主机系统发生故障(例如更新软件或硬件),动态迁移也有助于维护虚拟机实例。 与我们以前的云合作伙伴合作,我们收到了有关计划维护事件的通知,并且被迫停止和启动虚拟机,以便切换到正常运行的虚拟机。
● 自定义虚拟机:在GCP框架内,我们可以利用处理器的处理能力和特定工作负载所需的内存量来创建自己的虚拟机。
⊹网络和防火墙:
管理多个网络和防火墙规则并不容易,而且可能会带来风险。 GCP网络VPC在默认情况下是全局的,无需额外配置且不更改网络带宽即可提供区域间通信。 防火墙规则为使用标记规则名称的项目提供了VPC灵活性。
对于具有低延迟和较高带宽的网络,我们被迫选择带宽为10 Gbit / s的昂贵实例,并在这些实例上激活扩展网络。

⊹安全性:
对于任何云服务提供商而言,安全性都是最重要的方面。 过去,安全性对于大多数服务来说是不可用的,或者只是一种附加选择。
Google云服务默认情况下是加密的。 GCP使用几种加密级别来保护数据。 使用多种级别的加密可为备份数据提供保护,并允许您根据应用程序要求选择最佳方法,例如,使用身份识别代理服务和默认情况下对不活动的数据进行加密。
此外,GCP还消除了绝大多数现代处理器(Meltdown,Spectre)中最近基于灾难性执行的灾难性漏洞。 Google 开发了一种新的二进制修改方法,称为Retpoline ,它使您能够规避此问题,并对用户透明地对整个工作基础结构进行更改。
⊹云可用性:
GCP资源的可用性与其他云解决方案提供商的可用性不同,因为大多数GCP资源(包括控制面板)都是区域性或区域性的。 我们必须从单独的帐户管理多个VPC,用于各个项目,这些帐户需要对等VPC或VPN连接以进行专用连接。 我们还必须将图像的副本保存在单独的帐户中。
在Google Cloud中,大多数资源都是全球性或区域性的。 这些资源包括控制面板(在一个屏幕上我们可以在其中看到项目的所有虚拟机),磁盘映像,用于存储数据的容器(大陆上的多个区域),VPC(但单独的子网是区域性的),全局负载平衡,发布和订阅等

⊹大数据:
我们从单一的,难以管理的分析配置转变为完全托管的BQ系统,从而在三个方面进行了改进:
●将查询处理速度提高了50倍。
●具有自动缩放功能的完全托管的数据处理系统。
●数据处理时间从数小时减少到15分钟。
⊹充电:
很难比较不同的云服务提供商,因为许多服务不是相似或可比的,对于不同的使用场景而言是不同的,并且取决于唯一的使用场景。
GCP好处:
● 长期使用折扣:达到某些阈值时,可增加虚拟机的使用。 对于会计年度大部分时间里执行的工作量,我们可以自动享受高达30%的折扣。
● 每分钟计费:在GCE中分配虚拟机时,会收取至少10分钟的费用,此后开始为虚拟机的实际使用按分钟计费。 这样就可以大大降低成本,因为即使计算机实例运行的时间少于一个小时,我们也不必支付一个小时的费用。
● 卓越的硬件,更少的实例:我们发现,对于几乎所有级别和应用程序,使用GCP,您都可以以相同的性能执行相同的工作负载,但是实例更少。
● 承诺而不是冗余:另一个因素是GCP制定虚拟机实例价格的方法。 在AWS中,降低虚拟机实例成本的主要方法是购买保留实例,时间为1-3年。 如果工作负载需要更改虚拟机的配置,或者我们不需要此实例,则必须以较低的价格在市场上出售预留实例。 GCP具有“承诺承诺折扣”,该折扣在保留处理器和内存资源时适用,与我们使用哪个虚拟机实例无关。
结论:
基于此详细分析,我们决定切换到GCP,并开始研究过渡方案和清单。 在下一篇文章中,我们将讨论在实施该项目期间学到的知识。