【MySQL】容器集群支持数据库实践
京东容器数据库系统,管理1800台物理计算节点,生产1W+ 多MySQL Docker容器实例。架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦处理。为描述方便,京东容器化数据库系统命名为CDS,底层京东Docker容器计算平台命名为JDOS。
本文重点介绍JDOS如何支持CDS。CDS是更大的话题,后续数据库团队会分享相关实践。
介绍
CDS依赖京东坚实的JDOS技术,生产运行1W+个MySQL容器实例。CDS借助JDOS技术优势获得主要3个方面的技术收益:
- CDS借助Docker容器资源隔离能力,有效支持同一宿主物理机上多MySQL实例直接资源隔离,极大提高数据库实例部署密度,有效提升资源使用率
- CDS借助Docker容器资源平滑升级能力,方便数据库实例平滑扩容需求
- CDS借助JDOS平台资源池化提供管理容器生命周期API能力,实现用户自助上下线数据库以及自动化运维。
本文会从架构设计,性能测试等方面说明京东CDS落地实践过程。
整体架构
CDS与JDOS解耦,CDS负责管理MySQL主从等集群方式的生命周期管理;京东JDOS负责单个MySQL容器实例生命周期管理。京东Docker容器集群分多Region,多POD部署,且不同集群之间网络互通,有效支持每个MySQL实例可被业务系统直接调用,确保极佳的网络延迟性能。
MySQL集群实例
优先级 配额
数据库cluster根据业务重要性划分不同的优先级,京东的划分更加细致,这里我们简化分2种优先级:核心系统,非核心系统。
云数据库管理平台只需要在调用京东JDOS平台API时候,带上priority=0,即可表示创建的是核心系统依赖的数据库。京东JDOS平台会强制把属于该cluster的多MySQL实例调度到不同的机架,且不资源“超配”。
底层资源云化和核算成本需求,会针对按事业部配给一定的配额,所在的创建数据库集群实例成功后,自动从该部门扣除对应的资源值,反之销毁会归还配额到部门。
监控 告警
数据库cluster自身DB层面的告警由云数据库集群平台提供。涉及到底层计算,网络,存储等资源层面的告警,由底层京东Docker容器平台提供数据给云数据库集群。
JDOS架构
JDOS是京东统一数据中心计算,网络,存储管理平台。除支持CDS外,也支持京东全部的业务系统运行环境。
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个层面划分计算区域,调度算法灵活可配确保业务特点与计算硬件环境特点结合适配。如CDS的机器全部是SSD的硬盘,所以JDOS会在每个数据中心提供CDS SSD Zone的tag,把CDS的创建请求优先调度到具有SSD硬盘的计算Zone。
亲和性和反亲和性调度
创建全新数据库集群实例如一主一层,JDOS调度器会把这2个MySQL容器实例分布到不同的机架。
业务多从库需求,要求从库是高性能读,JDOS调度器会根据performance_slave=True标记,尽可能把从库创建到网络繁忙度较小的机架,并与主在相同的物理POD,甚至同一个Tor交换机下面的不同物理机上。
业务增加备份性质的从库需求,JDOS调度器会根据DB_Cluster_ID=uuid, backup_slave=True标记,强制把从库创建避免已经有该DB_cluser_ID所在的宿主机,以及机架甚至POD。
可扩展性
底层JDOS资源池的扩容性,按使用率,有计划进行扩容底层物理计算资源。CDS每个库使用资源的平滑扩容,比如CPU,内存,网络,磁盘空间均支持平滑扩容功能。采用直接重置修改cgroup的配置,即可达到平滑扩容的目的。结合京东设计的cpu set与cpu share并存的资源隔离策略,提升资源使用率。
性能
主要关注MySQL运行在Docker容器内的实际DB层面的性能。
MySQL实例性能
性能测试环境部署图
测试环境硬件配置
多容器实例基准测试
测试模型
场景描述
基础数据为:8个容器,每个容器基础数据量为1000W(532M),单表加压,每个表10W行记录,同时对多个容器发起相同的请求,测试响应情况,并对比同等线程数下物理机的情况。
容器测试数据
物理机数据
稳定性测试
场景描述
单容器1000W基础数据,单表请求10W数据,8容器并发运行24小时。
性能表现
CPU表现
磁盘表现
网络表现
作者:京东商城-基础平台部-集群技术部副总监,鲍永成。京东IPDCHAT公众号输出京东商城基础平台部内部技术实战,欢迎关注。
责编:魏伟,报道和投稿请邮件至weiwei@csdn.net,另外,欢迎加入CSDN 容器技术交流群,和大牛侃技术,搜索微信号“k15751091376”,备注姓名、公司和职位。
参考资料:
http://geek.csdn.net/news/detail/134385?ref=myread
京东容器数据库系统,管理1800台物理计算节点,生产1W+ 多MySQL Docker容器实例。架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦处理。为描述方便,京东容器化数据库系统命名为CDS,底层京东Docker容器计算平台命名为JDOS。
本文重点介绍JDOS如何支持CDS。CDS是更大的话题,后续数据库团队会分享相关实践。
介绍
CDS依赖京东坚实的JDOS技术,生产运行1W+个MySQL容器实例。CDS借助JDOS技术优势获得主要3个方面的技术收益:
- CDS借助Docker容器资源隔离能力,有效支持同一宿主物理机上多MySQL实例直接资源隔离,极大提高数据库实例部署密度,有效提升资源使用率
- CDS借助Docker容器资源平滑升级能力,方便数据库实例平滑扩容需求
- CDS借助JDOS平台资源池化提供管理容器生命周期API能力,实现用户自助上下线数据库以及自动化运维。
本文会从架构设计,性能测试等方面说明京东CDS落地实践过程。
整体架构
CDS与JDOS解耦,CDS负责管理MySQL主从等集群方式的生命周期管理;京东JDOS负责单个MySQL容器实例生命周期管理。京东Docker容器集群分多Region,多POD部署,且不同集群之间网络互通,有效支持每个MySQL实例可被业务系统直接调用,确保极佳的网络延迟性能。
MySQL集群实例
优先级 配额
数据库cluster根据业务重要性划分不同的优先级,京东的划分更加细致,这里我们简化分2种优先级:核心系统,非核心系统。
云数据库管理平台只需要在调用京东JDOS平台API时候,带上priority=0,即可表示创建的是核心系统依赖的数据库。京东JDOS平台会强制把属于该cluster的多MySQL实例调度到不同的机架,且不资源“超配”。
底层资源云化和核算成本需求,会针对按事业部配给一定的配额,所在的创建数据库集群实例成功后,自动从该部门扣除对应的资源值,反之销毁会归还配额到部门。
监控 告警
数据库cluster自身DB层面的告警由云数据库集群平台提供。涉及到底层计算,网络,存储等资源层面的告警,由底层京东Docker容器平台提供数据给云数据库集群。
JDOS架构
JDOS是京东统一数据中心计算,网络,存储管理平台。除支持CDS外,也支持京东全部的业务系统运行环境。
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个层面划分计算区域,调度算法灵活可配确保业务特点与计算硬件环境特点结合适配。如CDS的机器全部是SSD的硬盘,所以JDOS会在每个数据中心提供CDS SSD Zone的tag,把CDS的创建请求优先调度到具有SSD硬盘的计算Zone。
亲和性和反亲和性调度
创建全新数据库集群实例如一主一层,JDOS调度器会把这2个MySQL容器实例分布到不同的机架。
业务多从库需求,要求从库是高性能读,JDOS调度器会根据performance_slave=True标记,尽可能把从库创建到网络繁忙度较小的机架,并与主在相同的物理POD,甚至同一个Tor交换机下面的不同物理机上。
业务增加备份性质的从库需求,JDOS调度器会根据DB_Cluster_ID=uuid, backup_slave=True标记,强制把从库创建避免已经有该DB_cluser_ID所在的宿主机,以及机架甚至POD。
可扩展性
底层JDOS资源池的扩容性,按使用率,有计划进行扩容底层物理计算资源。CDS每个库使用资源的平滑扩容,比如CPU,内存,网络,磁盘空间均支持平滑扩容功能。采用直接重置修改cgroup的配置,即可达到平滑扩容的目的。结合京东设计的cpu set与cpu share并存的资源隔离策略,提升资源使用率。
性能
主要关注MySQL运行在Docker容器内的实际DB层面的性能。
MySQL实例性能
性能测试环境部署图
测试环境硬件配置
多容器实例基准测试
测试模型
场景描述
基础数据为:8个容器,每个容器基础数据量为1000W(532M),单表加压,每个表10W行记录,同时对多个容器发起相同的请求,测试响应情况,并对比同等线程数下物理机的情况。
容器测试数据
物理机数据
稳定性测试
场景描述
单容器1000W基础数据,单表请求10W数据,8容器并发运行24小时。
性能表现
CPU表现
磁盘表现
网络表现
作者:京东商城-基础平台部-集群技术部副总监,鲍永成。京东IPDCHAT公众号输出京东商城基础平台部内部技术实战,欢迎关注。
责编:魏伟,报道和投稿请邮件至weiwei@csdn.net,另外,欢迎加入CSDN 容器技术交流群,和大牛侃技术,搜索微信号“k15751091376”,备注姓名、公司和职位。
【MySQL】容器集群支持数据库实践的更多相关文章
- MySQL MGR 集群从数据库显示RECOVRING
因为断电 或者 其他瞎折腾 导致: 从节点显示RECOVRING 查看错误日志显示: Slave SQL for channel 'group_replication_recovery': Error ...
- vivo 容器集群监控系统架构与实践
vivo 互联网服务器团队-YuanPeng 一.概述 从容器技术的推广以及 Kubernetes成为容器调度管理领域的事实标准开始,云原生的理念和技术架构体系逐渐在生产环境中得到了越来越广泛的应用实 ...
- 测试环境docker化—容器集群编排实践
本文来自网易云社区 作者:孙婷婷 背景 在前文<测试环境docker化-基于ndp部署模式的docker基础镜像制作>中已经详述了docker镜像制作及模块部署的过程,按照上述做法已可以搭 ...
- (转帖)开源容器集群管理系统Kubernetes架构及组件介绍
最近在搞Docker还有她的管理工具,选型Kuberetes后,被她的术语和概念搞得晕头转向...看了一篇文章还不错,放到这里分享出来. 地址:http://www.linuxidc.com/Linu ...
- 容器、容器集群管理平台与 Kubernetes 技术漫谈
原文:https://www.kubernetes.org.cn/4786.html 我们为什么使用容器? 我们为什么使用虚拟机(云主机)? 为什么使用物理机? 这一系列的问题并没有一个统一的标准答案 ...
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- PaaS容器集群优化之路
1. 性能优化面对的挑战 以下是整个PaaS平台的架构 其中主要包括这些子系统: 微服务治理框架:为应用提供自动注册.发现.治理.隔离.调用分析等一系列分布式/微服务治理能力,屏蔽分布式系统的复杂度. ...
- 多图文,详细介绍mysql各个集群方案
目录 多图文,详细介绍mysql各个集群方案 一,mysql原厂出品 二,mysql第三方优化 三,依托硬件配合 四,其它 多图文,详细介绍mysql各个集群方案 集群的好处 高可用性:故障检测及迁移 ...
- MySQL分布式集群之MyCAT(转)
原文地址:http://blog.itpub.net/29510932/viewspace-1664499/ 隔了好久,才想起来更新博客,最近倒腾的数据库从Oracle换成了MySQL,研究了一段时间 ...
随机推荐
- higncharts 去掉Highcharts.com链接
将credits属性设为false credits: { enabled: false },
- c语言基本数据类型short、int、long、char、float、double
C 语言包含的数据类型如下图所示: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子 ...
- linux 细节 问题解决
Ubuntu 12.04 启动时停在Checking battery state…… 1.在停止的界面按下Ctrl+Alt+F1 2.reboot halt
- [转]hibernate三种状态详解
本文来自 http://blog.sina.com.cn/u/2924525911 hibernate 三种状态详解 (2013-04-15 21:24:23) 转载▼ 分类: hibernate ...
- 17.4.3 使用MulticastSocket实现多点广播(4)
17.4.3 使用MulticastSocket实现多点广播(4) 通过UserInfo类的封装,所有客户端只需要维护该UserInfo类的列表,程序就可以实现广播.发送私聊信息等功能.本程序底层通 ...
- MySQL的 explain 解析
EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 项 说明 id MySQL Query Optimizer 选定的执行计划中查询的序列号.表示查询中执行 select 子句 ...
- D. PolandBall and Polygon BIT + 欧拉公式
http://codeforces.com/contest/755/problem/D // 我也觉得非平面图不能用欧拉公式,但是也能过,不知道为什么.求大佬留言. 这题其实就是平面图,因为它有很多个 ...
- 顽强的的砂锅之——深究finally代码块与return语句的执行顺序!
当问到finally代码块的执行顺序,就算刚刚学编程的小白都能毫不犹豫的说出答案:不管异常发生与否,finally语句块的代码一定会被执行!大体上这样讲是没有错,但是finally块中的代码一定会有效 ...
- DDR工作原理(转)
源:DDR工作原理 DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”.DDR SDRAM在原有的SDRAM的基础上改进而来.也正因为如此,DDR能 ...
- iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试
苹果发布Xcode7后, 开放了普通的AppleID也能真机调试( 非$99 或 $299, 只要能上AppStore下载应用的AppleID就行),下面教你具体做法,很简单的. 1.运行Xcode, ...