乐趣区

关于阿里云:微服务平滑迁移上云最佳实践

作者:草谷

背景

许多企业在做微服务架构革新的时候,在自建还是上云的抉择上难以决策,抉择上云后,在微服务上云过程中,如何可能做到不影响业务状况下平滑迁徙呢,通过浏览本文,你能够疾速取得以下知识点和能力:

  1. 理解微服务上云给企业带来的价值
  2. 理解微服务迁徙过程中带来的挑战
  3. 把握通过 MSE 提供的迁徙计划平滑上云

微服务迁徙上云背景

自建微服务平台面临的问题

在晚期的时候,因为平台型 PaaS 设施服务还不够欠缺,有不少企业的微服务平台是自建的,咱们明天一起看下,这些企业在运维自建微服务组建过程中,遇到哪些比拟典型的问题:

这张图是一个典型的微服务架构,次要蕴含接入层和微服务中心两块,终端的 HTTP 申请进入到接入层,这层采纳肯定的调配算法将网络申请散发到后端的多个服务器,后端的服务器组成了一个微服务中心,外面部署着大量业务机器和注册配置核心等微服务组件,这些组件根本采纳的都是开源组件:

  • 微服务组件复杂度高,保护难
  • 网关和注册配置核心是微服务架构中外围的组件,要保障高性能,高可用稳固的设计,必然导致组件的复杂度晋升,同时部署构造要保障多级容灾,这也加大了整体的保护难度。
  • 自建组件无业余运维,线上稳定性无奈保障
  • 线上呈现问题时,须要可能相熟组件设计的业余运维同学参加排查,否则难以疾速找到问题,导致故障复原工夫缩短。
  • 开源自建组件性能缺失,问题反馈周期长,无奈满足企业需要
  • 采纳开源的组件,呈现问题,往往短少专职保护跟进,凭借社区的志愿者激情,一些紧急问题很难失去及时反馈。
  • 互联网的流量难以预知,无奈精确做容量评估
  • 自建组件在面临极其流量时,如果筹备大量机器应答,峰值过后又是一笔节约,无奈做到资源的高效利用。

MSE 提供一站式微服务平台

针对下面这些问题,MSE 提供了一站式的微服务平台,集成了微服务外面罕用外围的组件,对立构建运维:

  • 托管易用免运维
  • 提供白屏化监控告警、容灾、宕机重启、扩缩容等能力,缩小运维老本,有技术兜底,让客户专一于业务开发自身。
  • 高性能高可用
  • MSE 基于开源在性能和稳定性上做了大量优化,大规模服务数据下 SLA 99.95%。
  • 平安防护
  • 网关反对多种服务起源,丰盛的路由策略和认证鉴权形式,可对不同架构、多个业务域的服务调用进行对立的配置、治理和爱护。
  • 无厂商绑定
  • 100% 兼容开源,代码无需更改,实例无需停机即可平滑迁徙。

企业上云案例

MSE 服务了大量的微服务架构企业,这里给大家介绍两个典型的标杆客户,他们通过 MSE 解决了一些在它们畛域外面遇到的微服务问题,大家能够看看是否有值得借鉴的中央。

  • 互联网金融 - 上海费芮

上海费芮是一家提供业余互联网金融服务的企业,提供业余的在应用 MSE 之前,他们是本人部署的 Nginx Ingress 作为流量网关的,面临以下问题:

  • 网关运维能力有余,不足业余的网关运维人员
  • 原生的 Ningx Ingress 部署在用户集群外面,稳定性和平安容易受业务影响
  • 原生的 Ningx Ingress 的性能无限,例如短少 TLS 版本设置,IP 黑名单等

在迁徙到 MSE 云原生网关后,这些问题都失去了解决,在整个迁徙过程中,改变老本也非常低,MSE 云原生网关齐全兼容 Nginx Ingress 注解,无需二次编辑路由规定,MSE 提供了网关的全托管服务,将网关与业务集群拆散,大幅度提高了稳定性,安全性。

  • 批发行业 - 斯凯奇

斯凯奇是批发行业里十分有名的鞋类品牌,它的架构就是典型的微服务架构,接入层曾经迁入了 MSE 云原生网关,微服务中心采纳的是 Dubbo+MSE Nacos,配置核心采纳的也是 MSE Nacos。

MSE 给斯凯奇提供了对立的微服务路由、流控、平安治理,丰盛的可观测等能力,不便内外部多零碎间的集成,极大进步了中台服务的开发效率,并升高运维老本,顺利应答双 11 流量洪峰,撑持斯凯奇双 11 业绩超 12 亿的交易系统。

迁徙上云常见问题

MSE 反对了许多企业把微服务平台迁徙上云,在这个过程中,遇到了不少的问题,次要分为以下几点:

  • 云上云下数据不统一
  • 自建网关外面有大量的路由配置,微服务外面注册核心和配置核心外面存储着大量的地址信息和配置信息,这些都是微服务运行时必不可少的,这些数据在云上都是没有的。
  • 迁徙操作过程简单,如何切流能力业务不中断
  • 迁徙过程必然存在云上云下组件同时工作的状况,流量如何无损的从云下切到云上呢,如果呈现问题是否可能疾速回切止损呢。
  • 微服务组件兼容问题,客户端须要改变
  • 云下和云上是否存在兼容问题,MSE 是否兼容自建 Eureka,客户端是否须要做代码层面的改变等。

MSE 平滑迁徙计划

针对迁徙过程中遇到的常见问题,MSE 提供了一套迁徙工具:MSE Sync,并给出了残缺的迁徙计划,次要包含注册配置核心及网关的迁徙。在实际操作过程中,个别会先从注册配置核心进行迁徙,而后再做接入层的迁徙,接下来,给大家介绍下每个模块的具体迁徙计划。

注册配置核心平滑迁徙

MSE Sync 能够平滑的把云下的注册配置核心迁徙到云上,它次要提供了以下的能力:

  • 反对双向实时同步
  • 同一个服务能够从云下同步到云上,也能从云上同步到云下,反对两边同时操作一个服务不呈现抵触。
  • 部署操作简略,一键生成同步配置
  • MSE Sync 的同步配置,通过管制台上云迁徙性能一键生成,默认同步全量服务,无需额定编辑配置。
  • 反对客户端灰度切换,不中断业务
  • Provider 和 Consumer 无需按序切换,无需全量同时切换,可任意节点灰度切换,进而放弃业务的连续性。
  • 反对多种异构 / 同类型注册配置核心迁徙
  • 反对 Eureka/Nacos/ZooKeeper 罕用注册配置核心迁徙到 MSE,兼容原生客户端无需批改 API。

MSE Sync 的同步原理,是通过模仿客户端对须要同步的数据进行实时监听,当数据发生变化之后,把对应的数据公布到指标集群中,同时也解决了环同步的问题,反对双向同步。通过 MSE Sync 将云上云下集群数据放弃同步,从而实现了客户端能够任意切换迁徙的目标,对于业务来讲,就当作一次失常的公布即可。

云原生网关 MSE Ingress 平滑迁徙

从 Nginx Ingress 迁徙到 MSE 云原生网关的过程中,为帮忙用户理解各迁徙阶段,咱们梳理了各个阶段的简要阐明,且思考到在用户迁徙后能依然可能复用已有的 SLB,升高迁徙老本,MSE 云原生网关也提供了“SLB 迁徙”性能,让用户可能不便的将流量分过程迁徙到 MSE 云原生网关。

  • 反对主动监听路由配置
  • 在网关实例创立胜利后会监听指标 K8s 集群的 Ingress 资源,主动实现 Nginx Ingress Annotation 的转换
  • 反对权重切流,可灰度可回滚
  • 在 MSE 云原生网关控制台中逐渐增大权重值直至 100 即可实现最终的切流
  • 利用侧无需做任何批改
  • 迁徙过程利用侧无需做代码层面批改即可实现配置和流量的迁徙
  • 迁徙阶段总览

从上图中能够看到,尽管迁徙分成了 5 个阶段,但真正在“迁徙”阶段,用户只须要执行一步操作即可实现 Nginx Ingress 配置到 MSE 云原生网关的迁徙,十分简便快捷

  • 迁徙合成

从 Nginx Ingress 迁徙到 MSE 云原生网关的具体流程图如下:

MSE Sync 上云迁徙实际

咱们通过一个具体的迁徙案例,让大家更有体感的感触整个迁徙过程,案例的场景是 Dubbo+ZooKeeper 部署的一个微服务利用,连的是自建 ZooKeeper,通过 MSE Sync 进行服务数据的迁徙,最终把 Provider/Consumer 切换连到 MSE Zookeeper,整个迁徙期间放弃服务不中断。

操作步骤

步骤 1 : 规格评估

迁徙之前,须要先购买 MSE ZooKeeper,MSE 提供了规格评估的性能,通过输出节点数或者自建配置,MSE 会生成一个倡议的配置给到你。

步骤 2 : 下载启动 MSE Sync

MSE Sync 反对 2 种部署模式,一种是通过容器部署,一种是通过 tar 包部署,并制作了具体的 Step By Step 的操作流程,点击“迁徙配置”,你能够跟着下面的步骤进行操作。

步骤 3 : 生成一份 Sync 迁徙配置

部署完了 MSE Sync 后,须要生成一份 Sync 配置,次要作用是通知 MSE Sync 要同步的源和指标集群,指标集群须要提前购买好,在创立配置的步骤外面,能够主动下拉抉择。这里须要留神一点,就是 MSE Sync 部署的机器,网络须要能同时与源 / 指标集群连通。

点击下一步,会主动生成一份 YAML 格局的配置,默认配置会同步所有的 Dubbo/Spring Cloud 服务,并且是双向同步的:

clusters:
  - clusterName: mse-cn-7pp2wvnwl01
    connectKeyList:
      - mse-xxxxx-p.zk.mse.aliyuncs.com:2181
    clusterType: ZK
  - clusterName: zk_source
    connectKeyList:
      - 127.0.0.1:2181
    clusterType: ZK
    namespace: ''
tasks:
  - source: zk_source
    destination: mse-cn-7pp2wvnwl01

步骤 4 : 导入 Sync 迁徙配置实现同步

将上一步的配置,导入到 MSE Sync,提供了两种导入形式:

依照你的爱好抉择,导入配置是动静失效的,也就是,执行完导入之后,立即会进行数据的同步,无需重启过程。

步骤 5 : 批改 Endpoint 重启实现迁徙

最初一步,数据同步完了之后,批改 Consumer/Provider 的 Endpoint,把自建的 ZooKeeper 地址,改成 MSE ZooKeeper 地址,重启客户端即可实现迁徙,重启的程序和数量没有要求,当作一次失常的配置批改公布即可。

以上案例的操作大略 10 分钟即可实现,十分的便捷疾速,有趣味的同学能够跟着操作一下,如果有一些定制的迁徙需要,例如须要单向同步,同步非 Dubbo/Spring Cloud 服务等,MSE Sync 提供了一些罕用的参数进行配置,具体可见 MSE 的官网文档:

《MSE Sync 简介和部署》

https://help.aliyun.com/docum…

MSE 专业版重磅推出!

MSE 专业版,更具性价比,可间接从根底版一键平滑降级到专业版!

点击此处,即刻查看~

退出移动版