mysql 生产实践_京东容器化MySQL生产实践

本文介绍了京东如何利用Docker容器技术实现大规模MySQL实例的管理,通过CM(Containerized MySQL)和JDOS平台,实现了资源隔离、平滑升级和自动化运维。CM借助JDOS的资源池化能力,支持用户自助上下线数据库,同时通过调度策略保证高可用和性能。
摘要由CSDN通过智能技术生成

京东容器数据库系统,MySQL Docker容器实例达到万级以上。架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦处理。为描述方便,京东容器化数据库系统命名为CM(Containerized MySQL),底层京东Docker容器计算平台命名为JDOS。

本文重点介绍JDOS如何支持CM。CM是更大的话题,后续数据库团队会分享相关实践。

介绍

CM依赖京东坚实的JDOS技术,MySQL Docker容器实例达到万级以上。

CM借助JDOS技术优势获得主要3个方面的技术收益:

CM借助Docker容器资源隔离能力,有效支持同一宿主物理机上多MySQL实例直接资源隔离,极大提高数据库实例部署密度,有效提升资源使用率。

CM借助Docker容器资源平滑升级能力,方便数据库实例平滑扩容需求。

CM借助JDOS平台资源池化提供管理容器生命周期API能力,实现用户自助上下线数据库以及自动化运维。

本文会从架构设计,性能测试等方面说明京东CM落地实践过程。

整体架构

6ca0da031c8be799e72c2955802c8d5d.png

CM与JDOS解耦,CM负责管理MySQL主从等集群方式的生命周期管理;京东JDOS负责单个MySQL容器实例生命周期管理。

京东Docker容器集群分多Region,多POD部署,且不同集群之间网络互通,有效支持每个MySQL实例可被业务系统直接调用,确保***的网络延迟性能。

MySQL集群实例

优先级、配额

数据库cluster根据业务重要性划分不同的优先级,京东的划分更加细致,这里我们简化分2种优先级:核心系统,非核心系统。

云数据库管理平台只需要在调用京东JDOS平台API时候,带上priority=0,即可表示创建的是核心系统依赖的数据库。京东JDOS平台会强制把属于该cluster的多MySQL实例调度到不同的机架,且不资源“超配”。

底层资源云化和核算成本需求,会针对按事业部配给一定的配额,所在的创建数据库集群实例成功后,自动从该部门扣除对应的资源值,反之销毁会归还配额到部门。

监控、告警

数据库cluster自身DB层面的告警由云数据库集群平台提供。涉及到底层计算、网络、存储等资源层面的告警,由底层京东Docker容器平台提供数据给云数据库集群。

JDOS架构

5563edecb37e1a2c2a31b0061594a372.png

JDOS是京东统一数据中心计算,网络,存储管理平台。除支持CM外,也支持京东全部的业务系统运行环境。

06a771bbb3ebf039d453ec04b524772f.png

JDOS系统基于京东扎实的Openstack,Docker等开源技术的持续研发能力,提供稳定,高性能的计算资源平台。每个组件都是独立服务部署,采用MQ互相交互信息,京东重构了主要的核心组件服务,使JDOS平台可以支持更大的集群规模,目前稳定在6K台物理计算节点。重新设计JDOS升级功能,做到平滑无感知,有效支撑长时间运行容器的稳定性。

JDOS控制节点

JDOS控制节点服务组件,借助Haproxy做PooL模式部署,有效避免单点和负载能力问题。

控制节点3台物理机,分别跨在不同的机架上,避免Tor交换机,机架电力,服务器等故障影响。

控制节点服务组件混合部署,进一步提升控制节点每个服务组件的高可用和负载能力。

比如计算服务API,镜像服务API,认证服务API,网络服务API,存储服务API进程混部同一台物理机。

673a67d50f439eb6c42e06b2d8c65c7a.png

JDOS计算节点

计算节点管理网络与虚拟化数据网络使用不同的网口进行隔离,全万兆网络环境,对数据库的网络环境支持非常好。特别京东在虚拟化网络技术方向的扎实积累,基本可以做到虚拟化网络损耗控制在2%以下。

调度

659964cca4ce46b506d409a595447546.png

调度架构简单,负载可扩展。

d1a3a2d1c90e74c4fdcaa6d4f9cc110b.png

主要思想是,先一系列filter掉不满足要求的计算节点,然后打分,***做排序,选择***并返回调度结果。

资源分区调度

按Region,POD,Zone,物理机等4个层面划分计算区域,调度算法灵活可配确保业务特点与计算硬件环境特点结合适配。如CM的机器全部是SSD的硬盘,所以JDOS会在每个数据中心提供CM SSD Zone的tag,把CM的创建请求优先调度到具有SSD硬盘的计算Zone。

亲和性和反亲和性调度

创建全新数据库集群实例如一主一层,JDOS调度器会把这2个MySQL容器实例分布到不同的机架。

业务多从库需求,要求从库是高性能读,JDOS调度器会根据performance_slave=True标记,尽可能把从库创建到网络繁忙度较小的机架,并与主在相同的物理POD,甚至同一个Tor交换机下面的不同物理机上。

业务增加备份性质的从库需求,JDOS调度器会根据DB_Cluster_ID=uuid, backup_slave=True标记,强制把从库创建避免已经有该DB_cluser_ID所在的宿主机,以及机架甚至POD。

可扩展性

底层JDOS资源池的扩容性,按使用率,有计划进行扩容底层物理计算资源。

CM每个库使用资源的平滑扩容,比如CPU,内存,网络,磁盘空间均支持平滑扩容功能。

采用直接重置修改cgroup的配置,即可达到平滑扩容的目的。

结合京东设计的cpu set与cpu share并存的资源隔离策略,提升资源使用率。

MySQL实例性能

性能测试环境部署图

7dc47b0f3384c67f73b3570a8b37c1f7.png

测试环境硬件配置

9e93e238e05d29e4b0e853cdb45620ab.png

多容器实例基准测试

测试模型

d6e9fbe26b01f3026fb874e4e876801e.png

场景描述

基础数据为:8个容器,每个容器基础数据量为1000W(532M),单表加压,每个表10W行记录,同时对多个容器发起相同的请求,测试响应情况,并对比同等线程数下物理机的情况。

容器测试数据

cbf509418ed2a7215ef316caae5bf94b.png

物理机数据

1510057c2c38c88ba6d8cdb8ad6a330f.png

稳定性测试

场景描述

单容器1000W基础数据,单表请求10W数据,8容器并发运行24小时。

性能表现

fdb108cd9d206b94fffa48504497156c.png

CPU表现

a36bd4099fa5f377a710a7dcc78fd9be.png

磁盘表现

7fbeb4cf66f0e66484721223bdf50d17.png

网络表现

d59b4ac79be587f08932e263b85b595e.png

【本文来自51CTO专栏作者张开涛的微信公众号(开涛的博客),公众号id: kaitao-1234567】

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值