写点什么

安畅迁移平台的云原生之路

用户头像
雪雷
关注
发布于: 2020 年 06 月 29 日
安畅迁移平台的云原生之路

一 公司及平台简介

1.1 安畅网络简介

安畅网络是中国市场领先的下一代云托管服务商(Cloud MSP),安畅以客户需求驱动,以腾讯云为底座,面向企业客户提供云原生技术服务和数字化解决方案,帮助客户上好云、管好云和用好云(为客户构建下一代云基础设施和技术中台、提供智能化全托管云运维和管理服务、开发现代化云原生应用),致力于成为 IT 新生态和产业互联网的连接器。

1.2 迁移平台是什么?

一站式迁移平台SmartAnt,是一款轻量级的迁移平台,能帮助用户快速将业务迁移上云,摆脱繁琐的迁移上云过程。通过可视化界面,一键迁移,支持主机/数据库/对象存储等迁移类型,从根本上颠覆传统云迁移所带来的困扰。

一键式迁移流程,高效快捷,能让任何人具备“云计算迁移工程师”的能力,帮助更多个人、企业用户打通通向云端的“荣耀之路”,助力企业数字化转型。

二 SmartAnt 的云原生之路

2.1 平台发展历程

  • 迁移工具

在接触很多客户想上云,一部分是进行微服务化改造,一部分由于历史原因或其他因素需要以主机为单位进行迁移上云,最开始是以 Windows/Linux 迁移小工具,但是对于大批量,或后期可视化工具已经无法满足,需要平台化。

  • 单体迁移平台

单体应用,主要为迁移调度与 Linux/Window 迁移,迁移控制逻辑由平台下发,客户无需在服务器进行操作,客户反馈也需要其他迁移,如:数据库/对象存储等,需要新增其他模块。

  • 模块拆解

新增数据库迁移模块与对象存储迁移模块,此时后台也新增了数据库与对象存储的调度功能,尽管默认拆解,对于批量上百台主机迁移,或海量对象存储迁移,需要平台提供稳定且高效的调度及并发,需要微服务化。

  • 容器化改造

后端对应每个业务进行拆解为对应调度微服务,针对 Linux/Windows 拆解为 Linux 迁移微服务,Windows 迁移微服务,对象存储微服务,数据库迁移微服务等,利用 K8s 原生 HPA,根据监控指标动态扩所容,以达到支持海量主机数据迁移。

  • 在未来

针对异步及定时任务利用 Knative 改造完成。

2.2 微服务改造

  • 基础架构演进

一路走来,从工具->单模块单体->多模块单体->微服务架构,基础架构也在不断变更,从 IDC 物理机房服务器自己完成高可用架构部署->云服务器,利用公有云资源提供的 LB 及其他 SaaS 产品完成高可用架构->容器的基础编排基础设施 Kubernetes,为满足市场需求不断进行技术革新与演进。

  • 遇到的困难

在微服务改造过程中并不是一帆风顺,云原生架构不可变得基础设施,声明式的 API,微服务,服务网络等

  • 如何保证基础设施的高可用?

在此利用了开源的 KubeSphere 一键部署高可用架构,配合公有云的或私有云的 LB 来实现高可用架构,快捷高效,后期支持动态的新增 Node 节点,免去了 K8s 基础设施部署的复杂性,如图为私有 LB 添加的 K8s 集群 master 的 api-server 的端口,保证集群高可用。


存储利用云盘自建 Ceph 集群,KubeSphere 提供丰富的存储插件,快速方便的继承到 K8s 的 Storage Class 中,供应用持久化数据。


  • 如何进行不同环境的权限管控?

在此利用 Kubesphere 对原生 K8s 的 RBAC 基于工作空间层的权限管控,更细粒度的进行用户/角色/权限的分配,dev 环境为业务开发环境,开发人员授权可以登录查看容器日志等,test 环境为测试人员进行业务功能测试,prod 环境为线上正式环境,只有管理员可以登录维护。


  • CI/CD 如何做?

目前针对与 Dev 环境由于为协同开发,使用的时候 Gitalb CI,利用 GitOPS 理念,端到端的开发自动部署,正式环境利用的 KubeSphere 的 Devops 项目流水线,天然继承,无需多余扩张即可实现应用发布上线,下图为 KubeSphere 的 Devops 流水线,WEB 简单配置即可生成 Jenkinsfile,快捷方便,一部分应用也使用了 Argo CD,在未来也在尝试 Tekton 等。





  • 服务怎么治理?

针对南北流量,利用开源 Kong 提供同样 API 网关,基础设施下沉到 K8s 内,提供流量控制,黑白名单,认证鉴权等功能,在服务间东西流量利用了 Istio 来实现服务治理,负载均衡/流量监控/链路追逐/熔断降级等,可喜的是 KubeSphere 非常方便可以提供服务治理能力,只需将自己的业务应用制作成 Helm 的 charts 来提交到平台上,一键部署且具备服务治理能力。

 


下图为服务器主机迁移微服务的服务治理图,其允许您连接、保护、控制和观测微服务,在较高的层次上,Istio 有助于降低这些部署的复杂性,并减轻开发团队的压力。

透明的分层到现有的应用程序上,Istio 的多样化功能集使的我们能够成功高效地运行分布式微服务架构,并提供保护、连接和监控微服务的统一方法,通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行为进行细粒度控制。在实际应用中,迁移存在网络异常情况,该步骤可以设置重试,从而避免单词调用异常导致整个迁移过程的失败。

对于高并发的后端服务,配置服务降级及熔断策略,保障核心调度可以稳定正常的工作,配合 K8s 的 HPA,动态拉起多个应用减轻请求压力,一整套的治理措施使得故障自愈能力大大提升,无需过多的人工接入。



Istio 强大的追踪、监控和日志记录。通过 Istio 的监控功能,可以让我们将更多的镜像专注于迁移平台的开发和测试,使得我们能够在很长的请求调用链中能清楚的了解服务性能,及快速定位排错。


Istio 的可观察性使得应用的调用链不再是黑盒,且将其功能下沉到基础设施,应用无需做多的变更,即可轻松接入,该功能能让我们更有效地设置、监控和实施服务上的 SLO。同时在使用 Istio 中,我们为后端请求设置灵活的策略控制,重定向流量以供测试,配置熔断策略保障服务可用性,双向 TLS 保障网格内的服务调用安全。

  • 如何灰度上线?

对于频繁更新的应用,如果灰度上线,在上面我们服务利用 Istio 进行治理,其以及具备来金丝雀发布的特性,可以非常方便的在 KubeSphere 上通过拖拽的方式进行不同版本应用组建的发布上线。



  • 如果监控告警?

目前不同纬度的监控有不同类型的告警支持,K8s 层面使用 KubeSphere 内置的监控,希望后期可以开发更多告警方式。



  • 日志如果监控?

针对日志监控,KubeSphere 也提供来开箱即用的解决方案 FluentBit Operator,在集群所有节点以 DaemonSet 运行,并统一部署配置 Fluent Bit,我们的迁移平台在容器化的时候就一些考虑到后期的日志继承方式,为适配多种,将日志分为两个地方输出,一份输出到 stdout,一份以文件形式持久化到 logs 目录,万一需要 filebeat 方式继承,因此无需后期对应用做其他修改,即可借助 KubeSphere 的日志收集,方便快捷的在平台上查看日志,当然也可以将日志发送到集群外的 ES/Kafka 等存在中,持久化保存,以供后期分析处理,同时 KubeSphere 提供来一键日志定位特性,利用该特性,是的我们可以从日志输出信息发现问题后,一键跳到容器,或项目的详情页,快速定位容器问题。



当然还有例如应用发布等其他特性功能,都可以帮助我们更快的去完成云原生应用改造。

三 KubeSphere 排错实战三连载

当然在真实的微服务改造及应用中困难也不少,之前也整理了实战排查三连载,希望可以帮助到用 KubeSphere 的朋友。

四 在未来

目前 SmartAnt 的 SaaS 版本完全免费供企业及个人使用,私有定制化版本目前已支持 Openstack 无缝迁移及 Any to image,最终可以利用将镜像导入其他私有化或共有平台,另外公司致力于多云管理,自研SmartOps云管平台,助力企业更好的多云管理。

KubeSphere 助力 SmartAnt 将更多的精力放在迁移平台的逻辑业务开发,提供从基础设施高可用部署,CI/CD,服务治理,权限管控,监控日志告警...等一整套完善的云原生解决方案,且其是开源的,社区也非常活跃,在这里可以遇到志同道合的友人,一块探讨适合自己业务的云原生之路。

 

发布于: 2020 年 06 月 29 日阅读数: 156
用户头像

雪雷

关注

stay hungry stay foolish 2019.08.16 加入

Devops,python,shell,云原生,云架构,kubernetes https://github.com/redhatxl

评论

发布
暂无评论
安畅迁移平台的云原生之路