写点什么

5 个小时,我们将 800 个微服务迁移到了云端

  • 2020-10-14
  • 本文字数:2703 字

    阅读完需:约 9 分钟

5个小时,我们将800个微服务迁移到了云端

9 月 16 日晚上,我们将 FINN 的生产环境从本地数据中心迁移到了谷歌云平台(GCP)。这意味着要迁移一个高流量的网站,该网站由一个复杂的分布式系统支持,由 800 多个应用程序、145 个数据库和 16TB 数据组成。我们在夜间有规划的停机时间窗口,但这一窗口越小越好。我们是怎么做的?请继续阅读本文!


关于将 FINN.no 移出我们的数据中心,并迁移到云平台中的内部讨论始于多年前。此后,我们一直在尝试各种云技术和云提供商。当我们在 2016 年选择 Kubernetes 作为平台时,我们的指导思想就是在云平台中运行 FINN。


从很久前开始,我们在思想上已经准备好将系统迁移到云端了,但一直没有制定真正实现这一目标的策略或计划。我们产品的某些部件早在 1998 年就开始使用了,因此迁移它们是一项艰巨的任务。但是,随着数据中心愈加不堪重负、对更灵活解决方案的需求,以及我们去年成功将 Sybase 从 Solaris 迁移到 Linux 的经验,都给了我们很多动力来认真考虑这一计划。


我们从 2019 年 1 月开始评估各家云提供商。候选名单包括 AWS、Google Cloud、IBM Cloud 和 Azure。我们参加了很多研讨会、会议和电话会议,评估了自行管理服务以及将我们的服务托管于其他云提供商等许多选项,最终我们决定采用“多云”方案,而选择 GCP 作为我们大多数服务的首选项。该方案最终于 2019 年 8 月中旬被 Schibsted 批准。

准备工作

迁移即将进行,我们必须制定一个计划,将我们拥有的一切转移到 GCP,同时保持 FINN 的正常运行。我们决定逐步迁移,使开发人员能够随着时间的推移迁移服务。但是,时间过得真快,我们意识到可用时间越来越少。基础架构的恶化、现有数据中心计划中的网络翻新以及资源的匮乏,使我们很难看到逐步迁移的成功前景。全球疫情大流行也让工作变得更困难了。我们被迫做出一些艰难的决定。


2020 年 6 月,我们了解到,我们需要采取更直接的方法,并确定向 GCP 迅速切换的日期。我们将目标日期定为 9 月 15 日,并获得了 FINN 管理小组批准,准许 FINN.no 停机一晚。7 月,云平台迁移被设置为 FINN 的第一要务;这意味着所有团队必须完成他们负责的所有与云平台迁移相关的工作,然后才能进行其他计划的任务。是时候该去(远程)工作了。


当我们决定放弃逐步迁移,决定快速切换时,摆在我们面前的艰巨任务就开始出现了。我们必须准备一个平台,使我们能够在一夜之间移动 800 多个应用、145 个数据库、超过 16TB 的数据以及 183 个虚拟机。FINN 的基础架构团队已经为云平台迁移做了很长时间的准备,但是这个决定使我们重新集中精力。现在,我们必须坚定地确定优先级,在必要时花时间深入探索技术,且始终保持目标清晰。在某些情况下,这意味着我们需要改变甚至放弃我们曾经投入大量时间的一些解决方案。


从夏天结束的那一刻起,我们就努力使这一计划取得成功。我们必须对我们需要花时间要做的事情和必须等待的事情做出艰难的选择。但是我们尽量不走捷径,坚持我们的原则,例如基础设施即代码。随着迁移日越来越近以及工作量的增加,我们的信心也随之增加。



该图显示了随着切换时间的临近,我们用于维护 FINN 基础架构的一个存储库的更改频率不断增长


对 FINN.no 的更改通常每天实行约 350 次。在切换前的最后 24 小时,我们决定建议使用“发行冻结”,这意味着那些既不能解决实时生产问题,又不能解决与云平台迁移有关的更改应等到第二天。切换的前一天,更改频率降低到一半左右,并且在云平台切换开始前几分钟,最后一个产品部署到了我们的原有内部基础架构中。

云平台切换

9 月 15 日 23:00 时,基础架构团队聚在一起(在线),准备就绪并检查切换前检查清单。由于每个人都在不同的地理位置,因此我们依靠详细的运行手册和视频会议进行协作。对 FINN.no 的更改通常在不停机的情况下进行部署,站点停机是 1 级严重事件。不过,这不是一个正常的星期二晚上。午夜时分,我们将用户重定向到静态后备页面后关闭了 FINN.no。半小时后,我们关闭了本地 Kubernetes 集群中的所有应用程序。



转换期间在 FINN.no 上显示的静态后备页面


然后我们准备迁移数据。Kafka 是我们微服务架构的基础之一。每天大约有 20 亿条消息(平均每秒 30,000 条)通过我们的 Kafka 集群,其稳定性对于 FINN 的正常运转至关重要。Kafka 小组迁移了我们的 Kafka 群集,该团队暂时以“延伸集群”配置运行该集群,将我们的本地数据中心和云平台作为单个集群。我们提前几周仔细计划和实施了延伸集群配置。Kafka 中的主题在切换前一周已复制到 GCP 的 broker 中,而 GCP 的 broker 在转换过程中成为主 broker。


需要持久存储的服务通常使用我们的 25 个 PostgreSQL 集群之一或我们的 Sybase 集群。我们通过预先在 GCP 中设置数据库副本,并在切换过程中所有应用程序停止后切换主数据库来迁移这些数据库集群。在切换当天的 01:35,Kafka 以及我们所有的 PostgreSQL 和 Sybase 数据库都运行在了 GCP 中。


移动持久数据后,我们触发了所有应用程序到新的 Google Container Engine(GKE)集群的部署。到 02:30,所有 800 个应用程序(超过 1500 个 Kubernetes 的 pod)都已部署到 GKE。至此,我们当晚只遇到了一些小的问题和延误,并已经准备好进行内部测试。


在切换之夜前,我们在所有领域的迁移准备和测试计划方面都做得非常出色,当午夜测试开始,看到绿灯亮起,我们的基础架构团队感到非常欣慰。对平台所有不同部分的自组织测试的效果甚至超出了我们的想象!


经过所有团队的良好团队合作,修复了一些应用部署、损坏的数据库表和其他一些小问题之后,云平台中的 FINN 于 04:43 启用,没有发生重大事故。



在 FINN.no 在云平台中于 04:43 启用后,通过某个负载均衡器的请求的速率增长曲线


我们为能够成功进行云平台切换而感到自豪!


没有 FINN Technology 的优秀人才,迁移不可能成功。我们在组织的各个部门都得到支持,当行动号召到来时,每个人都加入进来并做了应做的部分工作。在准备阶段,开发团队一直在努力处理防火墙、网络路由和负载平衡器,发现我们新的 GCP 基础架构中的问题,并与基础架构团队合作解决这些问题。在切换之夜的前几个星期,我们在工作时间还针对开发环境进行了转换演习。这次“排演”使我们充满信心,相信我们可以在指定的停机时间窗口内执行转换,帮助我们发现和纠正工具方面的问题,并且对于完善生产切换的运行手册非常有帮助。这两件事都有助于将风险降低到可接受的水平。


由于我们的迁移工作有一个硬期限,因此许多系统必须采用直接迁移方式进行移动。当我们稍微适应云环境时,我们期待将基础架构的这些部分也变得更加云原生化。


原文链接


https://medium.com/finn-no/how-finn-no-moved-800-microservices-to-the-cloud-in-5-hours-601067997620


2020-10-14 14:112235

评论

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

Proxyman Mac电脑最新破解激活(HTTP调试网络代理工具)

iMac小白

Real Glow for mac( AE真实发光效果模拟插件) v1.0.0汉化版

iMac小白

安全SCDN可以应对攻击吗

德迅云安全杨德俊

业务架构师之路

执于业务

架构师 业务 业务架构师

淘宝/天猫商品详情API:返回值参数详解及商业逻辑实现

Noah

基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践

汀丶人工智能

自然语言处理 nlp 信息抽取 词性标注 分词算法

阿里巴巴商品详情数据接口Python

tbapi

阿里巴巴 阿里巴巴API接口 阿里巴巴商品详情接口

削峰有高招!评价QPS降低85%的背后逻辑-京东零售技术实践

京东零售技术

前端 移动开发 大促 黄金流程

Shell错误:/bin/bash^M: bad interpreter: No such file or directory

百度搜索:蓝易云

云计算 Linux 运维 windows 云服务器

Vector Magic for mac(矢量图片转换工具) 1.2.0免激活版

iMac小白

MySQL常用图形管理工具

小魏写代码

VMware Fusion Pro 13 for Mac(VM虚拟机)中文破解版

iMac小白

网络安全训练营第 0 期 -- 毕业总结

楷鹏:)

mac电池最大充电限制工具AlDente Pro for Mac v1.22.2激活版下载

iMac小白

PS滤镜插件套装 Nik Collection 6 for Mac v6.1.0中文激活版下载

iMac小白

华为视频走近《鲁豫有约一日行》,看技术如何赋能艺术创作

最新动态

怎么用ETL工具实现MQ消息同步

RestCloud

MQ ETL 数据集成工具

行业首家!TCL实业通过国家大模型算法备案

Geek_2d6073

代码验证斯特林公式的准确性

fliter

推动海外云手机发展的几个因素

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

@所有人 您需要的 幻兽帕鲁服务器搭建教程 已上线

六月的雨在InfoQ

阿里云 ECS 计算巢 幻兽帕鲁

LoRA:语言模型微调的计算资源优化策略

Baihai IDP

人工智能 深度学习 程序员 AI LLM

Mac苹果电脑照片管理必备软件:Lightroom Classic 2022 for Mac最新激活版(LrC中文破解)

iMac小白

如何在春节实现弯道超车,你知道吗?

测吧(北京)科技有限公司

测试

Flicker Free for mac(专业AE视频去闪烁插件)兼容Big Sur v1.1.8激活版

iMac小白

聚道云软件连接器助力餐饮企业实现数字化管理

聚道云软件连接器

案例分享

耗时一个月我问遍了身边的大佬,零基础自学Java的路线,适用程序员入门&进阶,Java学习路线,2024新版

小明Java问道之路

DR5插件加强版 for Mac(ps磨皮滤镜) v5.0中文版

iMac小白

面试官:如何防止短信盗刷和短信轰炸?

王磊

Java 面试

行业知识图谱是什么

悦数图数据库

知识图谱

Real Glow for mac( AE真实发光效果模拟插件) v1.0.0汉化版

iMac小白

5个小时,我们将800个微服务迁移到了云端_云原生_Ingebrigtsen_InfoQ精选文章