【鲲鹏经典直播征文】+【鲲鹏应用使能套件】BoostKit虚拟化

举报
nukinsan 发表于 2021/08/04 23:21:10 2021/08/04
【摘要】 【鲲鹏应用使能套件】BoostKit虚拟化介绍,从四个方面讲解了【鲲鹏应用使能套件】BoostKit虚拟化优势及特性。

一、鲲鹏应用使能套件BoostKit虚拟化整体介绍

   1)主流虚拟化技术

对比了几种主流虚拟化技术架构:ESXi、Xen与KVM,其主要差别在与各组件(CPU、内存、磁盘与网络IO)的虚拟化与调度管理实现组件有所不同。

  • ESXi虚拟化:所有虚拟化功能都在内核实现。
  • Xen虚拟化:内核仅实现CPU与内存虚拟化, IO虚拟化与调度管理由Domain0(主机上启动的第一个管理VM)实现。
  • KVM虚拟化:内核实现CPU与内存虚拟化,QEMU实现IO虚拟化,通过Linux进程调度器实现VM管理。

   2)虚拟化发展趋势:

  • 经过长时间发展,传统行业市场基于KVM技术构筑成熟、稳定的IaaS平台;
  • 互联网行业基于Docket容器技术构筑灵活、标准化、轻量化PaaS平台;

   3)鲲鹏虚拟化总体架构

  鲲鹏BoostKit虚拟化总体架构主要由硬件基础设施、操作系统、云平台、云管理集群平台构成,其中云平台支持华为自研的HCS(HUAWEI CLOUD Stack)私有云平台以及开源QEMU-KVM、开源Docker容器平台。云管理集群平台包括开源OpenStack平台、开源oVirt平台和开源Kubernetes平台。

   4)鲲鹏BoostKit虚拟化优势:

    鲲鹏BoostKit虚拟化基于TaiShan 200服务器,端到端打通硬件、操作系统、虚拟化软件、OpenStack云管理软件的全堆栈,并根据鲲鹏架构进行深度性能调优。鲲鹏BoostKit虚拟化相比友商在性能、虚拟机密度方面有一定优势。性能调优从硬件参数、操作系统内核、虚拟化调优3个方面展开。主要价值如下:

    高性能

    鲲鹏BoostKit虚拟化深度进行性能优化,充分发挥鲲鹏处理器的多核性能优势:

  • TaiShan 200服务器(2*华为鲲鹏920 5250处理器)对比业界主流高端双路服务器,满负载场景下业务性能有所提升。
  • TaiShan 200服务器(2*华为鲲鹏920 5250处理器)对比业界主流高端双路服务器,综合负载场景下业务性能有所提升。
    鲲鹏BoostKit虚拟化从硬件参数、操作系统内核及虚拟化平台进行性能调优。调优项如所示。
    图 虚拟化性能调优项

    开放生态

    鲲鹏BoostKit虚拟化拥有开放的软件生态:

  • 支持开源KVM、开源Docker组件,支持开源OpenStack、Kubernetes和oVirt云管理平台。
  • 支持华为HCS私有云。

   5)鲲鹏BoostKit虚拟化平台优势:

  • 64核+多核计算架构:资源池大、整机性能高;
  • 虚拟机基于物理核构建:VM隔离性好,性能更稳定;
  • 整机虚拟机密度更高:减少需要部署的服务器降低Capex;

二、鲲鹏应用使能套件BoostKit虚拟化开源使能

   1)鲲鹏支持开源OpenStack+KVM虚拟化

    OpenStack+KVM解决方案是TaiShan 200服务器和开源OpenStack/KVM组合解决方案,此方案解决开源OpenStack和KVM虚拟化软件在TaiShan服务器上适配问题,同时基于开源软件进行性能调优,给客户提供性能调优指导。

   OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集。其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云提供可扩展的、灵活的云计算。

   OpenStack包含主要开源组件包括Nova、Cinder、Neutron、Glance、Swift、Placement、Keystone、Horizon、Heat、Ceilometer。

   2)鲲鹏支持开源Kubernetes+Docker虚拟化

   Kubernetes(K8s)+Docker解决方案是TaiShan 200服务器和开源K8s/Docker组合解决方案,此方案解决开源K8s和Docker虚拟化软件在TaiShan服务器上适配问题,同时基于开源软件进行性能调优,给客户提供性能调优指导。

   Linux container技术是通过与主机共用内核,结合内核的cgroup和namespace实现的一种虚拟化技术,极大的减少了对主机资源的占用且具有较快的启动速度。Docker就是一个Linux container引擎技术,实现应用的打包、快速部署等。Docker通过Linux Container技术将App变成一个标准化的、可移植的、自管理的组件,实现了应用的build once,run everywhere。Docker技术特点是:应用快速发布、应用部署和扩容简单、更高的应用密度、应用管理更简单。

   Kubernetes将Docker容器宿主机组成集群,统一进行资源调度,自动管理容器生命周期,提供跨节点服务发现和负载均衡;更好的支持微服务理念,划分、细分服务之间的边界,比如Label、Pod等概念的引入。

   K8s由Master和Node组成,其架构轻量,迁移方便,部署快捷,插件化,可扩展。

   3)鲲鹏支持开源Ovirt+KVM虚拟化

    oVirt和KVM解决方案是TaiShan 200服务器和开源Ovirt、KVM组合解决方案,此方案解决oVirt虚拟化软件在TaiShan服务器上适配的问题。

   oVirt是一个开源虚拟化管理平台,它允许从具有独立于平台访问的Web的前端集中管理虚拟机、计算、存储和网络资源。主要组件元素包括oVirt Engine、VDSM、基于KVM的虚拟机、存储、数据库。

   oVirt和KVM部署架构如下图所示。

   4)鲲鹏OpenStack虚机与X86平台混合部署

     应用场景:

    在OpenStack云平台中,因业务架构、节点类型需要不同的Availability Zone可用域,包括计算Nova域、存储Cinder域、网络neutron域,并期望可以将AZ对应起来以便起到隔离的效果,每个AZ域之间是隔离的。

     部署方式包括

  • 虚拟机场景混合部署
  • 裸金属服务场景混合部署
  • Openstack与Ceph集成混合部署(Ceph-14.2.1)

   5)鲲鹏K8S Docker容器与X86平台混合部署

     应用场景:

  • K8S容器集群扩容场景
  • 新建K8S容器集群场景

     技术原理:

  • K8S原生支持多体系结构混合部署,无需修改代码

     支持混合部署方式:

  •     K8S与Docker容器集群混合部署(TaiShan 2000和RH2288 V5)

三、鲲鹏BoostKit虚拟化关键特性

   1)大规模Docker容器组网特性

        容器网络简介

        在容器化微服务化业务场景,云端部署容器的关键之一是管理容器集群间的网络,使得节点内部或物理节点之间的容器可以达成网络互通。

        当前针对Linux容器配置网络接口业界存在两个标准提议——容器网络模型(Container Network Model,简称CNM)和容器网络接口(Container Network Interface,简称CNI),本文基于业界最常用的容器编排引擎Kubernetes,针对当前较为成熟和使用最为广泛的网络平面组件Open vSwitch和Calico进行介绍,并进行大规模集群部署的验证实践,用户可根据业务场景的实际规模、功能需求和性能诉求,决定使用最适合的网络平面组件。

        应用场景

    用户在使用容器编排引擎部署服务时,例如Kubernetes集群,需要进行网络平面规划和部署时,可参考本文内容进行组件的选型和择优;当集群规模较大时(物理节点或Pod对象规模超过100量级),本文对用户网络平面的常见组件进行组网与模拟测试。

        实现原理

        Open vSwitch

        如下所示,OVS软件主要架构由内核态的Datapath和用户态的vswitchd、ovsdb组成。

        Datapath是负责数据交换的内核模块,从网口读取数据,快速匹配FlowTable中的流表项,成功的直接转发,失败的上交vswitchd进程进行处理。在OVS初始化和port binding时注册钩子函数,把端口的报文处理接管到内核模块;

        vswitchd是负责OVS管理和控制的守护进程,通过Unix Socket将配置信息保存到ovsdb中,并通过Netlink和内核模块进行交互;

        ovsdb是OVS数据库,保存了OVS的配置信息。

        此外,OVS发布包中还包含了一系列管理工具(ovs-vsctl、ovs-dpctl、ovs-ofctl、ovs-appctl、ovs-docker等),方便用户对OVS进行配置和使用。

        Open vSwitch软件架构图

        如下所示,在OVS接管网络数据前,数据包在Linux网络协议中的流向为虚线所示——物理网卡端口在接收到数据包后经过内核协议栈的层层解析,最后离开内核态,把数据传送到内核态;

        而经过OVS创建网桥、绑定物理网卡后,数据流从物理网卡端口收包后,在内核态经由OVS的vPort进入到OVS中,根据数据包Key值进行FlowTable流表匹配,成功则执行流表Action后续流程,失败则进行Upcall由vswitchd进程进行处理。

         Open vSwitch基本原理图

        Calico

        如下图所示,Calico组件主要架构由Felix、Confd、BIRD组成。

        Felix是负责Calico Node运行并作为每个节点Endpoint端点的守护程序,它负责管理当前主机中的Pod信息,与集群etcd服务交换集群Pod信息,并组合路由信息和ACL策略;

        Confd是负责存储集群etcd生成的Calico配置信息,提供给BIRD层运行时使用;

        BIRD(BIRD Internet Routing Daemon)是核心组件,Calico中的BIRD特指BIRD Client和BIRD Route Reflector,负责主动读取Felix在本机上设置的路由信息,并通过BGP广播协议在数据中心中进行分发路由。

        此外,etcd组件是Calico组件运行的依赖组件,需事先在集群中部署etcd服务,或复用Kubernetes的etcd;Calico官方也提供了calicoctl管理工具,用于与Calico Node进行状态确认、状态配置等操作。

        Calico软件架构图

       2)OVS流表归一化特性(CentOS 7.6)

        简要介绍

        OVS流表归一化特性是XPF网络加速框架的一种OVS流表处理加速方案。其核心思想是在开源OVS+DPDK方案基础上,对其流表做归一化处理,减少开源方案某些场景下数据处理要多次查表的次数,来达到加速云计算中数据包转发性能的目的,典型应用场景是VXLAN+CT组网。

        DPDK是Intel公司开源的高性能用户态网络数据平面开发工具集,Open vSwitch(以下简称OVS)是云计算内广泛应用的开源虚拟交换机实现,OVS+DPDK提供了灵活的网络管理和高性能转发的能力。关于OVS和DPDK的更多信息请访问DPDK官网(https://www.dpdk.org/)和OVS官网(https://www.openvswitch.org/)。

        环境要求

        硬件要求

    项目

    说明

    CPU

    鲲鹏处理器

    网卡

    支持DPDK

        操作系统要求

       

       3)OVS流表网卡加速特性

        简要介绍

        OVS流表网卡加速方案主要是利用智能网卡的OVS流表卸载方案,将原来处于系统内核态的datapath转发路径卸载到智能网卡上。利用网卡硬件查表替代原内核态的软件查表流程,加速了流表的查找速度,提升报文的转发性能。

        OVS流表网卡加速方案基于SR-IOV实现。SR-IOV(Single-Root I/O Virtualization硬直通)分为PF(Physical Function)和VF(Virtual Funciton)两个功能类型,其架构设备允许一个物理设备支持多个虚拟功能,可减少每个附加功能的硬件成本。使用硬加速特性,需要配置并使能SR-IOV。

        组网环境

        如下图组网图所示,使用SR-IOV需两台服务器,两台服务器的网卡通过网口直连的方式进行网络通信。文中对两台服务器简称为Host1和Host2。

    组网图

    服务器

    IP地址

    Mellanox CX5网口名

    Host1

    90.90.51.22

    • enp1s0f0

      PCI端口号:0000:01:00.0

    • enp1s0f1

      PCI端口号:0000:01:00.1

    Host2

    90.90.51.112

    • enp1s0f0

      PCI端口号:0000:84:00.0

    • enp1s0f1

      PCI端口号:0000:84:00.1

        硬件配置

        硬件配置如下表硬件配置所示。

    项目

    说明

    CPU

    鲲鹏920处理器

    网卡

    Mellanox CX5公版系列网卡

    其它

    RAID卡要求支持直通,其它无特殊要求

        操作系统要求

        操作系统要求如下表操作系统要求所示。

    项目

    版本

    备注

    openEuler

    20.03-LTS-SP1

    -

    Kernel

    4.19.90

    操作系统镜像自带版本

    网卡固件

    16.29.2002

    Mellanox驱动包自带

    网卡驱动

    OFED-5.2-2.2.0

    -

    Python

    2.7.5

    系统镜像自带版本

    gcc

    7.3.0

    系统镜像自带版本

    虚拟机OS

    CentOS Linux release 7.6.1810 (AltArch)

    -

     


    四、鲲鹏应用使能套件BoostKit虚拟化调优

       1)Docker容器调优

        Docker使用客户端-服务器体系结构,架构图如下图所示。Docker客户端与Docker守护进程(Docker daemon)通信,该守护进程负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护进程可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护进程。Docker客户端和守护进程使用REST API、UNIX套接字或网络接口进行通信。

       Docker容器架构

        调优思路

        主要从硬件参数、操作系统、Docker容器等这几个维度介绍TaiShan服务器在CentOS 7.6操作系统Docker容器场景的性能调优。

    Docker容器平台性能调优,可参考下图流程。

        TOP N调优项

        下面简单汇总影响/提升Docker容器性能的TOP N调优项,用户可以基于自己的需求选择合适的调优项做适当调整,使其在某种特定场景下达到性能最优。

    调优项

    描述

    适用场景

    备注

    BIOS配置

    内存刷新频率设置为Auto

    商用

    对内存带宽性能提升明显,改成Auto能提升性能

    NUMA亲和性

    Docker容器的CPU绑核和内存分配在同一个物理node节点,避免跨die跨片访问内存

    商用

    可提升Docker容器计算性能

    CPU绑核

    Docker容器的CPU绑核按1:1绑定

    商用

    -

    Docker容器的CPU绑核按CPU Cluster范围绑核

    仅适用于POC测试

    可提升Docker容器计算性能

    网卡中断亲和性

    将中断绑定到物理网卡所在的numa的CPU上

    商用

    -

        2 )KVM调优

        KVM虚拟化架构

         通过在服务器上部署KVM虚拟化环境,将硬件资源虚拟化,从而使一台物理服务器可以承担多台服务器的工作。KVM虚拟化平台组成如下图所示,其中Qemu-KVM负责硬件资源的虚拟化,采用虚拟计算、虚拟网络、虚拟存储等技术,完成计算资源、存储资源、网络资源的虚拟化。

         KVM虚拟化架构

         调优思路

         主要从硬件参数、操作系统和虚拟化三个维度介绍如何对TaiShan服务器在CentOS 7.6操作系统下KVM虚拟化场景做适当调整,使其在某种特定场景下达到性能最优。

         KVM虚拟化平台性能调优,可参考如下图所示的流程。

         KVM虚拟化性能调优三板斧

         TOP N调优项

         下面简单汇总影响/提升KVM虚拟化性能的TOP N调优项,用户可以基于自己的需求选择合适的调优项做适当调整,使其在某种特定场景下达到性能最优。

    调优项

    描述

    适用场景

    备注

    BIOS配置

    内存刷新频率设置为Auto

    商用

    对内存带宽性能提升明显(详见设置内存刷新频率为Auto

    NUMA亲和性

    虚拟机的vCPU和内存分配在同一个物理node节点,避免跨die跨片访问内存

    商用

    对CPU虚拟化性能提升明显(详见CPU 1:1绑核,内存访问同die

    CPU绑核

    vCPU和pCPU一一绑定

    商用

    对CPU虚拟化性能提升明显(详见虚拟机绑核

    vCPU按CPU Cluster范围绑核

    仅适用于POC测试

    对内存带宽性能提升明显(详见虚拟机绑核

    内存大页

    关闭透明大页,使用512MB内存大页

    商用

    在CentOS7.6下对CPU虚拟化性能提升明显,大约提升5%(详见虚拟机使用内存大页

        3 )Openstack调优

         OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。

         作为一个开源的云计算管理平台,OpenStack由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

         调优原则

         在性能优化时,我们必须遵循一定的原则,否则,有可能得不到正确的调优结果。主要有以下几个方面:

    • 对性能进行分析时,要多方面分析系统的资源瓶颈所在,因为系统某一方面性能低,也许并不是它自己造成的,而是其他方面造成的。如CPU利用率是100%时,很可能是内存容量太小,因为CPU忙于处理内存调度。
    • 一次只对影响性能的某方面的一个参数进行调整,多个参数同时调整的话,很难界定性能的影响是由哪个参数造成的。
    • 由于在进行系统性能分析时,性能分析工具本身会占用一定的系统资源,如CPU资源、内存资源等等。我们必须注意到这点,即分析工具本身运行可能会导致系统某方面的资源瓶颈情况更加严重。

         调优思路

         下面介绍OpenStack虚拟化环境的调优思路及分析过程,如下图所示。

        调优分析思路如下:

    1. 当性能指标不满足要求时,首先排查是哪段的问题。确认OpenStack客户端(控制节点)的命令是否成功发送至服务端(计算/存储节点)。
    2. 若服务端没有接收到较多压力,则排查客户端(可能性较小)与网络问题。
    3. 对于服务器端问题,需要定位的是硬件相关指标,例如CPU,内存、网络、磁盘等,如果是某个硬件指标有问题,需要深入的进行分析。
    4. 根据硬件指标,分析虚拟机内运行的应用程序,如算法设计、线程数、缓存方式等。具体分析不同程序的优化方案。

    五、结束语

        通过本次学习,了解鲲鹏虚拟化相关优势。

    1. 鲲鹏BoostKit虚拟化平台在业界具有较大优势;
    2. 鲲鹏BoostKit虚拟化具有较好开源使能;
    3. 鲲鹏BoostKit虚拟化具有较多的关键特性;
    4. 鲲鹏BoostKit虚拟化支持多方面调优;

    =============================================================

       收集鲲鹏BoostKit虚拟化相关链接如下,供大家参考。

    1、直播链接:https://bbs.huaweicloud.com/live/kunpeng_live/202107161930.html
    2、鲲鹏BoostKit分布式存储文档链接:https://support.huaweicloud.com/twp-kunpengcpfs/kunpengcpfs_19_0019.html
    3、鲲鹏BoostKit交流社区:https://bbs.huaweicloud.com/forum/forum-931-1.html

    【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。