0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将微服务从Mesos DCOS迁移到Kubernetes

星星科技指导员 来源:嵌入式计算设计 作者:Maulik N Shah 2022-07-10 10:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

对于一些微服务,数据传输和稳定性会导致问题,特别是在用户尝试长时间获取更大数据的情况下。设备能够将数据推送到数据库,但数据加载和显示导致数据丢失或服务失败。由于微服务的 I/O 更高,CPU 和内存的更高使用率启用了负载均衡器,并最终导致更高的计费。

我们决定重新设计编排并找到 Apache Mesos 的替代方案。Docker Swarm 和Kubernetes是领先且高度使用的容器编排工具,用于 DevOps 基础设施管理工具。

在我们探索 Docker Swarm 和 Kubernetes 之前,我们定义了我们如何使用 Mesos。

阿帕奇梅索斯

它提供了以分布式方式运行容器化和非容器化服务的能力。Mesos 采用分布式内核设计,因此 API 编程可以直接针对数据中心进行设计。在我们的案例中,配置为主/从的 MESOS DCOS 是基于数据库请求并进行管理的。在服务失败时,Mesos master 永远不会自动重启服务,这增加了应用程序的停机时间。

Mesos 面临的挑战

现有基础设施经常出现服务故障,导致最终用户无法使用基础设施、数据丢失和更高的 AWS 账单。

现有基础架构和编排

云:AWS

CI/CD:詹金斯

编程语言:PythonJAVA、C、C++等。

源代码:Github

部署策略:自动化+手动

基础设施监控:自动化 + 手动(定期执行验证步骤)

当前的策略和工具

EC2 Auto Scaling 组

根据 CPU 使用率进行缩放

EC2 上的 DCOS 微服务

Slack 和通过电话/电子邮件通知

其他工具/服务:Splunk、Looker、HA Proxy、S3、Graphite、Grafana

挑战

CPU 使用率会根据客户和产品使用情况而波动

弹性伸缩后服务频繁失败

频繁停机

频繁的补丁

最终客户因稳定性和可用性而担心数据丢失

由于多个 EC2 实例导致的高 AWS 账单

码头工人群

Docker swarm 使用 Docker API 和网络概念,因此我们可以轻松配置和使用它。它的架构可以强有力地管理故障。在 Docker swarm 中,新节点可以作为工作节点或主节点加入现有集群。Docker Swarm 不允许集成第三方日志工具。与 Kubernetes 相比,Docker Swarm 在 AWS、Azure 和 Google Cloud 等不同云服务提供商上的轻松集成是不可用的。

Kubernetes

Kubernetes 易于配置且体积轻巧。在服务失败的情况下,Kubernetes 会执行自动缩放并保持服务可用。Kubernetes 用途广泛且应用广泛。主要云服务为 Kubernetes 提供自定义 master 支持。

另请阅读:关于 EKS(弹性 Kubernetes 服务)部署的分步指南

由于 AWS 为 Kubernetes Master 提供了一个平台,我们决定使用 EKS。

Amazon EKS 定价模型要求用户为每个 EKS 集群承担 0.20 美元/小时的额外费用。这让我们思考,但是当我们比较收益时,它不应该像听起来那么糟糕。作为用户,我们在单个集群上设计和部署了多个具有不同命名空间和 VPC 范围的应用程序。

我们为一个集群启动了该流程,迁移了一项服务,并在 Docker Swarm 和 Amazon EKS 上验证了稳定性。其他基础设施已经在 AWS 上,我们发现 Docker Swarm 配置会非常耗时,并且需要付出很多努力来监控和管理。

借助 EKS,我们得到了亚马逊的支持和指导,以设计和部署服务以及如何降低成本,因此我们决定使用 EKS。

从 Mesos 迁移到 Kubernetes

对于 EKS 上的环境创建、映射和部署,我们使用了 CloudFormation (YAML) 模板。

云形成

AWS CloudFormation 提供了一个基于 YAML 的自定义图形界面来创建、管理和修改大量 AWS 资源,并映射它们的依赖关系。由于 CloudFormation 是 AWS 的一项服务,因此任何新服务都可以使用。

诸如 Terraform 之类的选项是开源的,并且支持主要的云平台以将基础设施设置为代码,但我们使用了 CloudFormation,因为我们在 AWS 上拥有一切。

EKS 如何提供帮助

使用 EKS 可以减少 AWS 账单

更少的 EC2 实例

使用 EKS 进行自动缩放

EKS 监控服务和警报服务

​新基建

将 EC2 实例从 15 个中型减少到 3 个大型

移除石墨

使用 EKS 自动缩放

减少 Datadog 和 Pager 任务 警报配置成本和复杂性

基于 Prometheus + Grafana 的 Alert 配置

数据狗

我们为 Datadog 配置了 CloudWatch 的扩展,用于监控 EC2 实例和连接的 AWS 服务。我们在实例上安装了 Datadog 代理,可以在 15 秒内收集内存、CPU、存储、磁盘 I/O、网络等的系统级指标。

为了对 Kubernetes 集群进行额外的警报和监控,我们配置了 Prometheus + Grafana。

Prometheus 帮助捕获和保留 POD、容器、systemd 服务等数据。我们可以使用这些数据来分析应用程序和环境的稳定性和行为。

GRAFANA 使用 Prometheus 存储的数据,并提供统计数据和警报配置的图形表示,以便于评估。

迁移后最佳实践

维持 MTTR(平均响应/解决时间)

列出关键情况并报告

立即行动

事故报告

根本原因分析

定义流程的持续改进

实现战略

手动

定期执行验证步骤

观察到意外行为时进行调试

按照 Runbook 的定义步骤

如果未在规定时间内解决,请致电或发送电子邮件给开发支持团队

记录现有故障后,如果需要,重新启动服务

自动化实用程序

使用 Jenkins + Selenium/Dynatrace 持续执行定义验证工具

增强 Python 脚本的验证步骤覆盖率

Slack 频道的通知

传呼义务

行动

15 分钟内未解决的电子邮件

如果在一小时内未解决,则升级至 4 级

如果没有解决,升级到 5 级

启动并运行环境

最佳实践

观察环境几个小时

创建根本原因分析文档

获得开发团队确定的根本原因分析的批准

从开发团队收集分辨率信息

如果将来观察到相同的 RCA,请立即采取行动以最大程度地减少停机时间

更新运行手册以供将来参考

好处和应用

在我们的案例中,AWS 账单减少了约 40%,因为 EC2 数量从 15 个减少到 3 个

基于扩展配置的自动服务重启有助于提高应用程序的可用性

数据丢失和最终客户升级减少

更高级的监控方式,帮助 DevOps 工程师快速识别根本原因

结论

当我们谈论关于我们案例的结论时,我们发现 EKS 更有帮助,因为我们发现在编排更改后我们的应用程序更加稳定。借助 EKS,我们观察到了服务稳定性、自动扩展和负载平衡——这有助于我们保持产品可用性。同样,Kubernetes 和 Mesos 都提供了将应用程序部署为云上容器的设施。根据不同的应用需求,解决方案可能会有所不同。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11216

    浏览量

    222913
  • API
    API
    +关注

    关注

    2

    文章

    2147

    浏览量

    66217
  • AWS
    AWS
    +关注

    关注

    0

    文章

    443

    浏览量

    26301
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    香港服务器支持Docker和Kubernetes吗?

    在云原生技术成为主流的今天,Docker和Kubernetes(K8s)已成为现代化应用开发和部署的事实标准。对于选择香港服务器的开发者与企业而言,一个核心问题是:香港服务器能否完美支持Docker
    的头像 发表于 10-21 15:47 368次阅读

    华纳云VPS容器服务网格流量管理:实现微服务高效路由

    在云计算和微服务架构日益普及的今天,华纳云香港VPS凭借其优越的地缘优势和网络自由,成为众多企业部署容器化应用的热门选择。复杂的微服务架构带来了流量管理的巨大挑战。本文深入探讨如何利用容器
    的头像 发表于 10-16 17:09 379次阅读

    如何基于Nginx构建微服务网关

    今天,我分享我们团队如何基于Nginx构建了一个日均处理10亿+请求的微服务网关,以及踩过的那些坑。这套方案已经稳定运行2年+,经历过多次大促考验。
    的头像 发表于 09-02 16:29 626次阅读

    Jtti海外VPS微服务架构下的日志采集与分析优化方案

    随着跨境业务和分布式应用的普及,越来越多的企业在海外VPS上构建微服务架构,以提升系统扩展性和灵活性。然而,微服务化带来了一个新的挑战:日志数据分散在多个服务和节点中,若缺乏统一采集与分析机制,
    的头像 发表于 08-27 17:13 420次阅读

    如何在Keil中将NuMicro BSPArm编译器5迁移到编译器6?

    在Keil中将NuMicro BSPArm编译器5迁移到编译器6!
    发表于 08-20 06:29

    电商API的微服务架构优化策略

    ​ 随着电子商务的快速发展,API(应用程序编程接口)已成为电商平台的核心组件,负责连接用户、商家和后台系统。微服务架构通过应用拆分为独立、可扩展的服务单元,显著提升了系统的灵活性和可维护性。然而
    的头像 发表于 07-23 14:30 387次阅读
    电商API的<b class='flag-5'>微服务</b>架构优化策略

    Keil MDK到IAR EWARM:通过工程迁移实现项目资产的更好管理

    对于需要统一开发环境或涉及多核架构(如Cortex-A/R)的项目,越来越多的用户选择Keil MDK迁移到IAR EWARM。这就会面临着需要将之前的Keil MDK工程迁移到IAR EWARM的问题。本文
    的头像 发表于 05-08 09:03 998次阅读
    <b class='flag-5'>从</b>Keil MDK到IAR EWARM:通过工程<b class='flag-5'>迁移</b>实现项目资产的更好管理

    请问项目RT1024迁移到RT1064的最快方法是什么?

    我正在将我的项目基于 RT1024 迁移到基于 RT1064 的下一代产品,是否有快速的方法,或者我只能手动完成? 谢谢!
    发表于 03-31 06:15

    微服务器架构几种典型的基础框架,你了解吗?

    SpringCloud、Dubbo、Dropwizard、Akka等是常见微服务框架。SpringCloud基于SpringBoot,生态丰富;Dropwizard轻量且继承SpringBoot优点
    的头像 发表于 03-04 11:05 785次阅读

    如何项目IAR迁移到Embedded Studio

    本文描述如何IAR EWARM项目迁移到SEGGER Embedded Studio(简称SES)中。
    的头像 发表于 02-25 17:11 1054次阅读
    如何<b class='flag-5'>将</b>项目<b class='flag-5'>从</b>IAR<b class='flag-5'>迁移到</b>Embedded Studio

    使用 Flexus 云服务器 X 实例部署 Kubernetes 图形化管理平台

    Kubernetes 作为当今最流行的容器编排平台,随着云计算、微服务架构和 DevOps 文化的普及,Kubernetes 在自动化部署、扩展和管理容器化应用程序方面扮演着越来越重要的角色。未来
    的头像 发表于 01-21 16:14 553次阅读
    使用 Flexus 云<b class='flag-5'>服务</b>器 X 实例部署 <b class='flag-5'>Kubernetes</b> 图形化管理平台

    NVIDIA 发布保障代理式 AI 应用安全的 NIM 微服务

    NVIDIA NeMo Guardrails 包含全新 NVIDIA NIM 微服务,能够为各行业构建 AI 的企业提高 AI 的准确性、安全性和可控性。   AI 智能体有望成为能够完成各种任务
    发表于 01-17 16:29 281次阅读

    微服务容器化部署好处多吗?

    微服务容器化部署好处有很多,包括环境一致性、资源高效利用、快速部署与启动、隔离性与安全性、版本控制与回滚以及持续集成与持续部署。这些优势助力应用可靠稳定运行,提升开发运维效率,是现代软件架构的优质选择。UU云小编认为微服务容器化部署好处主要体现在以下几个方面:
    的头像 发表于 01-17 10:22 542次阅读

    容器化能替代微服务吗?两者有何区别

    容器化不能替代微服务,但它是微服务的解决方案之一。微服务架构的核心在于大型应用程序拆分为一系列小型、独立的服务,每个
    的头像 发表于 01-13 10:40 687次阅读

    宝藏级微服务架构工具合集

    宝藏级热门微服务架构工具包含Spring Boot、Eclipse Vert.X、Kubernetes、Tyk、RabbitMQ、Apache Kafka等。其中,Spring Boot简化了微服务
    的头像 发表于 12-21 16:33 896次阅读