京东弹性云1.0:大规模容器实践与网络性能优化

需积分: 10 3 下载量 24 浏览量 更新于2024-07-18 2 收藏 3.57MB PPTX 举报
"京东在大规模部署容器的过程中,面临并解决了网络性能优化的挑战。京东弹性云1.0技术解析展示了其数据中心如何实现100%的容器化运作,利用JDOS架构来管理OpenStack、虚拟机(VMs)、物理服务器和容器。在这一过程中,京东还开发了JFS、OVSD以及PDK来提升网络性能。本文深入探讨了单个容器的CPU、内存、磁盘I/O以及虚拟化网络的优化策略,并强调了性能监控和网络QoS的重要性。" 在容器化的CPU管理方面,京东利用Cgroups(控制组)和CFS(完全公平调度器)来分配和限制容器的CPU资源。Cgroup使得每个CPU拥有一个任务队列,而宿主机的高负载可能会影响到同一主机上的其他容器。容器的CPU利用率并不总是与导入流量成线性关系,因为不是所有程序都能充分利用CPU。此外,CPU亲和性(CPUAffinity)和磁盘I/O对CPU的影响也是需要监控的关键因素。 内存管理方面,京东使用Cgroup来跟踪内存使用,包括RSS(Resident Set Size)、共享内存以及总内存。为了防止内存溢出,京东采用了类似于`kill-9`的OOM(Out-of-Memory)机制,并管理缓存(如file、binary cache)、Slab(用于小对象的内存分配)。在NUMA(Non-Uniform Memory Access)环境中,内存泄漏检测也非常重要。此外,京东的容器默认限制了`/dev/shm`的大小,以及内存共享的大小。 在磁盘I/O方面,虽然京东不使用cgroup的blkio支持QoS(服务质量),但它们采用了SAS 10K RPM RAID5硬盘,并使用不同的I/O调度器(如NOOP、CFQ、Deadline)。京东开发了自己的胖容器技术,利用LVM和JDPD(京东物理分区技术)来提高存储效率。然而,由于同步写入的问题,这可能导致性能损失。 对于网络虚拟化,京东选择禁用Docker的默认网络,转而使用JDOVS-VLAN,赋予ContainerIP一等公民的地位,确保QoS的公平性。通过网卡中断CPU Affinity的设置,京东能够充分利用10Gbps网卡的性能。监控系统包括收发包和流量统计,以确保网络的高效运行。OpenFlow被用于简化网络管理和性能优化,使容器间的通信性能与物理机相当。 最后,容器间的网络通信性能和物理机之间的通信性能被详细分析,展示了京东如何通过自研技术从F版本的OpenStack集群规模开始进行优化。这些实践提供了宝贵的经验,对于任何希望在大规模环境下优化容器网络性能的企业来说都是宝贵的参考。