京东容器数据库系统,MySQLDocker容器实例达到10000多个。架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦。为了描述方便,京东容器化数据库系统命名为CM(ContainerizedMySQL),京东Docker容器计算底层命名为JDOS。本文重点介绍JDOS如何支持CM。CM是一个更大的话题,后续数据库团队会分享相关实践。简介CM依托京东扎实的JDOS技术,MySQLDocker容器实例达到10000多级。借助JDOS技术优势,CM获得了三个主要方面的技术收益:CM利用Docker容器资源隔离能力,有效支持同一宿主物理机上多个MySQL实例的直接资源隔离,大大提高了数据库实例的部署密度,有效提高资源利用率。CM利用Docker容器资源的平滑升级能力,方便数据库实例的平滑扩容。CM利用JDOS平台的资源池化,提供管理容器生命周期的API能力,实现用户登录、退出数据库和自动化运维。本文将从架构设计、性能测试等方面来讲解京东CM的实现过程。整体架构CM与JDOS解耦。CM负责管理MySQL主从集群的生命周期管理;京东JDOS负责单个MySQL容器实例的生命周期管理。京东Docker容器集群分为多个Region和多个POD部署,不同集群之间的网络互通有效支持每个MySQL实例被业务系统直接调用,保证最佳的网络延时性能。MySQL集群实例优先级和配额数据库集群根据业务的重要性划分不同的优先级。京东的划分更细。这里我们将其简化,分为两种优先级:核心系统和非核心系统。云数据库管理平台在调用JDOS平台API时只需要包含priority=0,即创建核心系统所依赖的数据库。京东JDOS平台会强制将属于集群的多个MySQL实例分派到不同的机架上,资源不会“超配”。针对底层资源的云化和成本核算的要求,每个业务部门都会分配一定的额度。数据库集群实例创建成功后,会自动从部门中扣除相应的资源值。否则,配额销毁时将归还部门。数据库集群DB级别的监控告警由云数据库集群平台提供。对于底层计算、网络、存储等资源层面的告警,由底层京东Docker容器平台向云数据库集群提供数据。JDOS架构JDOS是京东统一数据中心的计算、网络、存储管理平台。除了支持CM,还支持京东所有业务系统的运行环境。JDOS系统基于京东扎实的Openstack、Docker等开源技术的持续研发能力,提供稳定、高性能的计算资源平台。每个组件都部署为一个独立的服务,相互之间使用MQ进行交互。京东对主要核心组件服务进行了重构,使JDOS平台能够支持更大的集群规模,目前稳定在6K物理计算节点。重新设计JDOS升级功能,流畅无感知,有效支持长时间运行容器的稳定性。JDOS控制节点JDOS控制节点服务组件借助Haproxy以Pool模式部署,有效避免单点和负载能力问题。控制节点的三台物理机分别跨接在不同的机架上,避免了Tor交换机、机架电源、服务器等故障的影响。控制节点服务组件的混合部署进一步提高了各服务的高可用性和负载能力控制节点的组件。例如,计算服务API、图像服务API、认证服务API、网络服务API、存储服务API进程混合在同一台物理机上。JDOS计算节点计算节点管理网络和虚拟化数据网络采用不同网口隔离,全10G网络环境很好的支持数据库的网络环境。特别是京东在虚拟化网络技术方向的厚积薄发,基本可以将虚拟化网络的损耗控制在2%以内。调度调度架构简单,负载可扩展。主要思想是先过滤掉一个系列中不满足要求的计算节点,然后打分,最后排序,选出最好的返回调度结果。资源分区调度按照Region、POD、Zone、物理机四个层次划分计算区域。调度算法灵活可配置,保证业务特性与计算硬件环境特性的结合。比如CM机器都是SSD硬盘,那么JDOS会在每个数据中心提供CMSSDZone标签,将CM的创建请求派发给SSD硬盘的计算区。亲和和反亲和调度创建一个新的数据库集群实例,比如一个primarylayer,JDOS调度器会把两个MySQL容器实例分布到不同的rack上。从库的业务需求较多,要求从库的读取性能较高。JDOS调度器会根据performance_slave=True标志,尽可能将slave库创建到一个网络不太繁忙的机架上,并且和master在同一个物理POD上,甚至在同一个Tor交换机下的不同物理机上。如果业务需要增加备份的从库需求,JDOS调度器会强制根据DB_Cluster_ID=uuid,backup_slave=True标志创建从库,避免宿主机、机架甚至POD已经有DB_cluser_ID.可扩展性底层JDOS资源池的可扩展性是根据使用率规划底层物理计算资源。各CM库使用资源平滑扩展,CPU、内存、网络、磁盘空间等均支持平滑扩展。直接重置修改cgroup配置即可达到平滑扩容的目的。结合京东设计的资源隔离策略,cpuset和cpushare并存,提高资源利用率。MySQL实例性能性能测试环境部署图测试环境硬件配置多容器实例Benchmark测试测试模型场景描述基础数据为:8个容器,每个容器基础数据量1000W(532M),单表加压,每表10W线路记录,同时向多个容器发起同一个请求,测试响应,对比物理机相同线程数的情况。容器测试数据物理机数据稳定性测试场景说明单容器1000W基础数据,单表请求10W数据,8个容器24小时并发运行。性能表现CPU性能磁盘性能网络性能【本文来自专栏作者张凯涛的微信公众号(凯涛博客)公众号id:kaitao-1234567】点此阅读作者更多好文
