凯发k8天生赢家一触即发

【mysql】容器集群支持数据库实践 -凯发k8天生赢家一触即发

2023-08-17,,

京东数据库系统,管理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】容器集群支持数据库实践的相关教程结束。

网站地图