项目背景
经过十几年的快速发展,云计算颠覆性地改变了全行业的IT基础设施,被认为是现代企业数字化转型的必由之路。证券行业也正紧锣密鼓地推动云计算落地:组建云技术团队、搭建企业云平台并推动各业务系统迁移上云。其中,中间件上云是IT业务系统上云的关键一步。作为构建IT业务系统的重要一环,中间件对性能和稳定性的要求非常高。一直以来,云上中间件的容量管理、高效交付和自动运维都是业界的难题。
国信证券私有云平台“鑫云”提供中间件服务目录,经过多年的发展已支持超过10种常用的中间件。随着对平台使用的深入,平台用户和运维人员不再满足于将物理机换成虚拟机所带来基础资源的弹性便利。以虚拟机为载体的中间件上云方式和传统的运维手段难以满足未来更高效的部署交付、更灵活的日常运维等需求,束缚了中间件能力的提升。
近年来,云原生成为云计算行业的热词。以容器和应用编排为代表的云原生技术被认为是发挥云优势的最佳实践。国信证券正积极探索云原生技术,目前已推出“蜂鸟”云原生智能研运一体化平台,该平台提供业务容器化部署及运维能力,许多业务系统已迁至该平台容器化运行。基于对云计算发展趋势的判断,以及对云原生技术的调研,我们认为云原生技术是赋能中间件的有效手段,并成功基于“蜂鸟”落地了云原生中间件服务目录。
本文将以典型的有状态消息中间件Rocketmq为例,介绍云原生中间件的创新实践和价值收益(其他中间件的改造实践均以此为例)。
RocketMQ云原生实践案例
RocketMQ是一款高性能、低延迟、抗堆积的开源分布式消息引擎。在大数据、异步解耦、数据同步等业务场景被广泛应用。作为一套有状态分布式系统,RocketMQ集群支持多种部署方式,国信证券使用双主双从高可用架构部署。一套RocketMQ集群共7个实例,这样规模较大的集群使用虚拟机部署和运维会面临资源浪费、交付慢、运维难等挑战。云上RocketMQ应该如何实现高效交付、极简运维是一个极具挑战且有价值的问题。针对RocketMQ的云原生创新实践包含以下3个层面。
1.运行时云原生化
为了避免在云原生技术上重复造轮子,国信证券云平台研发者使用“蜂鸟”提供的容器运行时代替虚拟机部署RocketMQ,运行于蜂鸟在各数据中心专门为中间件搭建的Kubernetes集群,复用“蜂鸟”在镜像仓库、应用商店和多集群管理等模块的建设成果。这一步是后续两个层面改造的实施基础,只有完成运行时的云原生化,才能将整套云原生技术栈的核心价值落地。
但Kubernetes原生的API对象不能满足RocketMQ集群这类有状态分布式系统的管理需求。经过调研对比,我们选择Apache开源社区的项目RocketMQ Operator。Operator是Kubernetes平台支持的自定义对象控制器,专用于管理大型的分布式有状态系统,例如分布式数据库。云平台研发者将RocketMQ集群抽象成名为RocketMQ Cluster的自定义对象注册到Kubernetes集群中,并部署RocketMQ Operator。
2.运维方式云原生化
中间件运维人员日常面临RocketMQ的版本升级、动态扩容和数据迁移等运维任务。云原生落地后,运维人员需学习掌握KubernetesOperator的使用方法,利用Operator的自动运维能力完成上述任务。运维人员只需要将预期的RocketMQ集群通过声明式接口发送给Kubernetes,Operator会自动不断重试,直至完成现实状态状向预期状态的同步。
其次,运维人员复用“蜂鸟”已建设成熟的监控日志服务。通过RocketMQ的监控指标采集器(Exporter)可以将全网RocketMQ集群均纳入“蜂鸟”的Prometheus监控体系内,这样的云原生监控指标随版本迭代将不断丰富完善;通过边车容器(Sidecar)和守护进程(Daemonset)等日志采集方式,中间件日志将被统一采集到“蜂鸟”的日志系统中。
以容量管理为例,运维人员在Prometheus平台观察RocketMQ集群的底层资源使用情况,如CPU、磁盘利用率并依此配置告警规则。告警时运维人员可修改RocketMQ Cluster对象的配置,Operator会监听到此修改并自动完成扩容与数据迁移动作。
3.使用方式云原生化
RocketMQ的用户得到的不再是7台虚拟机,而是一套高可用的RocketMQ服务。这样即点即用的PaaS服务使用户不再关注底层资源,而是仅使用其功能。
根据平台的接口文档,以下任何操作都可以通过调用RocketMQ服务的接口完成。首先,用户查看自己的RocketMQ容器集群列表,可选择复用或新建RocketMQ集群。每个集群都附有内网和公网的接入地址作为该集群服务端的访问方式。然后,在RocketMQ集群里可以创建命名空间进行逻辑隔离,每个命名空间可以设置不同消息保存时间。在每个命名空间下可以创建主题(Topic)和消费组(Group)。最后,生产者和消费者就可以通过支持多语言的SDK和集群接入地址访问该RocketMQ集群。
使用方式服务化的影响也体现在监控面板上,RocketMQ用户不再关注各种底层资源的利用率指标,这些指标交由运维人员负责。用户更关心的是与业务贴近的指标,如以消费组(Group)和主题(Topic)为粒度划分的队列积压情况。
价值与收益
通过上述中间件云原生化实践,我们完成了中间件PaaS服务化转型。一方面,运用标准的云原生技术,交付高效、功能强大的各类中间件降低了开发人员的研发技术门槛,让开发人员更加专注于本身业务功能的实现。另一方面,中间件实现云原生PaaS化后,在运维能力上也得到了显著的提升,具体如下。
一是更高效的部署交付能力。由于容器镜像本身的轻量特点,无论是有状态还是无状态中间件,经过云原生改造后,其交付效率均提高10倍以上,实现秒级交付。除此之外,中间件的版本升级、漏洞修复效率均得到同样程度的提高。至此,中间件的部署交付效率不再成为业务系统迭代效率的瓶颈。
二是更有力的高可用保障。云原生改造后,除了沿用原先的两地三中心的多活架构来保障高可用,在单数据中心内我们还可以利用Kubernetes平台本身的故障重启、滚动更新、服务治理、策略调度及健康检察等完备的高可用设计,中间件服务的高可用性得到了更好保障。
三是更高的资源利用率。经过对比,云上中间件资源利用率提高近80%。首先,容器较虚拟机省去了操作系统带来的资源消耗。其次,伴随着中间件服务化,同网段下同类中间件的复用率得到提高了近70%。最后,配合Kubernetes的水平扩缩容能力(HPA),闲置资源得到有效释放,尤其是无状态中间件资源利用率提升近50%。
四是更高的运维自动化程度。相比较于传统的脚本半自动化运维,基于Deployment、Operator等Kubernetes控制器的云原生方式大大提高了自动化程度,运维人员调用一次声明式接口就能触发一次自动化运维任务。自动化程度提高不仅带来了运维效率和安全性的提升,还具有降本增效的意义,同样的运维人力投入下,能应对更大规模的中间件管理。
五是更完备的运维生态。国信证券云上中间件融入到了云原生技术栈丰富的运维生态中。无论是Kubernetes本身的运维能力,还是Prometheus、Grafana等社区明星项目,都能直接运用在我司中间件运维任务中。从监控、告警、日志、流量可视化等维度均得到了云原生技术的赋能优化。
未来展望
未来几年,云原生改造将会是证券行业主流的信息系统改造方向之一。作为构建IT业务系统的重要一环,中间件云原生化将会是各大券商发力的主要赛道。
国信证券针对中间件云原生改造的规划分为两个阶段:首先,已围绕“蜂鸟”云原生研运一体化平台打造了符合云原生规范的中间件服务目录,利用“蜂鸟”已建设完备的云原生技术底座为中间件云原生改造赋能。“鑫云”平台纳管的传统开源中间件和信创中间件已逐步迁移至“蜂鸟”。同时,通过组织培训等方式对“蜂鸟”云原生中间件服务目录的运维和使用方式进行宣导,加深开发、运维人员对云原生技术的理解和掌握,改变公司中间件用户的使用习惯。
在第二阶段,将与业界领先的云厂商紧密合作,结合“鑫云”的IaaS能力与“蜂鸟”的PaaS能力,打造新一代企业云平台,并将云原生中间件从“蜂鸟”迁移至此平台运行。云厂商具备大规模中间件集群运维经验,将为云原生中间件的稳定运行保驾护航。同时,在此阶段中我们将尝试使用日益成熟的无服务器技术(Serverless)对部分中间件进行改造,利用该技术多语言函数化编程、免运维、快速弹性扩缩容、按量计费的特点进一步降低中间件运维管理成本。
通过以上两阶段的云原生改造,国信证券将打造业界领先的云原生中间件服务能力。交付高效、运行稳定、易运维、易使用的云原生中间件服务将成为支撑业务系统快速迭代和稳定运行的有力保障。