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

    文章

    11326

    浏览量

    225836
  • API
    API
    +关注

    关注

    2

    文章

    2469

    浏览量

    66998
  • AWS
    AWS
    +关注

    关注

    0

    文章

    444

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Kubernetes Ingress Controller对比解析

    Kubernetes集群对外提供服务时,Ingress是标准的服务暴露方式。Ingress资源定义了HTTP/HTTPS路由规则,而Ingress Controller则是这些规则的实现者
    的头像 发表于 04-09 10:09 212次阅读

    Springboot+SpringData+SpringCloud微服务架构课程

    不再是加分项,而是必选项。而在 Java 生态中,SpringCloud 无疑是微服务领域的“事实标准”。然而,会用 SpringCloud 组件到真正落地一个高可用、高并发的微服务系统,中间隔着巨大的鸿沟。这正是“落地实战”
    的头像 发表于 03-19 16:08 316次阅读

    基于OpenTelemetry的全链路追踪微服务可观测性实践

    微服务拆分到第三年,我们的服务数量最初的5个膨胀到了47个。一个用户下单请求要经过API Gateway -> 用户服务 -> 商品服务
    的头像 发表于 02-26 15:43 532次阅读

    KubePi:开源Kubernetes可视化管理面板,让集群管理如此简单

    的用户也能快速上手操作。 功能全面 :多集群管理、权限控制到资源监控和故障排查,覆盖了Kubernetes日常管理的核心需求。 部署灵活 :支持Docker快速部署和Kubernetes原生部署
    发表于 02-11 12:53

    无质量损失的数据迁移:Nikon SLM Solutions信赖3Dfindit企业版

    使用转换器CAD数据从一个系统传输到另一个系统,但这往往会导致数据的质量下降。因此,该公司决定使用3Dfindit企业版CAD数据迁移到新系统,便不会造成任何质量损失。这样,在保持最高数据质量
    发表于 11-25 10:06

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

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

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

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

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

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

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

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

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

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

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

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

    树莓派部署 Kubernetes:通过 UDM Pro 实现 BGP 负载均衡!

    最近,我家庭实验室的架构核心切换为一组树莓派。尽管在树莓派上运行的Kubernetes发行版众多,但在资源受限的设备上运行Kubernetes时,控制平面的开销是一个常见挑战
    的头像 发表于 06-25 18:00 1066次阅读
    树莓派部署 <b class='flag-5'>Kubernetes</b>:通过 UDM Pro 实现 BGP 负载均衡!

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

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

    Kubernetes Helm入门指南

    Helm 是 Kubernetes 的包管理工具,它允许开发者和系统管理员通过定义、打包和部署应用程序来简化 Kubernetes 应用的管理工作。Helm 的出现是为了解决在 Kubernetes
    的头像 发表于 04-30 13:42 3208次阅读
    <b class='flag-5'>Kubernetes</b> Helm入门指南

    企业使用NVIDIA NeMo微服务构建AI智能体平台

    已发布的 NeMo 微服务可与合作伙伴平台集成,作为创建 AI 智能体的构建模块,使用商业智能与强大的逻辑推理模型 (包括 NVIDIA Llama Nemotron) 处理更多任务。
    的头像 发表于 04-27 15:05 1472次阅读