金融级云原生:多活容器集群高可用建设实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文整理自蚂蚁集团金融云产品技术部SOFAStack产品专家俞仁杰在2020 GIDC全球互联网数据大会的分享。详细讲解了云原生架构下的多活高可用平台和产品建设相关经验和观点。
本文整理自 蚂蚁集团金融云产品技术部 SOFA S tac k 产品专家俞仁杰 2020 GIDC全球互联网数据大会 的分享 详细 讲解了 云原生架构下的多活高可用平台和产品建设 相关 经验和观点

截屏2021-11-19 下午3.21.26.png

过去几年是云原生理念高速普及的黄金时期。微服务、容器、无服务器架构、服务网格等新技术的出现,在技术社区中激起了一浪又一浪的创新热潮,很多开发者都对由此而兴起的一众技术十分追捧。


与此同时,云原生技术在企业实际场景中的实施落地,特别是在金融场景的实施落地,仍然面临诸多挑战。由于金融行业对性能和安全的严苛要求,目前不少的行业参与者对云原生技术仍然保持观望态度。


本次分享主要是关于云原生架构下的多活高可用平台建设的三部分经验和观点:


  • 联邦集群和容灾建设:多集群场景下的应用生命周期管理。
  • 统一流量治理和服务网格:异构多中心场景下的统一视角流量管控。
  • 单元化架构与混合云演进:参考架构与演进路线。

截屏2021-11-19 下午3.21.15.png

SOFAStack主张PaaS层产品体系建设,不仅需要有统一管控的联邦发布和多集群管理能力,还需要解决东西南北向的接入层流量统一治理能力,通过体系化的技术风险管理机制和平台工具,使全局架构迈向异地多活单元化混合云并提供极致弹性和容灾能力。



联邦集群和容灾建设



跨机房应用发布管理

在PaaS层面,我们在K8S上建设一层联邦能力,我们希望每一个机房都有独立的K8S群,因为一个K8S集群直接进行跨机房、跨地域部署是不可行的,无法满足容灾需求。于是我们的思路是通过建设多云联邦的管控能力,在PaaS层产品层针对Kubernetes做一些扩展,定义逻辑单元,定义联邦层资源等等,最终达成多机房多地域多集群的单元化架构,最终目的是在这些复杂的场景中为业务提供统一的发布管控和容灾应急能力。


其纳管的每个集群,均为完整、标准的Kubernetes集群及相关扩展。在集群之上,通过联邦管控平面,协调各集群资源、应用和配置,以提供应用变更管控、分组发布、镜像管理、流量调拨、元数据管理、集群资源管理等功能。用户可以通过控制台、命令行或SDK以标准方式对单集群及联邦管控层进行交互。

截屏2021-11-19 下午3.21.06.png

通过一套应用PaaS平台,提供统一的应用、资源管理,发布运维视图,实现多集群管理、跨集群应用运维发布、资源管理、流量管理。具体来说可细分为以下架构演进场景:


  • 同城双活(active-active)
  • 在同一个地域Region,建立两个或更多可用区下的多个Kubernetes集群。
  • 两地三中心
  • 在同城双活的基础上,增加一个异地机房,做数据和应用备份。根据网络延时和带宽情况,可选择异地热备、温备和冷备三种方案。
  • 在异地存在延迟的情况下、业务可接受的范围内,可以选择异地热备。正常情况下访问同城双活测,在容灾期间切至异地灾备机房,提供业务访问。
  • 异地多活(Multi-region active-active)
  • 数据层做分片(Sharding),不同的AZ可以划分为更多的逻辑单元(Logic Data Center),处理不同的数据分片。尽量保证数据访问的链路从接入层到应用层再到数据层不会出现跨可用区的调用。这种架构下,可以做到任意数量地域的多活。
  • 异构基础设施下的混合云
  • 通过Kubernetes屏蔽掉底层IaaS的差异性,可充分利用云上的资源,将业务同时在专有云和公共云上进行部署,并进行统一运维管控。在该场景下,可以帮助金融客户达到以下目的:
  • 减少开发、测试资源的投入:专有云部署生产应用,公共云按需部署开发测试应用。
  • 线下快速容灾需求:应国家监管需求,需要在线下部署一套环境,以应对云上的突发情况。
  • 弹性扩容:结合异地多活架构,使业务能够按需进行机房级的无限水平扩展。


作为分布式架构的平台管控层,还承担与各相关系统的对接能力,提供权限、资源、应用元数据、工作空间、部署单元等领域模型的管理能力;与监控分析平台对接,向用户提供完整集群资源和业务应用的可观测性;与高可用管理平台集成,提供完整应用层面的高可用风险保障管理能力。


高可用容灾解决方案

在蚂蚁SOFAStack的产品体系里,高可用管理平台是SOFAStack重要组成部分,面向用户应用的高可用管理平台,提供覆盖技术风险事件前、中、后的业务连续性全链路管理能力。在“应用上云”和“分布式架构”这两条路线中,技术升级面临各种高可用挑战。包括:应用质量挑战、问题定位能力挑战、故障应急能力挑战、监控发现能力挑战、性能容量挑战、以及单点可用行挑战。

截屏2021-11-19 下午3.20.59.png

风险事件发生前,通过流程化的日常业务巡检、故障演练、业务监控,建立风险发现的手段和体系,主动发现风险事件;当风险事件发生时,通过应急管理快速拉起应急流程,完成故障快速诊断、通过应急预案、容灾切换实现故障快速恢复;应急结束后,通过风险管理回溯、复盘等机制,加固风险事件发现和诊断能力,不断提供业务高可用水平;


  • 故障控制:技术风险的防范从“研发”和“质量”的阶段就开始了。对于重要产品的开发,其架构的升级和技术的选型,需要依靠技术风险同学的介入来完成,通过多人评审把关,从源头杜绝潜在的风险。在质量层面,除了维护产品基础的质量标准,还有实现自动化测试率的要求。在应用发布时,通过蓝绿、灰度或者多级灰度等方式,缩小产品业务变更的影响范围,从而降低其可能带来的业务风险。
  • 故障发现定位:蚂蚁的SRE同学通过“分析控流”、“链路分析”、“辅助定位”和“全链路监控”来完成故障的发现和定位。在日常的巡检工作中,产品潜在的风险能够及时、精准的被发现,也能够在第一时间被排查。
  • 故障应急:发布回滚,也就是使得一些成熟的故障风险解决方案进行快速的处置和闭环,从而形成“容灾切换”、“应急预案”、“单机治愈”这样的自动化手段,能够大大提高故障恢复和处置的效率。
  • 资金安全:在高可用管理体系中有“资金安全监控”和“资金安全应急”体系,能够最大限度避免资金安全层面存在的风险。
  • 容量成本:通过“全链路测压”、“应用资源管理”、“弹性伸缩”,高可用管理体系可用最优方案满足业务需求、降低单比交易的成本。
  • 能力保鲜:通过日常的“容灾演练”、“应用故障演练”、“资金安全演练”和“常态化测压”,不断测试各个系统中的高可用管理的能力,从而保证关键时刻以上五大能力的生效。



统一流量治理和服务网格



南北向七层流量接入

在 Kubernetes 体系中,抽象出了 Ingress 模型以应对七层流量管控需求,包括服务发现、服务暴露、灰度配置等,在社区和行业领域内均有多种主流技术实现。但在多地域多集群的南北向七层流量管控上,开源和行业领域尚未出现一个统一标准,想要完成一个多地域多集群的七层流量管控,需要从元数据、集群管控、多集群运维、统一视角的流量规则等多个层面建设,才能够应对全局架构下的流量治理和路由需求。

截屏2021-11-19 下午3.20.51.png

因此,配合联邦集群场景下的应用发布管控、容灾应急能力,SOFAStack 提供了可以跨地域跨 K8S 集群的统一七层流量接入能力,并提供单元化和非单元化两种模式,其中非单元化模式可以轻松的支持同城双活多活等“平行”容灾架构,单元化模式则可以基于业务语义(例如 UserID)进行定向单元推送和转发,保障业务的无限横向扩展,支持三地五中心等异地多活架构,同时还支持集群、单元维度的本地域流量收敛和权重配置,兼顾 SLA 和 RTO。


该模块基于统一接入的三重维度,主要围绕三个核心模型进行建设,分别为统一接入集群、统一接入实例和统一接入规则;统一接入集群主要负责 7 层负载均衡转发器 spanner(自研)在多地域多集群的部署、运维等整体生命周期事项,联邦视角;统一接入实例则从端口+协议两个维度进行统一接入集群的拓展,精准定义了流量入口;统一接入规则则对标 k8s ingress 模型,同时支持多种扩展语义,提供了全局视角的流量转发和治理能力。


在转发层面,我们利用了蚂蚁自研的 spanner 作为 7 层转发网关,spanner 已经经历了蚂蚁内部的大规模高并发场景,在蚂蚁的异地多活架构体系中扮演着重要角色,所有业务流量都先经过Spanner后再转发至各个业务系统,提供全局流量负载均衡功能同时,提供了更多金融场景下的多活容灾的特性,例如私有协议接入,安全防护,流量镜像,流量复制,LDC转发,蓝绿发布,容灾流量切换,终端全网广播,应用去中心化接入等能力。


东西向微服务治理

解决了南北向的接入层流量治理需求,到应用层的东西向服务管控方面,SOFAStack的实现思路是通过 Service Mesh 服务网格来实现云原生架构体系下的统一控制面与数据面通讯。


在控制面上,我们引入了 Pilot 实现配置的下发(如服务路由规则),在服务发现上保留了独立的 SOFA 服务注册中心。在数据面上,我们使用了自研的 云原生网络代理 MOSN(https://github.com/mosn)承载 ,不仅支持 SOFA 应用,同时也支持 Dubbo 和 Spring Cloud 应用。在部署模式上,我们不仅支持容器/K8s,同时也支持虚拟机场景。


我们的服务网格产品名是 SOFAStack 双模微服务平台,这里的『双模微服务』是指传统微服务和 Service Mesh 双剑合璧,即『基于 SDK 的传统微服务』可以和『基于 Sidecar 的 Service Mesh 微服务』实现下列目标:


  • 互联互通:两个体系中的应用可以相互访问。
  • 平滑迁移:应用可以在两个体系中迁移,对于调用该应用的其他应用,做到透明无感知。
  • 异构演进:在互联互通和平滑迁移实现之后,我们就可以根据实际情况进行灵活的应用改造和架构演进。


Service Mesh 在蚂蚁集团经过了2年的沉淀,我们探索出了一套现阶段切实可行的方案并最终通过了双十一的考验。在这个过程中,我们也愈发体验到了 Service Mesh 带来的好处,例如 MOSN 在大促中间完成了数十次的业务无感升级,见证了 Mesh 化之后基础设施的迭代速度。


我们判断,未来 Service Mesh 会成为云原生下微服务的标准解决方案,同时在微服务体系架构下的消息中间件、数据库、缓存等中间件接入层都将在Sidecar模式下沉,所以我们也会持续加大对 Service Mesh 的投入,包括接下来蚂蚁将和阿里集团一起深度参与到 Istio 社区中去,和社区一起把 Istio 打造成 Service Mesh 的事实标准。


截屏2021-11-19 下午3.20.40.png

单元化架构与混合云演进



面向终态的异地多活参考架构

首先解释一下什么是“单元化”。大家可能比较容易理解数据库层的“分库分表”(即Sharding),它通过分片的方式解决了集中存储的计算性能问题。“单元化”的核心思想是把数据的分片提前到了入口请求的分片,在机房的网络接入层将用户请求根据某个纬度(比如用户ID)进行Sharding,这就好比把每个机房就当做了一个巨大无比的有状态的数据库分片。例如,一个 UserID 尾号为 007 的用户通过手机端或网页域名发送服务请求,接入层就能够识别出应该将该请求路由到华东地区还是华南地区,当请求转发到某个地区的机房时,大部分请求处理工作可以在机房内部完成。偶尔会有一些业务可能会发生跨机房的服务调用,比如说数据在A机房的用户给数据在B机房的用户转账,这个时候就需要在机房上去做有状态的设计。

截屏2021-11-19 下午3.20.30.png

该架构解决方案下,可以避免跨机房、跨城市访问的延迟,真正实现异地多活部署,不但消除了传统“两地三中心”架构中的单独冷备中心,并提升了灾备高可用能力,无论在成本还是在伸缩性、高可用方面,都带来了巨大的优势:


  • 保证数据安全和业务连续性消除了传统架构下启用灾备时可能数据受损或丢失,因而无法保障金融级的数据完整性和一致性这一致命缺点。
  • 多机房、多地域无损容灾
    真正实现异地多活部署的单元化架构,支撑更稳定、更高效、更低成本的金融级服务,并极大提升了灾备能力到异地无损容灾级别。
  • 提升机房资源利用率消除了传统“两地三中心”架构中诸如存在平时不提供服务的单独冷备中心等不足,极大降低了运行成本。


在云原生的趋势浪潮下,全局架构迈向单元化架构的解决思路,在PaaS基础设施层面势必需要能够有一个全局的集群应用管理和流量治理平台,以及一整套能够感知单元化异地多活架构的中间件体系,并辅以一整套完整的技术风险保障体系和工具平台。


进而,通过单元化架构带来的机房级弹性和容灾能力,结合云原生架构、Kubernetes带来的异构基础设施屏蔽和资源托管能力,已经从技术层面上为混合云架构打好了坚实基础;从行业发展来看,未来各大金融机构一定会逐步接受从开发测试云、灾备云到多云多活的混合云架构落地场景。



展望:SOFAStack金融分布式架构

截屏2021-11-19 下午3.20.21.png

我们对SOFAStack的未来使命,定位为数字金融业务的跨云操作系统。这个操作系统会有三大关键能力,其中,混合云和可信原生是我们当前正在做的,我们希望这一套PaaS层的基础设施,能够基于标准、超越标准,其中关于跨云管控、稳定性和安全保障等能力能够做到原生拥有、开箱即用,最终使在其之上运行的金融业务,能够更好地承载数字化带来的机遇和挑战。


作为一套由蚂蚁完全自研的技术栈,SOFAStack吸收了关键金融交易系统的架构实践经验,包含构建金融级云原生架构所需的各个组件,既能保证金融交易的技术安全,同时帮助业务敏捷迭代,实现异地容灾、低成本快速扩容等,支持金融业务创新。


SOFAStack已经稳定应用在支付宝、花呗、借呗、保险、财富、支付宝国际等各个业务线,并全面开放给整个金融行业,如人保健康、南京银行、浙商证券、网商银行等数十家金融机构,在金融行业分布式中间件市场份额中占据领先地位。



- END -

截屏2021-11-19 下午3.20.09.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
17天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
59 2
|
15天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
6天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
8天前
|
Cloud Native 安全 Docker
云原生技术在现代应用部署中的实践与思考
本文深入探讨了云原生技术如何在现代应用部署中发挥关键作用,并提供了具体的代码示例来展示其实现。通过分析云原生的核心概念和优势,我们将了解如何利用这些技术来提高应用的可扩展性、可靠性和安全性。文章还将讨论云原生技术的未来发展趋势,以及如何将其应用于实际项目中,以实现更高效和灵活的应用部署。
|
15天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
42 5
|
17天前
|
运维 Cloud Native 安全
云原生技术在现代软件开发中的实践与挑战####
【10月更文挑战第21天】 本文将深入探讨云原生技术在现代软件开发中的应用,分析其带来的优势及面临的挑战。通过案例分析和数据支持,揭示云原生化转型的关键因素,并展望未来发展趋势。 ####
35 7
|
16天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
16天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
29 3
|
16天前
|
运维 Kubernetes Cloud Native
深入理解云原生架构:从理论到实践
【10月更文挑战第38天】本文将引导读者深入探索云原生技术的核心概念,以及如何将这些概念应用于实际的软件开发和运维中。我们将从云原生的基本定义出发,逐步展开其背后的设计哲学、关键技术组件,并以一个具体的代码示例来演示云原生应用的构建过程。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和实操指南。
|
17天前
|
Cloud Native 持续交付 云计算
云原生技术入门与实践
【10月更文挑战第37天】本文旨在为初学者提供云原生技术的基础知识和实践指南。我们将从云原生的概念出发,探讨其在现代软件开发中的重要性,并介绍相关的核心技术。通过实际的代码示例,我们展示了如何在云平台上部署和管理应用,以及如何利用云原生架构提高系统的可伸缩性、弹性和可靠性。无论你是云原生领域的新手,还是希望深化理解的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。