京东容器化MySQL生产实践

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

京东容器数据库系统,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落地实践过程。

整体架构

 

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

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

MySQL集群实例

  • 优先级、配额

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

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

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

  • 监控、告警

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

JDOS架构

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

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

JDOS控制节点

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

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

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

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

JDOS计算节点

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

调度

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

主要思想是,先一系列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实例性能

性能测试环境部署图

测试环境硬件配置

 

多容器实例基准测试

测试模型

场景描述

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

容器测试数据

物理机数据

稳定性测试

场景描述

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

性能表现

CPU表现

磁盘表现

网络表现

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

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 开涛的博客
相关推荐

2023-09-05 07:40:37

PythonSDKAPI

2022-06-03 09:21:47

Svelte前端携程

2021-03-12 07:47:44

KubernetesRedis-clustRedis

2023-07-12 16:07:50

链路数据湖技术

2023-10-16 07:39:02

ELKpod日志

2023-12-08 07:59:04

2023-10-16 16:00:27

Redis限流

2023-10-20 15:08:28

pod日志采集

2022-07-08 09:26:45

Flink快手计算

2022-09-19 08:35:28

Kafka节点故障

2023-12-26 16:33:57

k8s私有化云服务

2023-09-07 20:04:06

前后端趋势Node.js

2022-08-01 07:27:36

JavaDocker容器

2017-01-10 15:22:34

京东容器集群

2015-10-28 16:20:10

短生命周期容器原生云计算

2015-07-17 07:39:44

搜索下拉框产

2017-01-18 10:57:24

MySQLZabbix监控

2016-12-28 14:16:25

京东高并发系统设计

2022-09-01 08:50:22

kubernetes容器
点赞
收藏

51CTO技术栈公众号