基于超融合架构的应用云平台部署实践

作者介绍:张扬,DaoCloud 售前工程师,致力于企业 IT 环境中容器化、超融合和云计算方面的需求分析、方案设计和技术支持。曾任职于 IBM AICS 云服务项目并负责 Cloud Infra 和 DevOps 相关工作。个人公众号:小张烤茄。

随着云计算的逐步落地,容器化和超融合等技术开始风靡整个IT圈。本次分享主要从技术层面讲述云计算环境中容器化和超融合的双擎工作模型。

超融合概念

超融合基础架构 ( Hyper-Converged Infrastructure,或简称” HCI “) 也被称为超融合架构,是指在同一套 x86 单元设备中不仅仅具备计算、网络、存储和服务器虚拟化等资源和技术,而且还包括缓存加速、存储分层、重复数据删除、在线数据压缩、快照技术等元素,并且多节点可以通过网络聚合起来,实现模块化的无缝横向扩展 ( scale-out ),形成统一的资源池。

传统集中式存储的基础架构一般会被分为四层:以太网络层、计算资源层、存储网络层和存储资源层。如下图:(图中没有涉及以太网络层)

640

这样的模型在传统的架构中是非常适用的,但是随着云计算和用户体验时代的体验到来,在应用规模比较大的场景中该模型面临着很大的挑战。

比如:集中存储容易成为 IO 性能瓶颈、层次过多不易管理、扩展复杂且价格昂贵、数据储存偏向中心化等等。如下图:

640-2

超融合基础架构基于 Web Scale (一种面向基础架构和资源的全新架构方式,实现互联网规模的弹性扩展能力)的设计思想,从硬件层面将计算资源层、存储网络层和存储资源层融合为一层,增强数据中心基础架构的灵活性并降低复杂度。如下图:

640-3

超融合从硬件将传统的计算资源和存储资源集成到一个 2U 的标准设备里,并提供千兆网络口用于前端应用的访问,万兆网络口用于后端分布式存储的数据传输,从而全面摆脱传统造价昂贵的存储网络和集中式存储。

同时也在软件层面基于软件定义一切则准则,使用虚拟化和分布式存储等技术,实现分布式的资源调度。如下图:

640-4

分布式架构将所有的资源池化,从而实现单点性能瓶颈的消除、去中心化、无上限扩展等云计算环境中所需要的基本要素。如下图:

640-5

超融合基础架构的本质是在硬件层包含计算和存储资源,并在软件层通过软件定义的方式实现资源池化,为上层应用提供去中心化且可弹的基础架构支撑。

超融合架构介绍

1. 硬件架构

下图可以看到,Nutanix 3000 系列的超融合硬件设备是一台 x86 平台的 2U 机架式服务器。

640-6

含有:

  • NODE: 每台 Nutanix 服务器可支持 1 到 4 个节点。
  • SSD: 每节点可支持一到两块 400 或 800GB 的固态硬盘,最大支持 6400GB 。
  • HDD: 每节点可支持一到四块 1TB 的机械硬盘,最大支持 16TB。
  • CPU: 每节点可支持一到两颗 Intel CPU,最大支持 64 核。
  • MEM: 每节点可支持 64 到 512GB 内存,最大可支持 2TB。
  • SATADOM: 每节点必须含有一块 64GB 的 SATA 接口的固态硬盘,预装客户所选择虚拟化类型的 Hypervisor。有 Nutanix AHV, VMWare ESXi 和 Microsoft Hyper-V 三种可选。
  • NIC: 每节点含有两块 10GB 以太网卡(用于 NDFS ),两块 1GB 以太网卡(用于应用)。
  • Other: 每节点含有一个 VGA 接口,一个 IPMI 接口,4 个 USB 接口。整机 2 个电源模块,4 个风扇。

硬件层是标准的 x86 架构的服务器,包含计算和存储所需的硬件资源。核心是 SATADOM ,其中预装的软件实现了超融合设备“开箱即用”的功能。整个物理架构非常简单,这也是超融合的价值所在,企业基础架构需要扩容的时候拿这样一台设备上架加电接网即可。

2. 软件架构

Nutanix 的软件架构基于两个产品来实现:Prism 和 Acropolis

640-7

Prism 是一个分布式的资源管理平台,基于 Web Console 实现对超融合集群环境对象及服务的管理和监控,类比 VMware vCenter。

Acropolis 是一个分布式的多资源管理器,集协同管理和数据平台功能于一身,实现计算和存储资源的管理和调度,类比 VMware vSphere+vSAN。

包含三个主要组件:

  • DFS ( Distributed Storage Fabric ) 分布式存储架构,基于 Nutanix 分布式文件系统实现存储资源池化的存储平台。
  • AMF ( App Mobility Fabric ) 应用移动性架构,提供在 Hypersior 间动态切换和移动工作负载的功能。
  • AHV ( Acropolis Hypervisor ) 虚拟化管理器,基于 CentOS KVM 开发后的多用途虚拟化管理器组件。

以上介绍的软硬件架构基本在每个厂商的超融合产品中都包含,可以说已经形成了一个业界的标准。特别是软件层面的虚拟化和分布式存储更是每个超融合产品必须具备的功能组件,毕竟超融合的准则是软件定义一切,是实现 SDDC (软件定义数据中心)的终极技术路径。

640-8

软件定义一切的魅力也在于,自行攒机也同样可以基于社区版部署出一套超融合的 HomeLab。

超融合对容器化的支持

Docker 引领的容器化风潮已席卷整个 IT 行业,抛开容器圈内部的生态竞争,容器圈外的IT巨头也纷纷选择支持容器技术的发展,并且也一步步在自己的解决方案中融入容器技术。

Nutanix 在新发布的 AOS 4.7 中同样为 Docker 容器推出了 ABS 和 ACS 功能,使得容器化能够很容易的在超融合架构上被承载。

ABS ( Acropolis Block Services ) 使用 iSCSI 协议将存储资源以块设备的形式提供给的裸机、虚机或容器,从而实现了底层分布式存储对外部对象的支持。

640-9

如图,容器中的重要数据就是以外部 volume 的形式存放到 ABS 存储中,从而实现了数据的持久化。

ACS ( Acropolis Container Services ) 实现 Nutanix 超融合平台对 Docker 容器化的支持,解决了容器应用数据持久化的问题并提供了效能和安全兼顾的”双擎”方案。

640-10

ACS 包含两个主要组件:

  • Nutanix Docker Machine Driver:Docker Machine 操作 Nutanix 平台部署 Docker 宿主机的驱动模块。

640-11

如果有使用过 Docker Machine 的朋友对这个就会比较熟悉, Machine Driver 会被 Docker Machine 调用,然后基于 Prism的 API 在 Nutanix 的超融合平台快速创建标准的 Docker 宿主机。

  • Nutanix Docker Volume Driver:Docker数据卷容器操作 Acropolis Block Services 的驱动模块。

640-12

Volume Driver 提供的容器卷插件 ( Volume Plugin ) 遵循 Docker 提供的规范,将容器中的关键数据储存到 ABS 所提供的分布式存储中,以外部 volume 的形式实现容器数据的持久化。

 容器云管介绍

容器云管平台提供了容器集群环境中容器和应用的管理和编排。目前国内外的容器云管有很多,且基本都是基于 Google Kubernetes、Apache Mesos 和 Docker Swarm 三种编排工具来实现。

下面我将以 DaoCloud Enterprise( DCE )为例进行讲述。我们采用的是一套以 Docker Native 为核心、将 Swarm 作为集群中的编排工具,可部署到物理机、虚拟机或云主机上的企业级应用云管平台。它提供企业容器云环境中应用编排、镜像仓库、负载均衡、日志和监控管理、网络和存储控制等功能。

我们采用 Manager-Worker 的拓扑结构:

640-13

  • DCE Controller 作为控制节点,处理所有的用户请求,并管理集群中的所有容器节点。640-14
  • DCE Agent 作为容器节点,承载用户的容器和应用的运行。

下面我们看一下本次实践的拓扑结构:

本次部署采用企业级的高可用模式,底层使用 Nutanix 的超融合环境生成 5 台标准的 Docker 宿主机,Docker 宿主机中 3 台作为我们的高可用 Controller 集群,2 台作为我们云管平台的 Agent 运行用户应用所需的容器。

部署实践

前面提了很多理论性的东西,下面基于上述功能在超融合架构的基础上部署出一套容器运管平台,并使用应用商店发布一个数据持久化的 WordPress 应用。

1. 宿主机生成

Docker 宿主机是使用 Nutanix Docker Machine Driver 生成的虚拟机,使用该种方式可实现在每台 Docker Host 快速部署的同时保证硬件配置、软件版本的一致性。

命令格式如下:

640-15

有使用过 Docker Machine 基于 virtualbox 生成宿主机的朋友可能会比较熟悉,区别就是驱动为 nutanix,参数方面包含超融合的环境信息以及宿主机的硬件配置信息。

我们通过该命令生成部署所需的5台宿主机。

640-16

2. 分配块设备

向 5 台 Docker 宿主机分配相应容量的块设备作为 Docker Engine 的数据存储。

640-17

作为生产环境的企业级云管平台,我们不推荐使用 devicemapper 默认的 loop-lvm 模式,所以我们需要使用外部 ABS 存储分配的块设备来配置 direct-lvm 模式。

3. DCE云管部署

云管作为容器运行在 Docker 宿主机之中,使用 DCE 自带 Toolbox 来部署也很灵活和简单。

640-18

本次实践用到的 install 命令实现控制节点的部署,join 命令实现容器节点的部署。

部署主控节点

# bash -c “$(docker run –rm daocloud.io/daocloud/dce install)”

部署副控节点
# bash -c “$(docker run –rm daocloud.io/daocloud/dce install –force-pull –replica –replica-controller MASTER_CONTROLLER_IP)”

部署容器节点
# bash -c “$(docker run –rm daocloud.io/daocloud/dce join –force-pull MASTER_CONTROLLER_IP)”

需要注意的是 MASTER_CONTROLLER_IP 为主控节点的 IP 地址。

4. 发布应用

启动应用容器的时候需要调用 Volume Plugin 来实现外部存储的挂在,docker run 命令的格式如下:

640-19

和通常 run 一个容器的命令基本没区别,只需加上 –volume-driver 参数并指定为 nutanix 即可。

由于本例需要使用 DCE 的应用商店部署一个 WordPress 应用,所以我们要修改 WP 的 compose 文件以实现外部 volume 的挂载。在选择部署 WP 应用之后,云管平台默认会提供一个 compose 文件模板,用户可以基于该模板文件进行自定义操作。

640-21

如上图,将 volume_driver 参数指定为 nutanix,并将 volumes 参数中的卷挂载到 WP 的 MySQL 数据目录即可。随后 DCE 会基于自定义好的 compose 文件自动的去部署 WP 应用。

5. 状态检查

1)容器运行状态

640-22

可以看到 compose 文件中定义的 wordpress 和 mysql 两个容器已分别被分布在两个 agent 节点部署且运行。

2)应用访问

640-23

访问平台中 wordpress 容器提供的应用链接来确认应用可成功访问。( WP 的配置步骤在此省略)

3)外部卷

640-24

Compose 文件定义的外部卷 wpdb 已经在存储池中创建成功,数据持久化功能得以实现。

至此基于 Nutanix 超融合架构的容器云管平台部署已经完成。本次主要是从技术层面抛砖引玉似的分享容器化+超融合这种双擎模式的尝试,希望能给大家带来一些启发。

Leave a Reply

Your email address will not be published. Required fields are marked *