手记

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

一 公司及平台简介

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,服务治理,权限管控,监控日志告警…等一整套完善的云原生解决方案,且其是开源的,社区也非常活跃,在这里可以遇到志同道合的友人,一块探讨适合自己业务的云原生之路。

0人推荐
随时随地看视频
慕课网APP