招商银行基于K8S+DOCKER构筑容器数据库平台建设及应用实践

招行ACS私有云上线投产后,MySQL作为云上主要服务的RDS数据库服务,规模急剧增长且部分承载着分行核心业务,对业务连续性要求也越来越高,因此迫切需要建立并完善云MySQL支持服务体系和提升MySQL服务能力。

当前行内的MySQL架构,主要是基于VM虚机和RedhatRHCS技术的单实例MySQL,在生产环境经常出现基础环境不稳定,容易仲裁超时、共享盘丢失等问题。

同时通过对容器数据库平台调度策略的优化,通过合理配置资源,结合对资源动态数据监控及分析智能化调度等方式,提升资源利用率。

为响应数据中心云化发展战略、配合云数据中心建设,加强MySQL云服务建设,自主可控能力建设,提高MySQL数据库服务云化敏捷交付能力、高可用能力、自动化运维能力。我们制定以下目标:

1.加强数据库自主可控能力建设,提升资源利用率,提升基础环境稳定性,实现降本增效。

2.提高MySQL数据库敏捷交付能力、自动化运维能力和运维效率、提升MySQL资源池自构建和管理能力。

3.通过K8S+Docker+MySQLMGR技术特性提高MySQL数据库服务可用性、同时实现资源快速供给、弹性伸缩等优势,提升业务连续性保障。

4.实现MySQL同城跨AZ高可用部署架构,异地容灾一键切换能力,解决MySQL传统高可用架构短板,实现MySQL高可用架构优化改进。

近两年来容器技术在我行各业务开发条线和数据中心遍地开花,迅速推广,得到广泛应用。

K8s容器技术生态也是愈发成熟。基于原生k8s的容器paas平台也早已在我行上线,运行着越来越丰富的无状态应用。容器paas平台主要是为无状态应用而设计,无需进行定制适配开发。

K8s+docker技术原生支持无状态应用优势有:极致的资源利用,无虚拟化损耗以及多余内核损耗,灵活的资源共享机制;轻量级,固化的镜像规避了繁琐的依赖安装过程;扩展性强,无论是管理集群扩展性,还是应用扩展性都极强;自修复能力强,自动重调度,自动重启,自动复制;科学的全解耦模块设计。

尽管最近几年原生K8s技术演进发展迅速,新功能特性层出不穷愈加丰富。从技术可行性评估,容器技术早已具备支持有状态应用的能力。但是原生K8S对数据库等有状态的应用的支持,由于数据库应用的特殊性需进行一定的适配开发,以使数据库容器化的整体架构方案和技术优势和价值最优化。

在此背景下,我们基于K8S+docker构筑数据库容器化方案落地过程中,将会面临以下几方面技术难度:

①网络方面

K8s主流的基于隧道技术的网络插件不能承载数据库的大流量;

容器网络技术中的IP和mac地址不固定给数据库带来的困扰;

K8s自带的基于iptables的service技术,不适合数据库对外服务暴露;

②存储方面

容器针对无状态应用的分布式存储,并不适用于数据库应用场景;

数据库是重IO应用,如何避免IO争抢;

③调度方面

容器技术并未解决数据库单点故障的问题,还需要解决数据库本身的高可用问题

数据库应用的特殊编排特点,例如数据库主节点要先启动;

数据库在故障转移过程中产生的数据迁移过程比无状态服务复杂;

④资源利用率方面

有状态应用数据持久化,如何综合评估通盘考虑设计计算存储资源的配比;

有状态服务如何资源利用率指标设计,计算资源超卖能力设计,如何在保障数据库服务性能无影响下合理提升资源利用率;

⑤管理方面

原生K8s主要面向的是CICD应用场景,对数据库的运维场景支撑并不完善;

行内现有数据库运维生态体系及工具与容器化数据库服务之间快速无缝对接融入;

在基于K8S+docker构筑容器化数据库平台预研及建设过程中,我们是如何解决了以上技术难度与挑战的?

数据库应用对网络性能的需求非常强,数据库通过网络对外提供服务,通过网络去做数据的高可用,因此在数据库业务访问高峰的时候,爆发出的数据流量是非常大;同时,数据库还对网络的时延要求也很高,即使带宽足够,时延过大的网络情况,也很容易造成数据库执行事务失败之类的问题;

在CDD平台开发初期进行选型测试的时候,对现有的主流的Kubernetes平台容器网络方案,如Flannel、OpenvSwitch等进行了全面的调优和测试,发现这些网络插件的原理都是通过隧道技术进行网络传输,即先将已经封装好的数据包,进行基于VXLAN或者BGP协议的再封装,在网络并发高的情况下,很容易造成带宽占满、延时高的现象;

同时在测试验证的过程中,还发现现有的数据库高可用方案(MGR、MHA),数据库监控方案(zabbix、Prometheus),数据库备份方案(NBU、CV备份),普遍使用IP作为数据库的身份标识,而上述的网络插件,都是基于宿主机虚拟网关实现的容器网络互通,因此在容器发生宿主机迁移的时候,IP会发生改变,不利于数据库的运行;

针对上述情况,在仔细调研了行业内现有的网络虚拟化SDN技术方案,并和同样在进行数据库容器化开发的同行业单位进行技术交流和讨论后,我们选择了SR_IOV单根虚拟化技术,SR_IOV单根虚拟化技术是Intel网卡的硬件虚拟化技术,其基本原理是在物理网卡上预留虚拟网卡的硬件,并共用一条总线,极大的提升了虚拟网卡的带宽和性能;

SR_IOV技术简介

由于行业性质,对数据库的备份有极高要求,目前行内的备份周期为每日全备,但容器内默认只有一个网卡,因此可能出现在备份过程中,出现一个很大的网络流量,直接把网卡带宽占满,造成数据库业务的中断;

同时,在k8s集群中,有很多功能,需要通过容器原生的Overlay网络完成,如监控自动纳管、服务自动发现等功能,因此,CDD平台对Kubernetes原生的CNI网络插件进行了定制,实现了容器内多网段;

在实现容器内多网段后,又出现了一个新的问题,由于SR_IOV技术的硬件虚拟化特性,一张万兆网卡上的虚拟网卡(VF)数量是有限的,一般为63个,一些高端网卡是126个,因此,容器如果不是运行的数据库,或者运行的数据库为小型需求的低配数据库,占用虚拟网卡就会非常浪费虚拟网卡资源,为了解决这个问题,CDD平台引入了MacVLAN网络虚拟化技术,通过操作系统虚拟化出网卡,给低配mysql使用;因此,CDD平台中,为Pod设计了三种网络模式

容器内只有一个网卡,为Overlay网络,该模式适合一些监控容器等非数据库业务容器使用;

容器内有3个网卡,一个网卡为Overlay网络,两个网卡分别用于备份和业务,为MacVLAN虚拟网卡,适用于低配数据库容器;

容器内有3个网卡,默认网卡为Overlay网络,另外两个网卡分别用于备份和业务,使用SR_IOV虚拟网卡,适用于高配的数据库容器;

SR_IOV网络容器网络方案图

数据库应用为重IO应用,磁盘负载很重,因此,如何保障数据库容器的磁盘IO和吞吐量,成为了容器数据库方案设计的重中之重;在目前行业通用的Kubernetes方案中,一般会使用GlusterFS、CephFS、HDFS等分布式文件系统实现共享存储;但是经过测试,发现这些分布式文件系统并不适合数据库使用,主要是存在以下两个问题:

为了给数据库容器提供足够的磁盘IO和吞吐,CDD平台选择使用本地内储,同时存储插件也支持SAN存储、S2D分布式存储的混合使用,实现容器存储的高效和高可用,由于数据库容器普遍是多副本数据,因此,可以使用混合方式来节省存储成本,例如SAN存储混合本地存储,S2D存储混合本地存储使用,兼顾数据高可用性和存储成本优化;

CDD混合存储方案图

由于Kubernetes本身的调度非常简单,不适用于有状态应用调度实际需求,因此,我们引入了schedulerextender扩展功能,开发了CDD-scheduler框架,该调度框架主要实现以下功能:

将数据库主节点均匀分布到各个物理机,避免主节点扎堆导致的性能问题。

均匀分布上文提到的Overlay、MacVLAN、SR_IOV三种网络类型,避免网络类型分布不均匀而导致的网络问题。

由于CDD平台中的数据容器存储为混合存储,有的会占用本地存储IO,有的会占用专用存储网络IO,CDD-Scheduler会尽可能的均匀分布这些存储类型,确保一个物理机上的存储IO最优化。

根据Prometheus、zabbix等监控数据,可以得到数据库的性能曲线,CDD-Scheduler内置了数据库画像分析,针对数据库的业务高峰时段,对数据库进行均匀分布,达到在资源超卖的情况下,通过MGR切换、跨节点调度、资源隔离等方式确保数据库服务本身的稳定性。

数据库容器化的目的之一,就是通过提高物理机的资源利用率,降低数据库的使用成本;而数据库本身的特殊性,不能像无状态应用一样,过分强调资源超售,而降低容器的稳定性,因此,针对数据库本身特性,CDD平台制定了如下的超售原则:不过分追求极致的cpu、内存利用率,但所有容器都有约150%的超卖。网络和存储都引入熔断机制,避免单个容器拖垮整个机器;在极端情况下,可以降低容器批次启动的速率,避免整个集群雪崩。

基于上述原则,在建设过程中,我们需要思考的是怎样在确保资源利用率合理的情况下,同时保障数据库服务的安全性经过团队的观察、计算发现,数据库由于存在一主两从的高可用架构,主节点对外提供主要服务,计算资源占用最高,因此,主节点的均匀分布,对数据库服务的可用性,以及资源利用合理性非常重要。

我们通过建设DBaaS平台协同实现统一架建调度,DBaaS对外提供统一服务接口输出RDS至云管平台,对内对接K8sCDDM平台,实现自动基于规则引擎调度分配基础资源,利用staltstack对接鲁班调度接口实现自动化运维,打通zabbix和prometheus监控和行里统一告警平台对接。

招行CDD容器数据库平台基础架构图

CDD容器数据库平台基础架构,围绕数据库服务适配设计定制开发,架构特点优势总结如下:

基于K8s+Docker+MySQLMGR构筑的CDD平台(CMBdockerdatabase)于19年第4季度正式上线投产,目前已在ACS私有云给总行和国内44家一级分行提供了容器化MySQLMGR数据库云服务,目前共计上线3000+套,运行稳定。MySQLMGR数据库已深度融入到一系列数据库运维工具平台。围绕MySQL数据库运维生态工具建设已落地的有包括容器化MGR集群、MySQL读写分离中间件、MySQL远程容灾、MySQL数据库管理平台等。

基于CDD平台多层高可用保障,高稳定性、高安全度、高拓展性、高交付效率等技术优势,结合MySQLMGR高可用集群架构的灵活性,可靠性以及原生多副本高可用架构和不依赖外部组件实现的故障自动切换等技术特征,开创性的将两项技术进行高效整合、优势互补,实现MySQL资源快速供给、动态扩容弹性伸缩等能力,提高MySQL运维效率,大幅降低运行成本。解决了MySQL传统高可用架构短板,极大提升mysql数据库可用性,构建了业界领先的MySQL数据库金融级高可用服务能力。不破不立,长期以来困扰数据库的基础环境问题和痛点,需要从根本上去重构解决,基于k8s构筑的容器数据库平台从根本上解决和改善了以下问题:

一方面,MySQLMGR基于行冲突检测的并行数据加载,较主从半同步复制并行读高,主从延迟低,主读库数据一致性高,通过MySQLRouter简单灵活配置,更有利于读写分离业务场景。并且MySQLMGR架构凭借RTO、RPO的高标准、数据一致性的高保障,可为关键业务系统提供稳定、高效的数据库服务能力。同时结合K8S+Docker容器化部署的灵活调度、资源流式交付的特性,为高频小事务的交易业务系统、灵活微服务架构的业务系统提供有力支撑。

另一方面,在提高基础环境稳定性基础上,通过多重高可用保障,智能调度,自动伸缩,跨AZ容灾解决方案提升服务可用性。利用资源支持配置上限和下限,随着业务的发展和数据量的持续增加,持续增加资源配置至上限,支持资源超配,提升资源利用率,降低成本,提升了数据库的业务支撑能力。通过智能化计算资源,自动化部署交付,提高架建效率。操作、流程规范化,使数据库部署交付、运维管理更自助精细、风险更低,提升自助服务和敏捷交付能力。

金融业IT服务建设首要是为业务系统稳定运行和数据资产安全保驾护航,打造极致高可用和稳定性,在此基础上进行自主安全可控和降本增效和创新建设。同时随业务需求发展变化和IT发展战略变革而敏捷响应需求并快速落地。

如今各种新技术和新架构层出不穷,技术演进发展迭代更新快速,对新技术演进的发展方向和发展趋势的把握和前瞻判断至关重要,招行基于K8S构筑容器数据库平台建设能取得一点成果的首要前提是我们积极拥抱云化发展战略方向,在未来我们不断会面临新挑战,积极推动整个行业圈层共建技术生态,才能使技术创新的种子落地开花,使得新技术更好的服务于业务并最终变现为业务价值和业务效能的景象百花齐放。

THE END
1.四个“一体化”——构建数智融合时代下的一站式大数据平台一站式大数据平台,旨在通过一个平台即可满足各类业务需求,成为数智融合时代下数据基础设施的发展趋势,并从四个维度向四个“一体化”方向演进:数据架构-湖仓集一体化;数据处理-多模型一体化;数据分析-历史与实时数据一体化;资源管理-多集群应用、资源和数据一体化。 https://www.163.com/tech/article/J5OTS3BR00099BK0_pa11y.html
2.数据闭环研究:自动驾驶3.0阶段,做好端到端,赢取数据掌控权福瑞泰克具备软硬一体平台化开发和量产交付能力,已打通了“规模数据获取-数据处理体系-自动化迭代”的数据闭环链路,其ODIN智能驾驶数智底座支持量产的大规模数据闭环系统,既包括福瑞泰克大规模量产数据基础,也有部署于国家超算中心算力平台,并全面形成了支持算法演进的完整数据闭环体系,可同步完成感知算法的迭代演进与规控https://www.dongchedi.com/article/7262526986319610420
3.国务院办公厅关于印发“互联网+政务服务”技术体系建设指南的通知充分利用国家数据共享交换平台和各地方已有的数据共享交换平台等信息基础设施资源,构建全国政务服务数据共享平台体系。 1.目录与交换体系 (1)目录体系 政务信息资源目录体系是为整合利用各类政务信息资源而建设的信息服务体系。根据业务需求,按照统一的信息资源目录体系标准,对相关政务服务信息资源进行编目,生成政务服务公共信https://www.cac.gov.cn/2017-01/13/c_1120300337_8.htm
4.AI增强型数据管理和分析平台赋能人工智能+物联网一直以来,Kyligence 与微软紧密合作,通过与微软不断深入地合作和技术探索,将 Kyligence AI 增强型数据分析平台构建在 Microsoft Azure 云平台上,结合微软行业领先的商业智能分析工具 Power BI、机器学习、物联网等数据应用,为客户提供端到端的云上智能大数据 OLAP 解决方案。 https://cn.kyligence.io/news/kyligence-on-microsoft-ai-iot-lab-open-day/
5.唯品会:在Flink容器化与平台化上的建设实践作者:王康,唯品会数据平台高级开发工程师 自2017 年起,为保障内部业务在平时和大促期间的平稳运行,唯品会就开始基于 Kubernetes 深入打造高性能、稳定、可靠、易用的实时计算平台,现在的平台支持 Flink、Spark、Storm 等主流框架。 本文将分为五个方面,分享唯品会 Flink 的容器化实践应用以及产品化经验: https://xie.infoq.cn/article/3727e40b362526efdee34d21c
6.62家央企数字化转型路线图打造数字平台,构建“安全可信、开放生态、智慧运营、敏捷高效”平台能力,快速响应业务需求; 收放结合,实现集团数据资产及IT资源的集中管控(收),应用及业务的快速创新(放)。 28 中国节能定调“2022科技创新年” 将2022年确定为集团公司的科技创新年,围绕集团产业链的科技创新来聚焦发力。 https://www.ciicmc.com/nciichr/zyzx96/ldy/zcjd64/871552/index.html
7.北医三院基于“互联网+”的人力资源信息系统应用与创新转型升级后,北医三院建设了全院共享的人事数据平台,成功完成了组织机构、岗位以及各类人员近百万条历史数据的完整迁移,并基于消息模式实现了与院级主数据集成平台的对接。 二、规范的业务应用,实现人事业务流程化、规范化管理 北医三院在系统建设和应用阶段,通过规范的业务应用来驱动数据的动态更新,保证信息的及时性、有https://www.douban.com/note/782334089/
8.什么是应用与数据集成平台应用与数据集成平台ROMAConnect企业在向数字化转型的过程中会面临诸多难题:缺少统一的设备信息集成途径;数据格式多样化,难以传输和集成;缺少与合作伙伴分享数据和后端服务的便捷途径;缺少云上云下跨网络的安全信息通道。ROMA Connect是一个全栈式的应用与数据集成平台,源自华为数字化转型集成实践,https://support.huaweicloud.com/productdesc-roma/what-is-ROMA.html
9.中台是什么——后篇(数据中台?财务中台?自建中台如何做?)据悉,小米数据中台的架构,底层是大数据平台,包括采集、存储、计算,在大数据的基础之上搭建了一系列的应用,如商业分析、数据探索、驾驶舱(管理决策参考)、企业结算、新零售图谱、天弓(类似业务系统)。 有专门的X DATA团队负责数据,在权限管控内,各部门分析人员可直接得到对应的数据并进行数据分析。小米想从业务端沉淀https://maimai.cn/article/detail?fid=1503683863&efid=HY-KeadUM7K482Y9G08eIQ
10.10分钟搭建你的第一个图像识别模型(附步骤代码)机器之心一、什么是图像分类以及它的应用案例 二、设置图像数据结构 三、分解模型建立过程 四、设置问题定义并认识数据 五、建立图像分类模型的步骤 六、开始其他挑战 一、什么是图像分类以及它的应用案例 观察以下图片: 你应该可以马上就认出它——是一俩豪华车。退一步来分析一下你是如何得到这个结论的——你被展示了一https://www.jiqizhixin.com/articles/2019-02-20-9
11.从技术和业务视角,认识数据平台人人都是产品经理本文主要面向读者为互联网行业相关从业人员,期望对企业数据平台有所了解的人群;因篇幅有限,文中所述的主题及相关概念点到为止。 一、什么是数据平台? 数据平台字面的意思是“数据+平台”: 数据:源于业务又作用于业务; 平台:基于数据也服务于数据。 整体看数据平台是由「数据流程」和「业务流程」两大运转主体共同构https://www.woshipm.com/data-analysis/1391920.html
12.虚拟主机是什么虚拟主机详细介绍中小企业、专业门户网站可以使用虚拟主机空间提供数据共享、数据下载服务。对于大型企业来说,可以作为部门级应用平台。 数据库存储平台 可以为中小企业提供数据存储数据功能。由于成本比独立服务器低,安全性高做为小型数据库首选。 选择提供商的注意事项 稳定和速度 https://m.elecfans.com/article/618777.html
13.湾区评论以数相融:深港跨境数据验证平台助力粤港澳大湾区一体化融该平台的建立,不仅是对现有跨境数据交换模式的重大创新,更是响应了国家关于数据跨境流动与合作新途径、新模式的探索需求。 一、什么是“深港跨境数据验证平台”? “深港跨境数据验证平台”本质上是一个创新的数字化基础设施,其功能在于促进深圳与香港之间的数据安全、便捷地跨境验证和流通。通过对区块链技术的创新应用,https://www.thepaper.cn/newsDetail_forward_27309317