28
参考架构 英特尔® Builders 企业数据中心 作者 英特尔 DCG、DSG、ESS 云解决方案架构师 Krzysztof Ciepłucha 英特尔 DCG、DSG、ESS SDI 解决方案架构师 兼工程师 Patryk Wolsza 英特尔 DCG、DSG、ESS 云解决方案工程师 Łukasz Redynk 英特尔,Jennifer Lankford 英特尔 RSD 生态系统技术战略部总监 Joe Carvalho Vmware 首席工程师兼首席生态系统技术专家 T. Sridhar 戴尔 EMC 客户解决方案中心解决方案架构师 Kris Applegate 要点综述 今天的开发人员正在推动企业采用容器化应用来加速软件交付。容器可帮助开 发人员通过开发周期快速迭代应用,和加快新服务的上市时间,来提高企业竞 争力。 但是,对于将这些快速开发的应用投入生产的企业,应用需要满足容器本身无 法满足的高级安全要求。另一方面,在虚拟机 (VM) 中托管的传统应用通过操 作系统 (OS) 级别的隔离和虚拟机监控程序攻击面的减少,提供更高级别的安 全性。这种情况带来了一个问题:企业如何提供与基于虚拟机监控程序的工作 负载所带来的相同级别的安全性,同时在开发周期中提供基于容器的应用的优 势?单个环境如何以简单的方式支持这两种类型的工作负载? 基于 VMware vSphere* 的VMware Cloud Foundation* 提供了一个满足对 基于虚拟机的工作负载高级安全需求的云平台。通过将 VMware vSphere Integrated Container* 添加到此环境中,企业也可以在同一个虚拟机监控程序 上部署容器。该策略将基于虚拟机的工作负载的高级安全功能(如基于角色的 访问控制、身份管理和操作系统 (OS) 级别的隔离)扩展到容器化应用。 此参考架构提供了有关构建统一云解决方案的配置详细信息,通过该信息,组 织可以更安全地构建和运行托管在虚拟机和容器上的应用。从软件角度来看, 该解决方案由 VMware Cloud Foundation 和作为附加组件安装的 vSphere Integrated Container 组成。该解决方案的硬件采用单个机架的 Dell EMC PowerEdge 服务器,该服务器采用英特尔® 处理器、英特尔® 固态盘 (SSD)、 英特尔® 以太网网络适配器以及思科*和戴尔*的交换机。 构建面向虚拟机和容器的统一 云平台 当前,开发人员通常使用 Docker* 等容器技术来帮助快速交付应用, 以及确保应用在两种环境之间的可移植性。容器所提供的优势特别适用于以微 服务集 — 一种稳定的架构模型 — 形式开发的应用,许多人将这种模型视作未 来全球层面应用的标准。 安全、统一的云平台支持托管基于 虚拟机和基于容器的应用

参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构英特尔® Builders企业数据中心

作者英特尔 DCG、DSG、ESS 云解决方案架构师

Krzysztof Ciepłucha

英特尔 DCG、DSG、ESS SDI 解决方案架构师 兼工程师

Patryk Wolsza

英特尔 DCG、DSG、ESS 云解决方案工程师 Łukasz Redynk

英特尔,Jennifer Lankford

英特尔 RSD 生态系统技术战略部总监 Joe Carvalho

Vmware 首席工程师兼首席生态系统技术专家 T. Sridhar

戴尔 EMC 客户解决方案中心解决方案架构师 Kris Applegate

要点综述今天的开发人员正在推动企业采用容器化应用来加速软件交付。容器可帮助开发人员通过开发周期快速迭代应用,和加快新服务的上市时间,来提高企业竞争力。

但是,对于将这些快速开发的应用投入生产的企业,应用需要满足容器本身无法满足的高级安全要求。另一方面,在虚拟机 (VM) 中托管的传统应用通过操作系统 (OS) 级别的隔离和虚拟机监控程序攻击面的减少,提供更高级别的安全性。这种情况带来了一个问题:企业如何提供与基于虚拟机监控程序的工作负载所带来的相同级别的安全性,同时在开发周期中提供基于容器的应用的优势?单个环境如何以简单的方式支持这两种类型的工作负载?

基于 VMware vSphere* 的VMware Cloud Foundation* 提供了一个满足对基于虚拟机的工作负载高级安全需求的云平台。通过将 VMware vSphere Integrated Container* 添加到此环境中,企业也可以在同一个虚拟机监控程序上部署容器。该策略将基于虚拟机的工作负载的高级安全功能(如基于角色的访问控制、身份管理和操作系统 (OS) 级别的隔离)扩展到容器化应用。

此参考架构提供了有关构建统一云解决方案的配置详细信息,通过该信息,组织可以更安全地构建和运行托管在虚拟机和容器上的应用。从软件角度来看,该解决方案由 VMware Cloud Foundation 和作为附加组件安装的 vSphere Integrated Container 组成。该解决方案的硬件采用单个机架的 Dell EMC PowerEdge 服务器,该服务器采用英特尔® 处理器、英特尔® 固态盘 (SSD)、英特尔® 以太网网络适配器以及思科*和戴尔*的交换机。

构建面向虚拟机和容器的统一云平台当前,开发人员通常使用 Docker* 等容器技术来帮助快速交付应用, 以及确保应用在两种环境之间的可移植性。容器所提供的优势特别适用于以微服务集 — 一种稳定的架构模型 — 形式开发的应用,许多人将这种模型视作未来全球层面应用的标准。

安全、统一的云平台支持托管基于虚拟机和基于容器的应用

Page 2: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

2

然而,随着开发人员越来越多地使用容器,许多 DevOps 工程师和 IT 运营团队面临一项挑战:当前的软件定义数据中心 (SDDC) 如何以最顺畅的方式增加对容器的支持,同时考虑企业应用所需的安全性、法规遵从和监控支持?

与 vSphere Integrated Container 一同部署的 VMware Cloud Foundation 提供了一款简单但令人叹服的解决方案,以帮助保护和支持现有环境(该环境支持基于 VMware ESXi* 的虚拟器)中的容器,无需对网络进行重组或重新架构。采用 vSphere Integrated Container 的 Cloud Foundation 可提供统一、无缝的平台,根据公司现有的 VMware* 安全基础设施以及管理员对 vSphere 的熟悉程度来管理虚拟机和 Docker 容器。

VMware Cloud Foundation* 是什么?

VMware Cloud Foundation 是基于 vSphere 云计算平台构建的一套服务,其组件相互配合,为基于虚拟机的工作负载提供托管、超融合和高度安全的云软件基础设施。VMware Cloud Foundation 套件中的主要组件包括 vSphere、VMware NSX*、VMware vSAN* 和 VMware SDDC Manager*。

VMware vSphere Integrated Container* 是什么?

vSphere Integrated Container 是一种可兼容 Docker 的容器引擎,可安装在 vSphere 顶部,以使容器具备该平台的托管和管理功能。vSphere Integrated Container 安装后,开发人员和管理员都可通过 VMware Cloud Foundation 管理工具和命令提示来供应和管理容器。vSphere Integrated Container 还支持开发人员安全保存和管理容器映像和运行容器化应用实例,从而扩展 VMware Cloud Foundation 的管理功能。

本文将介绍一种特定的 DIY 式云平台实施方法,并详细介绍部署过程中具体所需的软硬件。本参考架构中的特殊实施过程在符合要求的戴尔 EMC* 和英特尔硬件上运行,而且英特尔工程师团队将其作为一款功能齐全的解决方案进行了验证。

图 1.本文所述的这款业经验证的解决方案包括基于 Dell EMC PowerEdge 服务器 (采用英特尔® 固态盘)运行的 VMware vSphere Integrated Container 和 VMware Cloud Foundation

容器 容器 容器

容器引擎

VMware vSphere*

VMware NSX*

VMware vSAN*

VMware Cloud Foundation*

VMware vSphere Integrated Container*

虚拟容器托管

VMware SDDC

Manager*

虚拟机

虚拟机

虚拟机

虚拟机

虚拟机

虚拟机

虚拟机

虚拟机

虚拟机

目录

要点综述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

构建面向虚拟机和容器的统一云平台 . . . . . . . . . . 1

VMware Cloud Foundation* 是什么? . . . . 2

VMware vSphere Integrated Container* 是什么? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

解决方案架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

解决方案架构:软件 . . . . . . . . . . . . . . . . . . . . . . . 3

解决方案架构:硬件 . . . . . . . . . . . . . . . . . . . . . . . 4

配置指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

配置步骤概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

安装和配置 VMware Cloud Foundation . . . . . . . . . . . . . . . 6

安装和配置 vSphere Integrated Container . . . . . . . . . . . 9

了解 vSphere Integrated Container 工作流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

了解虚拟容器主机 . . . . . . . . . . . . . . . . . . . . . . . 11

解决方案:在 vSphere Integrated Container 中容器化和部署应用 . . . . . . . . . . . . . . . . . . . . . . . . 15

部署流程概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

配置 VMware NSX 中的负载均衡和微分段 . . . . . . . . . . . . . . . . . . . 23

配置微分段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

附录/更多资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Page 3: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

VMware SDDC Manager*

VMware Cloud Foundation*

私有云 公有云

VMware vSphere* VMware vSAN* VMware NSX*

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

3

解决方案架构概述

本参考架构中的解决方案包括由特定软硬件组件所组成的单个机架。下文将讨论组成统一 VMware Cloud Foundation 和 vSphere Integrated Container 解决方案的软件组件,之后具体介绍机架中的硬件组件。最后, 本文将介绍运用软硬件组件配置解决方案所需的步骤。

解决方案架构:软件

解决方案所采用的软件包括:VMware Cloud Foundation、vSphere Integrated Container 和部分可 帮助扩展解决方案功能的可选软件组件。

本文所述的软件组件如下所示:

• VMware Cloud Foundation

• VMware vSphere

• VMware NSX

• VMware vSAN

• VMware SDDC Manager

• vSphere Integrated Container

• vSphere Integrated Container 引擎

• vSphere Integrated Container 注册表

• vSphere Integrated Container 管理门户

• 可选组件

• VMware Horizon* 套件

• VMware vRealize* 套件

VMware Cloud Foundation

VMware Cloud Foundation 是一种适用于私有云和公有云的统一 SDDC 平台。VMware Cloud Foundation 能够将管理程序平台、软件定义存储和网络虚拟化整合为一个集成堆栈,从而通过一种管理工具来管理其资源。

VMware Cloud Foundation 跨交换机、服务器和基于服务器的存储提供这种统一管理界面。它以资源池的形式呈现关于物理资源(CPU、内存、存储和网络)的抽象化视图,以便进行操作管理、事件报告和审计。VMware Cloud Foundation 还引进了一种全新的抽象化工作负载域,以创建包括计算、存储和网络资源在内的逻辑池。

图 3.工作负载域支持管理员为工作负载和项目分配 CPU、内存和存储资源

VMware vSphere*vSphere 是 Vmware 的云计算平台,包含 1 类管理程序 (ESXi)、面向各种工作负载或管理域的虚拟管理服务器 (VMware vCenter Server*),以及用于管理 SDDC 中的虚拟机和其他虚拟化组件的管理界面 (vSphere Web Client)。vSphere 还包括 Platform Services Controller* — 一种用于处理全网络安全功能(比如单点登录 (SSO)、许可和证书管理)的服务。

VMware NSX*VMware NSX 是 Vmware 的网络虚拟化软件。VMware NSX 支持您定义(在vSphere 上运行的)虚拟化元素之间的网络连接,以通过微分段规则加强网络安全。VMware NSX 定义的虚拟网络功能 (VNF) 包括切换、路由、防火墙设置、负载均衡和 VPN(IPsec 和安全套接层 [SSL])。

VMware- vSAN*VMware vSAN 为 vSphere 环境中的虚拟机提供高性能、超融合存储。它可用作集成了 vCenter Server 的超融合基础设施的关键构建模块。闪存通过 vSAN 从多个主机进行池化,此外虚拟磁盘可根据需要从可用空间供应。

VMware SDDC Manager*SDDC Manager 是 VMware Cloud Foundation 原生的管理工具,您可以通过该工具供应、管理和监控 VMware Cloud Foundation 部署的逻辑资源和物理资源。SDDC Manager 可帮助管理员执行以下任务:

• 基础设施服务:通过添加和删除机架,或通过添加和删除机架上的主机和交换机来管理物理资源。

图 2.VMware Cloud Foundation 是一款通过 VMware SDDC Manager 托管,并基于 VMware vSphere、VMware vSAN 和 VMware NSX 构建的云解决方案

工作负载域

WD1 WD2IaaS 域 IaaS 域

CPU CPU

内存 内存

存储 存储

所有者 所有者

Page 4: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

4

• 工作负载域管理:将 SDDC 的物理资源整合成一个或多个逻辑实体。在 VMware Cloud Foundation 部署过程中编排逻辑软件和管理组件的关闭和启动。

• 生命周期管理:配置自动升级和补丁安装。

vSphere Integrated Container

vSphere Integrated Container 是一种运行时环境,适用于 vSphere 中的 Docker 容器。vSphere Integrated Container 是 vSphere 的软件扩展,支持管理员供应 vSphere 中的 Docker容器,而且其管理方式与虚拟机 相同。

vSphere Integrated Container 包括 vSphere Integrated Container 引擎、vSphere Integrated Container 注册表和 vSphere Integrated Container 管理门户。

vSphere Integrated Container 引擎vSphere Integrated Container 引擎是可兼容 Docker 远程 API 的引擎,在 vSphere 中以虚拟机的方式运行容器映像。

vSphere Integrated Container 注册表(“Harbor”)vSphere Integrated Container 注册表别名 “Harbor”,是面向 Docker 映像的私有注册表。它可作为公有 Docker Hub* 的私有、安全备选方案。vSphere Integrated Container 注册表旨在托管于私有内部网络,与 Docker Hub 不同,它包含私有企业常需的特性和功能, 比如安全性、身份和管理功能。

vSphere Integrated Container 管理门户 (“Admiral”)Web 管理界面,别名“Admiral”,是一种管理门户,支持开发团队管理容器注册表、映像、主机和运行实例。

可选组件

两个可选组件分别为 VMware Horizon 套件和 VMware vRealize 套件,用来扩展 VMware Cloud Foundation 部署的功能和管理范围。添加这两个应用套件后,其功能将完全集成至 VMware Cloud Foundation 管理工具。它们都要求支持额外的许可费用。

VMware Horizon* 套件这种可选软件套件包含 VMware Horizon 7 和 VMware App Volumes*,可支持在 VMware Cloud Foundation 中管理虚拟桌面基础设施 (VDI)。

更多关于 VMware Horizon 套件的信息请访问 vmware.com/products/desktop-virtualization.html。

VMware vRealize* 套件 VMware vRealize 套件包括 VMware vRealize Operations*、VMware vRealize Automation*、VMware vRealize Business* 和 VMware vRealize Log Insight*。将该套件作为 VMware Cloud Foundation 部署的一部分,可帮助您扩展云基础设施的自动化、监控、管理和分析功能。

更多关于 vRealize 套件的信息请访问 vmware.com/ products/vrealize-suite.html。

解决方案架构:硬件

构建该解决方案所使用的硬件包括单个机架中的 12 台服务器和 4 台交换机。(1 台交换机仅用于映像,解决方案并不要求使用该交换机。更多信息请参阅表 2。)

机架中包含哪些组件?服务器和服务器组件

本参考架构所使用的服务器组件如表 1 所示。

请注意,网络适配器包含 2 个 10 Gb 端口,均已被占用。另外请注意,还使用了两种不同类型的英特尔固态盘: 高性能固态盘用于高速缓存层,成本较低的固态盘用于数据层。

图 4.VMware SDDC Manager 支持管理员管理物理资源, 以及将容量分成多个逻辑工作负载域

图 5.VMware vSphere Integrated Container 管理门户 (“Admiral”) 显示网络中可用的容器和容器映像视图

Page 5: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

组件 详细信息 数量

服务器 Dell EMC PowerEdge R630 机架服务器 12

CPU 英特尔® 至强® 处理器 E5-2660 v4(2.0 Ghz,14 核,35M 高速缓存,105 W) 每台服务器 2 颗

内存 32 GB DDR4,2400 MHz 内存模块(总共 256 GB) 每台服务器 8

存储(高速缓存层) 800 GB,2.5 英寸串行 ATA (SATA) 英特尔® SSD DC S3710 系列 每台服务器 2 块

存储(数据层) 800 GB,2.5 英寸 SATA 英特尔 SSD DC S3520 系列 每台服务器 8 块

存储控制器 Dell EMC PowerEdge HBA330 微型串行连接 SCSI (SAS),固件版本13.17.03.00

每台服务器 1 个

网络适配器 双端口 10 Gb 英特尔® 以太网融合网络适配器 X520 DP 10Gb DA/SFP+ 和双端口 1 Gb 英特尔® 以太网服务器适配器 I350 网络子卡

每台服务器 1 个

启动设备 戴尔内部双 SD 模块 (IDSDM),2 个 16 GB SD 卡 每台服务器 1 个

VMware Cloud Foundation 部署VMware Cloud Foundation 部署可从单个机架扩展至 8 个机架。在多机架部署中,还需要使用一对 spine 交换机,通常位于第 2 个机架中。对于本例中的单机架部署,则不需要使用任何 spine 交换机。更多信息请参阅《VMware Cloud Foundation 概述和启动指南》http://docs.vmware.com/en/ VMware-Cloud-Foundation/2.2/ vcf-22-ovdeploy-guide.pdf。

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

5

表 2.参考架构所使用的网络组件

表 1.参考架构所使用的服务器和服务器组件

机架中包含哪些组件?网络组件

本参考架构所使用的网络组件如表 2 所示。

请注意,戴尔网络 S3048-ON 交换机支持开放式网络操作系统* (ONOS*)。该特性非常关键,因为开放式网络支持通过 SDDC Manager 进行生命周期管理和交换机供应。

另外请注意,VMware Cloud Foundation 不要求使用戴尔网络 S60 交换机。它作为私有托管交换机,用于初始服务器映像过程。

尽管该解决方案可使用其他硬件组件,但仅列出的组件已面向该参考架构进行了验证和测试。不支持的硬件组件可能会造成无法正常安装,或影响解决方案稳定性或可用性等问题。

如遇获取有关支持硬件的完整列表,请参阅 《面向 VMware Cloud Foundation 的 VMware 兼容性指南》 vmware.com/resources/compatibility/ search.php?deviceCategory=vcf。

**可选;仅用于服务器映像过程

其他硬件要求

获取合格的硬件组件后,还需确保某些 BIOS 选项已启用,以及网络和交换机布线已合理配置。请访问 https://docs.vmware.com/en/ VMware-Cloud-Foundation/2.1.3/ vcf-21-ovdeploy-guide.pdf 参阅《VMware Cloud Foundation 概述和启动指南》, 了解具体的配置步骤。

Role 交换机 详细信息 数量

架顶交换机 思科 Nexus 93180YC-EX NX-OS 7.0(3)I4(2)

48 个 1/10/25 Gbps SFP+ 端口和 6 个 40/100 Gbps QSFP+ 上行链路端口

2

管理交换机 戴尔网络 S3048-ONCumulus Linux 2.5.8

48 个 1-Gbps 1000BASE-T 端口和 4 个 10-Gbps SFP+ 上行链路端口

1

私有托管交换机** 戴尔网络 S60FTOS 8.3.3.10

44 个 10/100/1000BASE-T 和 4 个 1 GbE SFP 1

Page 6: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

6

图 6.解决方案组件实体图

机架示意图

图 6 所示为参考架构所需的硬件组件在机架中的位置。

配置指南下文将介绍在将相应的硬件装配至机架、配置布线并配置所有 BIOS 设置后,构建解决方案所需的步骤。另外,所有磁盘应清空,不应包含任何分区或用户数据。

配置步骤概述

软件堆栈配置和部署包含三个步骤:

1. 安装和配置 VMware Cloud Foundation(包括工作负载域)

2. 安装和配置 vSphere Integrated Container

3. 应用容器化

1 台戴尔 EMC 网络 S3048-ON—管理交换机

2 台思科 Nexus 93180YC-EX—架顶交换机

12 台戴尔 EMC PowerEdge R630(10 块 2.5 英寸 SFF 热插拔磁盘)— 计算资源

• 双路 14 核英特尔® 至强® 处理器 E5-2660 v4,2.0 GHz

• 256 GB RAM(8 个 32 GB DIMM)

• 戴尔 EMC PowerEdge RAID 控制器 HBA330

• 2 块英特尔® SSD DC S3710 系列(高速缓存)

• 8 块英特尔® SSD DC S3520 系列(容量)

• 双端口 10 GbE 英特尔® 以太网融合网络适配器 X520 + 1 GbE 英特尔® 以太网服务器适配器 I350 网络子卡(使用 1 个 10 GbE)

• 双端口 10 GbE 英特尔以太网融合网络适配器 X520 PCIe 网卡 (使用 1 个 10 GbE)

• 2 个冗余 SD 模块,使用 2 个 16 GB SD 卡(管理程序)

• 集成戴尔远程访问控制器 (iDRAC) 企业版

• 戴尔 EMC OpenManage* Essentials 服务器配置管理

• 2 个冗余热插拔电源 (1+1) 750 W

安装和配置 VMware Cloud Foundation

安装和配置 VMware Cloud Foundation 需要执行两个 步骤:

1. 通过 VMware Cloud Foundation 映像应用 (VIA) 映像硬件。在这一步骤中,相应的软件组件及其初始配置设置加载至每台服务器和交换机,并构建和保存完整的硬件库存。

2. 执行 VMware Cloud Foundation 启动流程。在这一步骤中,系统经过初始化、配置并连接至现有数据中心网络。

通过 VMware Cloud Foundation 映像应用 (VIA) 映像硬件

如欲完成这一步骤,请阅读以下准备步骤,然后访问 https://docs.vmware.com/en/VMware-Cloud-Foundation/2.1.3/via-21-guide.pdf,按照“VIA 用户指南”文档中的说明进行操作。文档指出,如果想映像单个机架,建议在台式机或笔记本电脑上安装 VIA。

为该流程做准备时,请确保每台服务器的首个网络界面启用了 PXE 支持。还应配置启动顺序,以便服务器首先尝试从 PXE 启动,然后从本地 SD 卡 (IDSDM) 启动。管理交换机必须处于开放式网络安装环境* (ONIE*) 安装模式,准备安装 Cumulus Linux* 操作系统。思科交换机不应包含任何配置,而且应处于 PowerOn 自动供应 (POAP) 模式。最后,所有 SD 卡和固态盘应清空。如果服务器之前已使用过,硬盘应清空所有数据,因为它可能会干扰映像流程。

在映像流程中,可以观察映像各个组件的进度,并通过同一个 Web 界面查看详细的日志。如果出现故障,可以为任何一台设备重新启动整个过程。正确映像的设备将标有绿色勾选标记。

Page 7: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

7

图 7.完成后的映像流程

映像流程完成后,VIA 执行其他验证操作,并将映像流程中构建的密钥、证书和库存数据库上传至相应的服务器 Secure Shell (SSH)。

映像流程的最后一步是获取引导密码,包括 SDDC Manager VM(亦称 VRM 虚拟机)的密码,后续启动流程中将需要使用该密码。密码在网址 http://192.168.100.2:8080/via/ipsecThumbprint/runId(其中 runId 表示运行编号)下方的 VIA 提供。(VIA 可用于映像多个机架,在这种情况下每个映像流程都是一次单独的运行过程。可以在图 7 的左上角查找运行编号或运行 ID)。

启动 VMware Cloud Foundation

映像流程完成后,可以进入第二个阶段 — 启动 VMware Cloud Foundation。启动流程由 SDDC Manager 进行。请访问 https://docs.vmware.com/en/ VMware-Cloud-Foundation/2.1.3/vcf-21-ovdeploy-guide.pdf,查看《VMware Cloud Foundation 概述和启动指南》对该流程的详细解释。和 VIA 应用一样,通过标准 Web 浏览器访问 SDDC Manager。

开始启动流程之前,首先收集配置网络连接所需的全部信息,包括 VLAN 列表、网络地址和上行链路。

首次访问 SDDC Manager 界面时,系统自动在所有组件上设置合适的时间和时区。它还执行多次基础检查,以确认所有组件都可以访问且处于预期状态。

图 8.启动流程的运行日志

启动流程的下一步是除部分通用信息之外,比如物理机架名称、根域名系统 (DNS) 域名、VMware Cloud Foundation 子域、SSO 域以及最后的 VMware Cloud Foundation 许可证密钥,还为管理员账号提供一个新的账户名和密码。

图 9.作为启动流程的一部分输入基础信息

Page 8: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

8

接下来是网络配置,此处您可提供 VLAN 和 IP 地址以供管理、VMware vSphere vMotion*、vSAN、虚拟可扩展 LAN (VXLAN) 覆盖、外部数据中心网络和数据中心上行链路。

最后是简短摘要页面,显示您提供的所有信息。之后是组件 IP 配置页面,显示分配至特定组件的名称和 IP 地址。

组件 IP 分配页面非常重要。请务必记录下用于“vCenter”和“VRM VIP”的名称的 IP 地址,SDDC Manager 在此运行。管理整个基础设施时您将会用到这两个主要界面。

VRM VM 还可为上述步骤中提供的 VMware Cloud Foundation 子域托管 DNS 服务器(在此示例中为 vcf.example.com),因此应配置企业 DNS 服务器以将 所有针对该域的请求转发给 VRM VIP IP 地址。

单击 Confirm 后,SDDC Manager 开始配置 和启动流程。该流程将耗费 1-2 个小时,取决于服务 器数量和配置。您还可以使用同一个 Web 界面关注启动流程的进度。

启动流程的最后一个步骤是为所有组件生成新密码。执行该步骤时,必须使用 SSH 连接至 VRM VM,然后运行以下命令:/home/vrack/bin/ vrm-cli.sh rotate-all。 接下来仍然将该工具用于 lookup-passwords 参数以检索新生成的密码。这一步骤将检索所有物理组件和逻辑组件(包括交换机、服务器、vCenter Server 和 VMware NSX)的密码。

创建工作负载域

启动流程完成后,基础设施已准备好创建工作负载域。在最新版 VMware Cloud Foundation 中,前四个节点将用于管理,并包含管理整个基础设施所需的全部组件。不能在这个管理集群上部署任何用户应用,而应创建一个或多个工作负载域,它们包含一个单独的 vSphere 集群,以及

创建新工作负载域非常简单。提供名称后,只需指定所需的性能(低、均衡、高)、所需的可用性级别(无、正常、高),以及所需的最少资源(用于 CPU、内存和存储空间)。具体设置如图 12 所示。

图 10.启动流程结束时显示重要的 IP 地址分配

与用于管理的专用 vCenter Server 实例一同预安装和配置的 vSAN 和 VMware NSX。

除了管理域外,还可在 SDDC Manager 中创建两种其他类型的工作负载域:

• 虚拟基础设施 (VI):通用域

• VDI:专用于虚拟桌面环境。这些工作负载域主要依赖 VMware Horizon 套件(不是该参考架构的组成部分)。

VI 工作负载域代表一个资源集群,其中包含多达 64 台服务器及其 vCenter Server 应用、集成 vSAN 和 VMware NSX。VI 工作负载域可扩展多个机架,如果后续需要为单机架实施添加多个机架,您可以根据需要将现有 VI 工作负载域扩展至其他机架。

所有与工作负载域相关的任务均通过 SDDC Manager Web 界面来执行。它们包括创建、扩展和删除工作负载域,以及物理基础设施监控和管理。

图 11.SDDC Manager 支持您在工作负载域中分配 CPU、内存和存储资源

Page 9: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

9

图 12.创建工作负载域

最后一步是选择工作负载域应使用哪种数据中心连接(上行链路)。所有工作负载域可共享一种连接,每个工作负载域也可使用单独的连接。然后,SDDC Manager 确定需要多少服务器才能满足这些要求,并显示建议的配置以供查阅。

单击 Finish,系统将在后台启动供应流程。此供应流程负责安装和配置所需的全部组件(包括 vCenter Server、vSAN 和 VMware NSX)。然后执行集成这些组件所需的步骤,包括在交换机上创建新 VLAN,以及重新配置连接指定服务器的端口。

创建工作负载域所需的时间取决于服务器配置和请求的基础设施规模。在示例环境中,该流程花费了工程团队 55 分钟的时间来供应工作负载域(包含 3 台服务器)的整个基础设施。因此您可以在不到一小时的时间内完成,而在 VMware Cloud Foundation 中的 SDDC Manager 提供自动化操作之前,这些操作需耗时几周。

另外,由于整个流程实现了自动化,因此会显著降低手动安装过程中经常出现的错误配置风险。过去,这种配置错误会造成基础设施供应过程中出现严重问题或额外延迟。

之后,您可以使用 SDDC Manager 根据需要为现有工作负载域添加新服务器。如果不再需要工作负载域之前所使用的基础设施,可以删除或将不用的服务器返回至可用资源池。

安装和配置 vSphere Integrated Container

关于 vSphere Integrated Container

vSphere Integrated Container 包含以下三个组件:

• VMware vSphere Integrated Container 引擎

• VMware vSphere Integrated Container 注册表 (Harbor)

• VMware vSphere Integrated Container 管理门户 (Admiral)

vSphere Integrated Container 引擎支持 Docker API 子集,以便帮助开发人员和管理员供应和运行容器化应用以及传统基于虚拟机的工作负载。vSphere Integrated Container 引擎支持管理员通过 vSphere 用户界面 (UI) 轻松管理这些工作负载。

Harbor 是一种企业级容器注册表,用于通过应用保存和分发容器映像。它扩展了标准开源注册表的功能,使其具备企业所需的安全、身份和管理功能。

Admiral 是一种容器管理门户,提供便利的 UI 支持 DevOps 团队和管理员供应和管理容器。还可进一步集成 vRealize Automation 以提供更多高级功能,比如部署蓝图,从而支持构建企业级容器即服务 (CaaS)。

GitHub* 以开源项目形式提供所有组件,详情请访问 https://vmware.github.io/vic-product/。

如欲获取完全支持的官方版本,需要使用 vSphere Enterprise Plus 许可证。

安装 vSphere Integrated Container

如果是最新官方版 vSphere Integrated Container,您需要从 VMware 门户 vmware.com/go/download-vic 下载 vSphere Integrated Container OVA 格式。本参考架构中使用的 1.1.1 版本大约占用 2.7 GB。

通过部署在上述步骤中下载的虚拟设备来安装 vSphere Integrated Container。在部署过程中,需要指定多个参数,比如多个组件的设备 IP 地址和管理员密码。还需要指定是否希望部署 Harbor 和 Admiral。如果是首次部署 vSphere Integrated Container,应该部署这两个软件。

Page 10: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

10

为完成 vSphere Integrated Container 安装流程,请访问 https://vmware.github.io/vic-product/assets/files/html/1.1/,按照产品文档中的详细说明进行操作。

由于 vSphere Integrated Container 与 vCenter Server 紧密耦合,因此您需要将设备部署至您希望运行工作负载的工作负载域。请注意,不必是完全专用于 vSphere Integrated Container 的工作负载域;可以在相互邻近且分配了专用资源的工作负载域中运行传统虚拟机和容器。

vSphere Integrated Container 有一个重要特性:支持管理员和开发人员创建和管理容器,以便其完全集成至虚拟机基础设施。事实上,同时运行两种工作负载有利于部署混合多层应用,其中部分组件以虚拟机形式运行,其他组件在可轻松扩展的容器内运行。

解包 vSphere Integrated Container 二进制文件

安装 vSphere Integrated Container 的下一步是从 https://vic_appliance_address:9443 下载 vSphere Integrated Container 引擎二进制文件,并将其解包至管理员的工作站。该文件包包含 vic-machine 实用程序,用于部署虚拟容器主机 (VCH)。您还可以使用 vSphere Web 客户端集成插件支持统一管理容器和 vSphere 资源,包括虚拟机。

解包 vSphere Integrated Container 引擎二进制文件时,在右侧输入(输出之后)第一行的命令:

(接下页)

图 13.用于安装 vSphere Integrated Container 的配置选项

Page 11: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

11

了解 vSphere Integrated Container 工作流程

vSphere Integrated Container 引擎是一种企业部署,对象是可便携 Docker 容器。使用 vSphere Integrated Container 的常见流程包含以下步骤:

1. 开发人员在开发环境中使用本地 Docker 主机或 vSphere Integrated Container 提供的远程 Docker 端点构建容器。

2. 然后将构建的容器映像推送至 Harbor 提供的私有 企业注册表。

3. 可通过注册表部署应用以测试各个环境。

4. 最后,通过该注册表将应用部署至同样在 vSphere 顶部运行 vSphere Integrated Container 引擎的生产环境。

了解虚拟容器主机

VCH 是映射至端点虚拟机的资源池,可在 vSphere Integrated Container 中用作 Docker 主机。从管理角度来看,VCH 与托管 Docker 容器的虚拟机非常相似,而且容器似乎在特定 VCH 中运行。具体来说,在 vSphere 集群中,VCH 部署为虚拟应用 (vApp),而且在用户界面中,所有运行容器的虚拟机都显示为特定 VCH 的子集。

而从技术角度来看,VCH 不是真正地通过提供供容器运行的共享内核或操作系统来托管容器。相反,代表 VCH 的端点虚拟化和容器并列运行,全都在称为“容器虚拟机”的虚拟机中运行。每台容器虚拟机 — 和端点虚拟机本身 — 运行最小、可快速启动的操作系统,称为 Photon OS*。

在 VCH 在运行的 Docker API 端点将 Docker 命令转换至 vSphere 环境。例如,当 Docker 接收到“run”、“build” 等 Docker 命令,VCH 将指示 vCenter Server 创建运行 Photon OS 内核的虚拟机,并将 Docker 映像解包至该虚拟机。其他命令进行转换并根据 VCH 的容器来执行。

和资源池一样,VCH 也可轻松扩展。扩展时,只需将 ESXi主机添加至工作负载 vSphere 集群以增加容量,不会破坏现有容器。还可以在同一个集群中部署多个 VCH,这样您可以轻松为多个共享相同底层基础设施的租户提供完全独立且安全的环境。

创建和配置 VCH 时,可使用 vic-machine 命令 行实用程序。

Page 12: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

12

图 14 显示了不同 vSphere Integrated Container 组件之间的关系。如图所示,A1 和 A2 代表 Docker 端点, C1、C2 和 C3 代表容器虚拟机。

Docker* 客户端

Managers Containers

Manages VCHs

管理员监控

VIC 机器VMware vCenter 客户端

A1 C1

C1

C3 C2

A2

VMware ESXi*

浏览器

VMware ESXi*

VMware vCenter*

VIC 设备

VICAdmin (日志,调试)

Docker personality

VMware ESXi*

端口层服务 (执行,网络,存储,事件,交互)

To VMware vCenter* SDK

Docker* 客户端

图 14.VMware vSphere Integrated Container 引擎组件之间的关系¹

网络类型vSphere Integrated Container 引擎将不同的网络类型用于不同的目的:

1. 管理网络:该网络专门用于 VCH、vCenter Server 和 ESXi 主机之间的通信。用 vic-machine create 创建 VCH 时, 可以使用 --management-network 选项定义管理网络。

2. 公用网络:该网络具有强制性,用于将容器连接至互联网。可以通过 --public-network 选项指定公用网络。

3. 客户端网络:该网络将 Docker 客户端连接至 Docker 端点,并将端点与公用网络隔离。可以通过设置 --client-network 选项定义 Docker 管理端点网络。

4. 桥接网络:该网络支持容器和 VCH 之间进行通信。每个 VCH 要求使用唯一的桥接网络。指定桥接网络时,在运行 vic-machine create 时使用 --bridge-network选项。

5. 容器网络:这种网络用于将容器直接连接至 vSphere 网络,无需通过使用 NAT 的 VCH 端点虚拟机进行路由。

开发人员

VMware vSphere*/VMware ESXi*

用户

客户端网络

容器网络

管理网络

管理门户

桥接网络

公用网络

VMware vSphere Integrated Container * 设备

VCH 端点

虚拟机

VCH vApp

注册表

容器-虚拟机 容器-虚拟机

容器-虚拟机

图 15.网络类型与角色¹

定义面向 vSphere Integrated Container 的网络时,必须指定一个端口组来关联您所定义的网络。我们将在参考架构中定义的面向 VMware Cloud Foundation 网络的大多数所需的端口组都已作为映像流程的一部分创建完成。

对于该参考架构,我们将在创建 VCH 时指定管理、公用、桥接和容器网络,不定义任何客户端网络。(如果不定义任何客户端网络,默认用于此目的网络与公用网络相同。)

更多关于用于 vSphere Integrated Container 的虚拟网络的信息,请访问 https://vmware.github.io/vic-product/assets/files/html/1.1/ vic_vsphere_admin/networks.html。

为 VCH 部署做准备

我们通过 vic-machine 实用程序创建 VCH 之前,需要执行部分准备步骤,比如在 VMware NSX 中创建一台逻辑交换机以用于桥接网络和修改防火墙规则。

为桥接网络创建逻辑交换机创建 VCH 时定义的四种网络必须全部分配端口组。 在我们将分配的端口组中,仅一个用于桥接网络的端口组未创建。(vRack-DPortGroup-External and vRack-DPortGroup-Mgmt 端口组在 SDDC Manager 创建工作负载域时自动创建和配置。)

不过,我们不在 vSphere 中创建新端口组,而是在 VMware NSX 中创建一台逻辑交换机以分配至桥接网络。我们特别使用 VMware NSX 的 Logical Switch 特性(而非 vSphere 端口组),以便充分利用覆盖网络,并避免必须在物理交换机上配置任何 VLAN。

图 15 所示为不同网络类型的角色。

Page 13: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

13

在 vSphere Web 客户端界面中创建新逻辑交换机时,导航至 Networking & Security,然后是 Logical Switches。如欲开始创建新逻辑交换机的流程,请点击绿色加号 (+) 图标。该步骤将打开 New Logical Switch 窗口,如图 16 所示。

图 16.创建新逻辑交换机

从 vSphere 角度来看,在 VMware NSX 中创建的新逻辑交换机 “VCH1- BRIDGE” 将显示为比如名为 vxw-dvs-9-virtualwire-2-10001-VCH1-BRIDGE 的分布式端口组。为简单起见,您可能倾向于将端口组重新命名为用于 VMware NSX 中相关逻辑交换机的名称(如图 17 所示)。

确定 VCH 存储和计算资源 使用 vic-machine 实用程序创建 VCH 时,必须指定卷存储、映像存储和计算资源。关于卷存储,我们将使用 vsanDatastore/ vic-containers:default。关于映像存储,我们将指定 vsanDatastore/vic-images。计算资源可以是主机、集群或资源池。在本示例中,我们将计算资源指定为 VCH。

设置 PKI在生产环境中,应将有效的公共密钥基础设施 (PKI) 证书部署至基础设施组件。(关于如何执行该步骤,请参阅所选 PKI 解决方案随附的文档。)为解决这一问题,您可以使用 --no-tlsverify 和 --force 选项,跳过证书验证过程。不过在本示例中,您必须通过 --thumbprint 选项指定 vCenter Server 证书的 Secure Hash Algorithm 1 (SHA-1) 指纹。(不需要使用 --thumbprint 选项,可通过检查 Web 浏览器中的证书或首先尝试运行命令来获取指纹。如果未提供这一选项,将生成一条包含检索到的 vCenter Server 指纹的错误消息。)

如欲了解其他高级部署场景,请参阅 vSphere Integrated Container 文档 https://vmware.github.io/vic-product/assets/files/html/1.1/。

修改防火墙规则下一步是修改集群中所有 ESXi 主机的防火墙规则,以支持从每台主机到 VCH 的出站流量。为执行这一步骤,请运行以下命令(以下显示在输出之后的前三行命令),替代您的 vCenter Server 证书的 SHA-1 指纹:

图 17.重新命名 VMware vSphere 中的端口组以匹配 VMware NSX 逻辑交换机名称(可选)

Page 14: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

14

此外,由于我们要确保内部容器注册表 (Harbor) 的安全,因此我们需要获取证书权限 (CA) 证书,以分配 Harbor 所使用的默认自签名证书,然后以 VCH 参数的形式提供。 为完成该步骤,请输入以下(输出之后)第一行的命令:

增加为 VCH 预留的内存最新版 (1.1.1) vSphere Integrated Container 有一个特殊的局限性:从注册表下拉容器映像的过程中,VCH 上的服务会将其内容提取至内存中的一个临时文件系统 (tmpfs)。对于大型容器,如果没有充足的可用空间,该流程可能无法顺利完成。为了解决版本 1.1.1 中的大型映像问题,我们需要将特定参数 --endpoint-memory 8192 添加至 vic-machine create 命令,以增加为 VCH 预留的内存。

创建 VCH最后,您可以使用 vic-machine create 命令,部署一台新的 VCH。请记住,在生产环境中,应将有效的 PKI 证书部署至基础设施组件。同样,为了解决该问题,可以使用 --no-tlsverify 和 --force 选项并通过 --thumbprint 选项指定指纹,从而跳过证书验证步骤。

运行以下命令(以下显示在输出之后的前 15 行)创建 VCH:

(接下页)

Page 15: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

15

Aug 9 2017 15:07:48.751Z INFO https://172.16.50.28:2378Aug 9 2017 15:07:48.751Z INFOAug 9 2017 15:07:48.751Z INFO Published ports can be reached at:Aug 9 2017 15:07:48.751Z INFO 172.16.50.28Aug 9 2017 15:07:48.751Z INFOAug 9 2017 15:07:48.751Z INFO Docker environment variables:Aug 9 2017 15:07:48.751Z INFO DOCKER _ HOST=172.16.50.28:2376Aug 9 2017 15:07:48.752Z INFOAug 9 2017 15:07:48.752Z INFO Environment saved in VCH1/VCH1.envAug 9 2017 15:07:48.752Z INFOAug 9 2017 15:07:48.752Z INFO Connect to docker:Aug 9 2017 15:07:48.752Z INFO docker -H 172.16.50.28:2376 --tls infoAug 9 2017 15:07:48.752Z INFO Installer completed successfully

应用组件• dotCMS 众所周知是一种开源 CMS 解决方案。更多

信息请访问 https://dotcms.com/cms-platform/enterprise-cms/。

• Oracle Database Express Edition 11g 是一种免费的轻量级数据库,基于 Oracle Database 11g 版本 2 代码库。更多信息请访问 http://oracle.com/technetwork/database/database-technologies/express-edition/overview/index.html。

• Oracle WebLogic 服务器是用于开发和部署 Java Enterprise Edition* 应用的平台。更多详细信息请访问 http://oracle.com/technetwork/middleware/weblogic/overview/index.html。

在 VCH 部署过程中,vic-machine 工具首先运行各种检查。然后通过指定计算资源下方的 VCH 创建 vApp,并上传 ISO 映像,以满足以虚拟机形式运行容器的需求。部署成功后,该工具为 DevOps 和容器应用开发人员返回关于如何访问 VCH 管理门户的信息,以及 Docker 环境变量。

VCH 管理门户 — 地址位于用于 vic-machine create 的输出中 — 显示所有组件的状态,并支持您查看和获取各种日志。还显示用于 Docker 客户端的 Docker 端点变量,支持最终用户在特定 VCH 上运行和管理容器。

接下来通过 Docker 客户端验证 VCH 部署结果。上述 vic-machine create 输出的第二行至最后一行提供了 VCH 端点 IP 和待用的具体命令。

运行以下命令验证部署结果(以下显示在输出之后的 第一行):

解决方案:在 vSphere Integrated Container 中容器化和部署应用下文将介绍如何容器化示例应用并在 VCH 中部署该应用。我们将在 vSphere Integrated Container 上容器化和部署的示例应用为 dotCMS* — 内容管理系统 (CMS)。

dotCMS 应用将和 Oracle WebLogic Server* Web 服务器一起打包在容器中。dotCMS 应用还要求使用独立的数据库服务器,它将部署在运行 Oracle Database Express Edition 11g* 的传统虚拟机中的“public” 网络上(端口组 vRack-DPortGroup-External)。

dotCMS 应用的最后一个要求是网络文件系统 (NFS) 服务器,它将以数据库服务器的形式在同一个网络上的虚拟机上托管。

图 18 显示了支持容器化应用的网络架构。请注意,我们的解决方案所包含的 VCH 包含三个容器。每个容器通过 Web 服务器 (WebLogic) 运行 dotCMS 应用。该解决方案中相同的容器可作为应用的三节点负载均衡集群。

Page 16: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

16

$: Run the command as an unprivileged user in Bash#: Run the command as the user “root” in Bash>: Run the command as the user “system” in SQL*Plus*

负载均衡器 (VMware NSX Edge*)

vRack-DPortGroup-External

NFS 服务器

(VM)

数据库 (VM)

应用和 Oracle

WebLogic 服务器*

应用和 Oracle

WebLogic 服务器*

应用和 Oracle

WebLogic 服务器*

支持互联网访问的 外部网络

DNS (外部)

DHCP (外部)

分布式防火墙–微分段 (VMware NSX*)

VCH1

在 VCH 外部,dotCMS 所需的数据库服务器和 NFS 服务器在各自的虚拟机上独立运行。解决方案还包含一个负载均衡器 (VMware NSX Edge*),用于将请求分给托管 dotCMS 的全部三台容器虚拟机。最后通过 NSX 部署分布式防火墙。

部署流程概述

部署容器化应用时,要首先在网络上部署支持的数据库和 NFS 服务器。接下来构建和上传容器映像。最后部署 dotCMS 集群和配置 dotCMS 应用。

部署流程可分为以下三个步骤:

1. 部署和配置数据库服务器。

2. 为应用设置 NFS 服务器。

3. 构建 WebLogic 和 dotCMS 容器映像。

4. 将映像上传至容器注册表。

5. 部署 dotCMS 集群。

6. 配置 dotCMS 应用。

执行以下部署步骤时,需要通过 Bash* shell 访问已联网的 GNU/Linux 工作站。另外在开始之前,Linux 工作站中需要具备以下应用:

• 用于下载 Oracle GitHub* 存储库的 Git*

• 用于构建 Docker 映像并与 VIC 通信的 Docker

• 用于构建 dotCMS 的 Java 开发套件* (JDK*)

• 文本编辑器

以下规则用于显示命令行命令:

部署和配置数据库服务器

1. 在 VMware Cloud Foundation 上创建新虚拟器并安装 Red Hat Enterprise Linux 7.x* 操作系统。为虚拟机至少分配两颗虚拟 CPU、4 GB RAM 和 200 GB 硬盘空间, 如图 19 所示。更多关于数据库服务器要求的详细信息, 请访问 http://docs.oracle.com/cd/E17781_01/install.112/e18802/toc.htm#XEINL102 查阅 Oracle 官方文件。

图 19.在 vSphere Web 客户端中创建新虚拟机

2. 将静态 IP 地址分配给虚拟机并提供完整的 DNS 名称。例如我们将 IP 地址设为 172.16.200.200 并将完整 DNS 名称设为 oracledb1. example.com。设置 DNS 名称之后,还需要在虚拟机中配置主机名称:# echo oracledb1. example.com > /etc/hostname

3. 重新启动虚拟机。

4. 从 oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html 下载 Oracle Database Express Edition 11g。请注意必须首先创建 Oracle 账户。

5. 安装 Oracle 数据库相关性:

$ sudo yum install -y bc libaio

6. 解包和安装 rpm 文件:

$ sudo rpm -i Disk1/oracle-xe-11.2.0-1.0.x86 _ 64.rpm

7. 配置数据库实例: $ sudo /etc/init.d/oracle-xe configure 您将被问及与数据库相关的选项。默认值足矣。 只需设置管理员密码。

8. 用数据库管理工具导出待用的环境变量:

$ . /u01/app/oracle/product/11.2.0/xe/bin/oracle _ env.sh

9. 数据库实例成功启动后,在终端中运行以下命令:

$ sqlplus system

输入第 7 步中选择的密码后,SQL 控制台应可用。

图 18.支持容器化应用的网络架构

Page 17: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

17

10. (可选)输入以下命令以配置 Web 界面:运行“@apxconf”脚本将生成 Web 界面参数查询。默认值足矣;只需明确设

置“ADMIN”密码。完成这些步骤后,Web 界面将通过虚拟机在端口 8080 的静态 IP 地址(后面是“/apex”) HTTP 可用。例如,IP 地址 172.16.200.200 的 Web 界面网址为 http://172.16.200.200:8080/apex。

11. 创建新用户并为新用户提供相应的 dotCMS 权限。 在 sqlplus 中输入(其中“XXXXXXXX”表示您想为新用户设置的密码):

12. 打开防火墙上的端口: nfs ~ # exportfs -v/nfs 172.16.0.0/16(rw,wdelay,root _ sq uash,no _ subtree _ check,sec=sys,rw,secure,root _ squash,no _ all _ squash)

core@nfs ~ $ sudo -infs ~ # mkdir /nfsnfs ~ # echo ”/nfs 172.16.0.0/16(rw)” >> /etc/exportsnfs ~ # systemctl enable nfsdnfs ~ # systemctl start nfsd

CREATE USER “DOTCMS _ SENDER” PROFILE “DEFAULT”IDENTIFIED BY “XXXXXXXX” ACCOUNT UNLOCK;GRANT “CONNECT” TO “DOTCMS _ SENDER”;GRANT “EXP _ FULL _ DATABASE” TO “DOTCMS _ SENDER”;GRANT “GATHER _ SYSTEM _ STATISTICS” TO “DOTCMS _SENDER”;GRANT “IMP _ FULL _ DATABASE” TO “DOTCMS _ SENDER”;GRANT “OEM _ ADVISOR” TO “DOTCMS _ SENDER”;GRANT “OEM _ MONITOR” TO “DOTCMS _ SENDER”;GRANT “RESOURCE” TO “DOTCMS _ SENDER”;ALTER USER “DOTCMS _ SENDER” DEFAULT ROLE ALL;EXIT

$ cd /u01/app/oracle/product/11.2.0/xe/apex$ sqlplus system> @apxconf> alter user anonymous account unlock;

更多关于如何安装 Oracle Database Express Edition 11g 和配置 dotCMS 账户的信息,请访问以下网址参阅官 方文档:

• http://docs.oracle.com/cd/E17781_01/index.htm

• https://dotcms.com/docs/latest/database-configuration#Oracle

设置 NFS 服务器

我们的 dotCMS 实施包含一个由三个容器组成的集群。dotCMS 集群化要求共享资产目录内容的集群外部的网络共享至所有容器节点。提供此类网络共享最简单的方法是设置 NFS 服务器实例、导出一个目录,然后在每个运行 dotCMS 的容器中安装该目录。

关于 NFS 服务器,我们使用运行 CoreOS Container Linux* 的虚拟机,不过您也可以选择使用任意的 Linux 分发版,然后按照文档中的流程说明设置 NFS 服务器。

此时我们继续假设您已在虚拟机中部署好 CoreOS, 而且已经配置了相应的网络连接(使用动态主机配置协议 [DHCP] 或静态 IP 地址分配)。还应在 DNS 中注册您的服务器,以便在容器映像中使用域名,而非 IP 地址。在我们的环境中,我们要为 NFS 服务器分配 IP 网址 172.16.255.99 和域名 nfs.example.com。

在 CoreOS Container Linux 上设置 NFS 服务器时,需要创建名为 nfs 的新目录、修改 /etc/exports 文件以将该目录导出至包含读写许可的 172.16.0.0/16 网络,最后启用和启动 nfsd 后台程序。

通过以下命令执行这些步骤:

可以使用 systemctl status nfsd 命令核实域的状态, 还可以使用 exportfs -v 命令列出导出的目录。

NFS 服务器运行后,可以指定以下网络路径: nfs.example.com:/nfs,在客户端上安装导出的目录

图 20.数据库服务器 Web 管理界面

Page 18: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

18

9. 创建包含安装脚本和 Docker 文件的目录。

10. 将 dotCMS.war 解包至 wl_dotCMS:

11. 在文件 wl_dotCMS/dotcms.war/WEB-INF/ classes/dotmarketing-config.properties 的末尾添加:

This line enables support for WebLogic in dotCMS。这一步不是必须执行的,但 dotCMS 开发人员建议如此。

12. 在文件 wl_dotCMS/dotcms.war/WEB-INF/classes/ dotcms-config-cluster.properties 中将第 132 行“es.discovery.zen.fd.ping_timeout=600s”改为“es. discovery.zen.fd.ping_timeout=10s”。这样更改可以在其中一个 dotCMS 主机发生故障时,缩短集群中 dotCMS 实例相互等待的时间。接下来我们在部署流程中使用 Oracle 准备的示例脚本。它们可为我们的部署奠定良好的基础,只需稍作修改就可满足我们的需求。

13. 将目录 oracle-docker- images/OracleWebLogic/samples/12212-domain/ container-scripts 中的文件拷贝至 wl_dotCMS/container-scripts 和文件 oracle-docker-images/OracleWebLogic/ samples/1221-appdeploy/container-scripts/app-deploy.py 至 wl_dotCMS/container-scripts/。12212-domain 的脚本可简化创建域、数据源和邮件会话的过程。文件 app-deploy.py 将用于在 WebLogic 服务器中注册应用并进行配置,以便该应用可通过服务器自动启动。

14. 使用以下内容在 wl_dotCMS 中创建 Dockerfile:

构建 Oracle WebLogic 服务器和 dotCMS* 容器映像

1. 通过 GitHub 获取 Oracle Docker 映像:

我们要检查特定修订版(本文撰写之时可用)以确保能够复制以下步骤。

2. 访问 oracle.com/technetwork/java/javase/downloads/ index-jsp-138363.html,将面向 GNU/Linux x64 的最新 Oracle Server JRE* 下载至 oracle-docker-images/OracleJava/java-8/。

3. 在 oracle-docker-images/OracleJava/ java-8 目录中构建 Server JRE: $ ./build.sh

4. 将活动目录改为 oracle-docker-images/ OracleWebLogic/dockerfiles/12.2.1.2。

5. 访问 oracle.com/technetwork/middleware/weblogic/ downloads/wls-for-dev-1703574.html 下载fmw_12.2.1.2.0_wls_quick_Disk1_1of1.zip,然后将文件放至目录 oracle-docker-images/ OracleWebLogic/dockerfiles/12.2.1.2。

6. 构建基础 WebLogic 映像。在目录 oracle-docker-images/OracleWebLogic/dockerfiles/ 中运行以下命令: $ ./buildDockerImage.sh -v12.2.1.2 -g

7. 访问网址 https://dotcms.com/download/,下载 dotCMS 文件包。

8. 将 dotCMS*.tar.gz 解压缩至单独的文件夹并构建应用:

$ cd$ mkdir dotCMS && cd dotCMS$ tar xf ~/<download location>/dotCMS*tar.gz$ bin/buildwar.sh

$ cd$ mkdir wl _ dotCMS

$ unzip $HOME/dotCMS/WAR/dotcms.war -d wl _ dotCMS/ dotcms.war

QUARTZ _ DRIVER _ CLASS=org.quartz.impl.jdbcjobstore. oracle.weblogic.WebLogicOracleDelegate

FROM oracle/weblogic:12.2.1.2-generic

# WLS Configuration (editable during build time)ARG ADMIN _ PASSWORDARG DOMAIN _ NAMEARG ADMIN _ PORTARG CLUSTER _ NAMEARG DEBUG _ FLAGARG PRODUCTION _ MODE

# WLS Configuration (editable during runtime)ENV ADMIN _ HOST=”wlsadmin” \ NM _ PORT=”5556” \ MS _ PORT=”7001” \ DEBUG _ PORT=”8453” \

(接下页)

Page 19: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

19

15. Dockerfile 将我们的工作负载(dotCMS)和应用服务器(WebLogic)整合在一起,设置正确运行 WebLogic 所需的选项(端口、密码和路径),运行 create-wls-domain.py 脚本(该脚本创建了 WebLogic 域和工作负载要求),最终调用 app-deploy.py,以准备 dotCMS 并使其在服务器打开时可用。

16. 在 container-scripts 目录中,使用文本编辑器(如 vi*) 创建包含以下内容的以下文件:

• ds.properties,包含设置指向数据库的数据来源所需的详细连接信息:

Page 20: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

20

18. 在 container-scripts 目录中使用文本编辑器修改 app-deply.py 文件。修改与应用放置相关的命令行:

19. 修改完成后,wl_dotCMS 目录应具有以下结构:

• entrypoint.sh,设置面向应用数据的共享 NFS 卷 (用于聚类)并通过 web 应用打开 WebLogic 服务器。(将 nfs.example.com 替换为您 NFS 服务器的 DNS 全名。)

• weblogic.xml,配置应用根 URL;如果没有它, 应用将在 <IP>:7001/dotcms/ 地址上打开,将引起应用引擎内的故障:

17. 在 container-scripts 中使用文本编辑器修改 create-wls-domain.py 文件。在 cmo.setClusterM essagingMode(‘unicast’) 下方粘贴以下命令行:我们在此处设置邮件会话和数据来源。我们也会在默认情况下启用它们,使其在打开服务器时可用。

Page 21: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

21

20. 使用 wl_dotCMS 目录中的 WebLogic 和 dotCMS 创建容器,将 vic.example.com 中的 example.com 替换为正确的域名:

注意,选项和参数 -t vic.example.com/library/weblogic_dotcms:latest 设置 <repository>/<path>/<application>:<version> 的映像标签。构建结束时,我们将使用该名称上传映像至注册表。

$ export DOCKER _ HOST=<VCH IP>:2376$ docker --tls run -d --name dotcms1 --net vRack-DPortGroup-External -m 8g vic.example.com/library/ weblogic _ dotcms:latest$ docker --tls run -d --name dotcms2 --net vRack-DPortGroup-External -m 8g vic.example.com/library/ weblogic _ dotcms:latest$ docker --tls run -d --name dotcms3 --net vRack-DPortGroup-External -m 8g vic.example.com/library/ weblogic _ dotcms:latest

上传映像至注册表

为了将映像上传至注册表,首先,您需要登录您工作站的 vSphere Integrated Containers 容器映像库, 在 $ docker login vic.example.com 以下的命令中, 将您的域名替换为 example.com。

将映像上传至存储库:$ docker push vic.example.com/library/weblogic_ dotcms:latest

现在,应用可随时在 VCH 上部署。

部署 dotCMS 集群

部署应用集群是该容器部署场景的最后一步。在此场景下,我们将部署 3 个容器化 dotCMS 应用实例,它们将在单个集群中相互连接。然后,我们将验证配置,最后输入许可信息。

部署 dotCMS 的 3 个实例部署流程包括使用 export 命令设置环境变量 DOCKER_HOST,使其指向我们的 VCH 实例。然后,我们将使用 docker 命令部署 3 个容器。

请注意,以下选项和参数和 docker 命令搭配使用:

• -net 选项用于将容器连接至外部集群网络(vRack-DPortGroup-External)。

• -m 8g 选项和参数用于分配 8 GB RAM 给容器(一项 dotCMS 要求)。

• -d 选项用于在后台模式中运行应用。

• -name 选项用于设置容器名称。创建向容器自动分配安全组的 VMware NSX 规则时,我们将需要这 3 个名称。请确保您正确记录了 3 个指定名称(dotcms1、dotcms2 和 dotcms3)。

为了部署 dotCMS 集群,输入以下命令,将您的 VCH 的 IP 地址替换为 <VCH IP> 并将您的域名替换为 example.com:

验证配置现在,在下一行输入命令,以验证 3 个容器已返回输出,并且 3 个容器的状态全部为“Up”,如下所示:

接下来,使用 docker 命令验证分配给您容器的 IP 地址:

上述输出显示可以通过 172.16.50.100、172.16.50.101 和 172.16.50.102 地址访问应用。

输入许可信息为了输入您的 dotCMS 部署的许可信息,需要您连接至面向 dotCMS 的 web 管理界面。在 web 浏览器中,导航至第一个容器的 web 地址 172.16.50.100:7001/dotAdmin。(如果第一个容器有不同的地址,将其替换为 172.16.50.100)。

Page 22: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

22

图 21.dotCMS web 管理界面

使用管理员账户的默认用户名和密码登录:

• 电子邮箱地址:[email protected]

• 密码:admin

登陆后,您将看到 dotCMS 主管理屏幕和一个许可警告。

图 22.dotCMS 主管理屏幕

此时,您需要输入 dotCMS 许可,以使用包括 WebLogic 和 Oracle 数据库的 dotCMS。在左侧窗格中单击 System,然后单击 Configuration。

图 24. dotCMS 许可设置

图 25.输入许可信息后,dotCMS 集群中 3 个节点的视图

图 23.dotCMS 的系统配置设置

单击 Licensing 选项卡。

出于测试目的,您可以使用试用许可。该许可支持 30 天的企业特性测试。单击 Request a Trial License 按钮开始获得试用许可。该步骤将打开一个新的浏览器标签,需要填写一份试用许可申请表。输入基本信息后,许可密钥链接将以电子邮件的形式发送至您在申请表中填写的电子邮箱地址。

Page 23: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

23

在 Licensing 选项卡中,将许可复制到屏幕底部的文本框(见图 24),然后单击Apply License。对剩下的两个容器执行相同的流程。输入 3 个容器的许可信息后,如图 25 所示,您可以看到您的集群在 Network 选项卡上正常运行。

配置 VMware NSX 中的负载均衡和微分段

我们已经展示了如何使用共享基础设施上的传统虚拟机和容器对示例企业应用进行容器化与部署。由于 dotCMS 支持集群,我们从之前准备的容器映像中部署了 3 个示例。部署多个实例非常简单,这表明您可以轻松扩展您的应用。

负载均衡和安全策略是我们需要配置的最后两项。

配置负载均衡

负载均衡是许多企业应用的关键组件。负载均衡通过将来自客户端的连接重定向至服务器池中的任一节点,提升了可扩展性和可用性。过去,企业必须使用外部第三方硬件网络设备,它不仅昂贵,而且很难与动态虚拟化环境集成。现在,VMware NSX 通过其 VMware NSX Edge 服务网关功能提供虚拟负载平衡器功能。通过与 vSphere 紧密集成,VMware NSX Edge 服务网关可以全面掌握您的环境动态,支持灵活定义负载均衡资源,如虚拟机名称、安全标签和其他逻辑对象。使用 vSphere Integrated Containers 功能构建的容器用作特殊的虚拟机,因此, 相同的功能和负载均衡规则也适用于它们。

搭载 VMware NSX Edge* 服务网关的负载均衡负载均衡器可以部署为两种不同的实施:“双臂”(作为面向支持服务器池的默认网关)和“单臂”(平行于应用服务器)。每种模式均有各自的要求和影响。为了简单起见,我们将在本场景中使用单臂模式。

以基于配置算法的方式将输入连接从负载均衡器转发至某个支持服务器。算法包括轮询、加权轮询、最少连接、加权最少连接、计算散列等。VMware NSX 还支持各种持续性(或“粘性”)方法,以确保来自相同客户端的连接总是转发至相同的服务器。也支持健康检查、服务器维护模式和其他高级服务。

部署 VMware NSX Edge Services 服务网关为了部署面向负载均衡的全新 VMware NSX Edge 服务网关,导航至 vSphere Web 客户端界面中的 Networking & Security。接下来,单击 NSX Edges,然后根据您部署应用的工作负载域选择 NSX Manager。在本示例中,选择 rack-1-nsxmanager-2-WD1,IP 地址为 172.17.0.28。

单击绿色加号(+)图标,将会出现全新的 NSX Edge 向导:在该向导中,您可以配置选项,如安装类型、名称、描述或您是否想支持面向 VMware NSX Edge 的高可用性。我们将部署简单的负载均衡,以展示基本功能,但是更高级的场景也是有可能实现的。更多详情请参阅 https://docs.vmware.com/en/ VMware-NSX-for-vSphere/ 上的官方文档。

逐步设置全新的 NSX Edge 向导• 名称和说明:为您的负载均衡服务器指定一个名称和主机名

后,选择 Deploy NSX Edge,然后单击 Next。

• 设置:为 VMware NSX Edge 命令行界面提供一个用户名和密码。您可以选择支持 SSH 访问 VMware NSX Edge 应用。您也可以选择日志级别。

• 配置部署:指定设备的大小;您选择的尺寸越大,连接和用户就越多 它虽然能够处理,但是需要保存更多的集群资源。最大的设备能够处理数百万个并发会话,实现较高的吞吐率和新连接速率。对于小型部署,您可以选择紧凑设备。

• 除数据存储之外(vsanDatastore),您也可以在该页面上选择一个集群或资源池来部署设备(本示例为:WD1-0-cluster)。此外,您也可以指定一个特定的主机或将设备置于已有的虚拟机文件夹内。

图 26.全新 NSX Edge 向导的名称和说明页面

Page 24: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

24

• 配置接口:您需要配置 VMware NSX Edge 设备使用的网络接口。在我们的单臂场景中,您只需定义上行链路类型的单个接口,并使用外部网络连接:vRack-DPortGroup-External将其连接至端口组。此外,您必须提供一个主 IP 地址和一个子网前缀长度,视情况提供一个二级 IP 地址列表。为此,我们分配了 IP 地址 172.16.255.50 /16。我们想要使用域名来访问我们的应用,因此,我们还在一个外部 DNS 服务器中将 IP 地址注册为 dotcms.example.com。

• 默认网关设置:配置面向 VMware NSX Edge 设备的默认网关。

• 防火墙与 HA:配置防火墙默认策略与日志。如果您选择了名称和说明页面上的 Enable High Availability 选项,还需要选择使用哪个接口实现 VMware NSX Edge 实例之间的同步,然后提供管理 IP 地址。(更多详情请参阅文档。)

• 我们想要严格控制通过 VMware NSX Edge 网关的流量,因此设置了默认的防火墙策略来拒绝与启用日志。

• 即将完成:该页面汇总了选中的全部选项。验证一切是否看上去没有问题,然后单击 Finish 启动 VMware NSX Edge 部署流程。

创建面向应用的 VMware NSX 安全组。您可以在 VMware NSX 中创建适用于安全组的安全规则。这些安全组可基于动态成员标准。我们将使用该机制创建一个名为 dotCMS-Servers 的安全组,vApp VCH1 中以“dotcms”作为名称开头的所有虚拟机和容器均包含在该组中。因此,该安全组代表了在我们的虚拟 Docker 主机 VCH1 上运行的所有容器。

要创建安全组:

1. 导航至 vSphere Web 客户端网络与安全下的 Service Composer 部分。

2. 单击带有绿色加号(+)的图标以创建一个全新的安全组。

3. 3.使用新安全组的向导分配一个 dotCMS-Servers 组名称和一个可选描述。

4. 在Membership criteria 1 部分指定以下成员标准,如图 27 所示:

• 设置匹配全部标准,由此,获得对象成员资格必须符合所有标准。

• 选择 VM Name, Starts with,然后输入 dotcms。

• 选择 Entity, Belongs to,然后输入 VCH1(使用右侧的实体选择图标,将类型修改为 vApp,然后选择 VCH1)。

5. 由于我们不需要手动添加或排除任何其他对象,您可以单击 Finish。

6. 您应该会在 Service Composer 汇总屏幕上看到包含两个虚拟机成员的新安全组。这些成员应为包含我们的 dotCMS 应用的容器。如果需要的话,您可以单击虚拟机栏上的数字 2,以查看安全组成员列表。

图 27.为托管 dotCMS 的容器虚拟机创建一个全新的安全组

配置负载均衡器现在,您已经部署了 VMware NSX Edge 服务网关,下一步是配置负载均衡器。在 vSphere Web 客户端上双击位于 Network & Security 下方 NSX Edges 部分的新建 VMware NSX Edge。然后,将视图修改为 Manage 选项卡,最终改为 Load Balancer 子选项卡。在 Global Configuration 部分,您需要启动负载均衡器功能和日志,以便更便捷地进行故障排除。然后,您需要配置描述应用类型(TCP、HTTP、HTTPS 或 UDP)、持久模式和可选 SSL 卸载的应用配置文件。

在本应用中,我们创建了一个名为 dotCMS 的简单的 HTTP 配置文件,并将持久模式配置为 Source IP。您也可以使用 Cookie 模式,关注包含会话信息 (如 JSESSIONID)的特定 cookie。

您还需要定义支持的服务器池。您可以将它命名为 dotCMS-Servers,并将轮询的默认设置用作连接选择算法。您可以选择 default_http_monitor 作为监控服务器是否活跃的机制。您也可以在服务监控部分按需配置更高级的自定义监控器。

最后配置的是成员,您可以指定哪些服务器将处理引 导至您的应用的流量。由于您已经创建了一个名为 dotCMS-Servers 的动态安全组,您可以将该组选为您的池成员。dotCMS 应用监听 TCP port 7001,因此,您还需要在成员定义中提供端口编号。您也可以根据情况配置最小和最大连接数。

Page 25: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

25

配置虚拟服务器

接下来,您需要配置虚拟服务器,将之前配置的应用配置文件映射至支持的服务器池。切换至 vSphere Web 客户端的虚拟服务器部分,然后单击绿色加号(+)图标。

在 New Virtual Server 窗口选择 dotCMS 应用配置文件。为它指定一个 dotCMS 的名称,并选择分配至 VMware NSX Edge 服务网关的一个 IP 地址,如 172.16.255.50。然后选择 HTTP 协议和端口 80, 将默认池更改为 dotCMS-Servers。

在防火墙上配置规则

最后一步是在 VMware NSX Edge 防火墙上配置正确的规则。我们之前决定设置默认的拒绝规则,使流量只有在明确允许的情况下通过。为了配置该规则,单击防火墙子选项卡,然后单击绿色加号(+)图标。一个新的空规则将出现在最后一个默认的拒绝规则前。您需要修改规则名称,为目标字段中的虚拟服务器提供一个 IP 地址,然后指定服务字段中的 HTTP。动作应被设置为允许。当您完成了配置,需要单击 Publish Changes 应用新规则。

VMware NSX Edge 防火墙规则仅适用于通过 VMware NSX Edge 设备的流量(在本示例中,用于向外部世界展示应用的从最终用户到负载均衡器的流量)。这些防火墙规则与微分段规则无关,保证了虚拟机和容器虚拟机之间通信的安全。这些功能由分布式防火墙处理。

配置微分段

在网络虚拟机(包括容器虚拟机)中精细地控制与过滤流量是 VMware NSX 最重要的特性之一。传统的网络安全设备只能控制独立网段之间的流量,实际上不可能实现这种级别的安全性。

我们只配置极少的安全策略,以展示如何保护任意类型的虚拟机(传统虚拟机或基于容器的虚拟机)所构成的示例应用。我们将只过滤托管数据库服务器的虚拟机和托管应用的容器虚拟机的输入流量。为了简单起见,将不会过滤输出流量。完整的安全策略应控制输入与输出流量。它还应确保部署于相同工作负载域上的其他工作负载的安全,并确保整个基础设施上部署的任何工作负载的安全。最后,完整的安全策略必须执行特殊企业实行的所有规则和规范。

为了开始配置微分段规则,我们需要定义应用使用的网络服务。多数标准服务都是预定义的,如 HTTP(TCP/80)和 Oracle 数据库(TCP/1521),但是我们也需要一些非标准服务。您也可以在策略规则创建过程中动态创建一个新服务,或者提前准备好它们。

创建面向微分段规则的新服务

我们将提前创建新服务。在 vSphere Web 客户端中,依次导航至 Network & Security 和 NSX Managers,然后为您的工作负载域选择 Manager,在本示例中,为 172.17.0.28。单击 Manage 选项卡,然后单击 Grouping Objects 子选项卡,最后选择 Service 部分。

为了创建新服务,单击绿色加号(+)图标,提供服务名称,选择 TCP 协议,然后提供目标端口(您可以为单个服务提供多个端口或端口范围)。

对于 dotCMS 应用,创建以下 3 个服务:

• dotCMS-cache:使用 TCP 协议和目标端口 5701。

• dotCMS-ElasticSearch:使用 TCP 协议和目标端口范围 9300-9310。

• TCP/7001:使用 TCP 协议和目标端口 7001。

现在这些服务已经就绪,您可以配置防火墙安全策略了。

创建新的防火墙规则

在 vSphere Web 客户端,导航至 Network & Security,然后导航至 Firewall。选择 Configuration 选项卡和正确的 VMware NSX manager(172.17.0.28),然后单击 General 自选项卡。

您应该看到 3 个预定义规则:一个明确支持 NDP(IPv6 邻居发现协议),另一个支持 DHCP 流量,默认规则支持所有流量。按照从上到下的顺序评估所有规则,因此,为了将通信限制在我们的应用内,我们需要在现有规则之外创建新的规则。为了创建面向该实施的安全策略,您将在 3 个预定义规则的基础上添加 5 个新规则。

单击绿色加号(+)图标以创建新规则。该步骤将创建一个支持所有流量的空规则。您可以使用上/下移动规则图标将规则上下移动至特定位置。当您单击规则中的特定字段,字段右上角将出现一个支持您编辑该字段的小编辑图标。在某些字段中,还有一种名为 IP 的图标,支持您手动输入 IP 地址,而不是选择虚拟机或安全组等对象。

您创建的第一个规则应支持从应用容器(由 dotCMS-Servers 安全组表示)到数据库服务器的流量。您可以通过虚拟机的 IP 地址指定托管数据库服务器的虚拟机。我们将仅支持 Oracle 服务,它是预定义服务之一。

您创建的第二个规则应直接移至第一个规则下方。该规则将拦截引导至数据库服务器的所有其他流量。

然后,您应该针对您之前创建的两个服务(dotCMS-cache 和 dotCMS-ElasticSearch)创建第三条规则, 以支持 dotCMS 服务器之间的流量。

Page 26: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

26

图 28.定义本部署安全策略的防火墙规则顺序

您还需要创建第四条规则,以允许从外部客户端到应用服务器的(任何)输入流量在端口 TCP/7001 上运行。

对于第五条(最后一条)规则,您应拦截引导至 dotCMS-Servers 安全组的所有其他流量。

您的安全策略完成后应该和图 28 中的类似。

发布规则变更

当您添加新规则或修改安全规则时,需要通过单击 Publish Changes 激活这些更改。您也可以恢复这些修改或保存修改策略,并在稍后激活。公布后的策略也会自动保存。您可以在 Saved Configurations 选项卡中访问之前保存的配置。

测试策略

为了展示策略的效果,我们将从 NFS 服务器(作为在同一个集群上运行的虚拟机)中运行几个简单的测试。

首先,我们对数据库服务器进行 ping 测试,然后尝试连接在 TCP 端口 1521 上运行的 Oracle 服务器。

如您所见,两个测试均失败。

现在,我们尝试连接运行于端口 TCP/7001 之上的应用。为了找到运行我们应用的容器的 IP 地址,我们可以使用 Docker 检查命令。接下来,我们将使用 curl -I 命令连接应用,并从服务器响应中获取 HTTP 标头。我们还了解到我们的应用服务器正运行 TCP 端口 5701 上的一个缓存服务,因此,我们将尝试使用 ncat 命令连接至该端口。

Page 27: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

27

由于安全策略允许连接至端口 7001,因此,应该会成功连接。然而,连接端口 5701 的行为被拦截。我们仅支持 dotCMS-Servers 安全组的成员连接该端口,成员仅包括托管我们应用的容器虚拟机,不包括用来执行测试的 NFS 服务器。请记住,我们不会在此处过滤任何输出流量,因此,我们的应用容器可以成功安装与访问在相同 NFS 服务器上运行的 NFS 共享,以便在上述测试中使用。该应用也可以访问互联网上的 DNS 服务器和公共服务。

监控安全策略

VMware NSX 还提供一系列用于监控与排除网络流量和安全策略故障的工具。流量监控(Flow Monitoring)就是其中一款工具,它可以用于在特定时间间隔内显示之前允许和拦截的所有流量(网络连接)。请记住,它表示历史数据,因此,我们需要等待几分钟,才能获取新数据。如欲获取该款工具,请导航至 Network & Security > Flow Monitoring。接下来,选择 Details By Service 选项卡,然后选择适当的 NSX Manager (172.17.0.28)。

在 Blocked Flows 子选项卡下方,我们可以查看被拦截的 ping 和与 Oracle service(TCP/1521)和 TCP 端口 5701 的连接。当您单击特定的流量,可以看到有关源和目标、被拦截的数据包数量以及拦截特定流量的规则编号的详细信息。

在 Allowed Flows 子选项卡中,我们可以看到使用端口 TCP/5701 的容器(包含 dotCMS 应用)之间的流量是被允许的,从应用容器到使用 Oracle service 的数据库服务器之间的流量也是被允许的。

使用相同工具中的 Live Flow 选项卡监控单台虚拟机或容器虚拟机的特定虚拟网络接口卡(vNIC)上的所有输入与输出流量。您也可以使用 Live Flow 工具发现哪些服务被特定应用组件公布与使用。

配置的最终测试

在容器化应用的最终测试中,我们将尝试从外部客户端 web 浏览连接我们的应用。在您的外部 web 浏览器中,连接至 URL http://dotcms.example.com,该地址将导航至我们的负载均衡器。

如果您需要,也可以进行其他测试,如停止与启动容器或在应用集群中添加新容器,以对部署进行实验。您应看到应用按预期执行,提供了高可用性,向运行于容器上的不同应用服务器分配请求。

带识别码的解决方案组件

使用表 3 确定解决方案中使用的组件。 图 29.观察安全策略导致连接被拦截

图 30.通过负载均衡器连接至 dotCMS 应用

功能 详细信息 识别码

服务器 Dell EMC PowerEdge R630 机架服务器 Dell EMC SKU:340-AKPR

CPU英特尔® 至强® 处理器 E5-2660 v4(2.0 GHz,14 核,35M 高速缓存,105 W)

英特尔订购码:CM8066002031201 CPU1/CPU2 的 Dell EMC SKU:338-BJCW/338-BJDQ

内存 32 GB DDR4,2,400 MHz 内存模块(256 GB 总内存) 不适用

存储(高速缓存层) 800 GB,2.5 英寸 SATA 英特尔® 固态盘 DC S3710 系列 英特尔订购码:SSDSC2BA800G401

存储(数据层) 800 GB,2.5 英寸 SATA 英特尔® 固态盘 DC S3520 系列 英特尔订购码:SSDSC2BB800G701

存储控制器Dell EMC PowerEdge HBA330 微型串行连接 SCSI(SAS),固件版本 13.17.03.00

Dell EMC SKU:405-AAJU

网络适配器双端口 10 万兆位(Gb)英特尔® 以太网融合网络适配器 X520 DA/SFP+ 和双端口 1 Gb 英特尔® 以太网服务器适配器 I350 网络子卡

制造商部件 #:67XRW可通过 Dell EMC 购买。Dell SKU:540-BBHJ

引导设备 戴尔内置双 SD 模块(IDSDM),2 x 16 GB SD 卡戴尔提供,包含“内置双 SD 模块,2 x 16 GB 卡”配置选项

机架顶部交换机Cisco Nexus 93180YC-EX NX-OS 7.0(3)I4(2)*

思科产品 ID: N9K-C93180YC-EX

管理交换机Dell Networking S3048-ON Cumulus Linux 2.5.8*

Dell SKU:210-AEDM

表 3.参考架构中使用的硬件组件

Page 28: 参考架构 安全、统一的云平台支持托管基于 虚拟机 …o2o.incloudexpo.com/upload/knowledge/面向虚机和...私有云 公有云 VMware vSphere* VMware vSAN* VMware

参考架构 | 安全、统一的云平台支持托管基于虚拟机和基于容器的应用

28

附录/更多资源• 英特尔® Builders 主页上的解决方案库可帮助您查找类

似于本架构的参考架构、白皮书和解决方案简介,以帮助您构建与增强您的数据中心基础设施。

• 在 Twitter 上关注我们:#IntelBuilders

• 访问 intel.cn,进一步了解英特尔至强处理器产品家族、英特尔数据中心级固态盘产品家族 以及英特尔以太网融合网络适配器 X520。

• 访问 VMware 网站,了解关于 VMware Cloud Foundation 和 vSphere 集成容器的更多信息,并进一步了解 Dell 和 VMware 的联合优化解决方案。

• 访问 Dell EMC 网站,了解有关 Dell EMC VxRack 超融合设备的更多信息。

• Dell EMC 客户解决方案中心连接了全球的实验室,支持戴尔帮助客户设计、验证和构建解决方案。

• 包含 Oracle Docker 映像的 GitHub* 库

• 有关 Oracle WebLogic Server onDocker 容器的信息

• 有关 Oracle 数据库精简版文档 11g 版本 2(11.2)的信息

• 有关 Oracle 数据库软件和硬件要求的信息

• 有关在 WebLogic 上部署 dotCMS 的信息

• 有关 面向 dotCMS 的 Oracle 数据库配置信息

总结本参考架构描述了实现虚拟机与容器并行运行的集成云解决方案。该解决方案支持企业安全地开发、托管与管理各类型应用,无论它们在虚拟机还是在容器上托管。本参考架构表明企业可以在云环境中部署容器化应用,其安全性和通过虚拟机部署的传统应用相同。

该解决方案的软件堆栈基于 VMware Cloud Foundation,vSphere 集成容器作为额外特性安装于顶部。硬件解决方案包含由 12 台服务器、3 台交换机和固态盘存储构成的单个机架。这些组件支持管理员统一管理容器化应用和虚拟机,以及将这些容器纳入适用于传统虚拟机的相同的安全策略。这些安全策略可在 VMware NSX 中添加微分段规则,VMware NSX 可以精细地控制与过滤网络上所有虚拟机的流量。该解决方案还提供了与其他虚拟机应用的安全隔离级别相同的容器化应用。

解决方案提供商:

1. 来源:VMware vSphere 集成容器产品文档,https://vmware.github.io/vic-product/assets/files/html/0.8/vic_installation/introduction.html。

结果基于英特尔内部分析或架构模拟或建模评估或模拟得出,仅供参考。系统硬件、软件或配置的任何不同都可能影响实际性能。

描述的成本降低方案旨在作为举例,说明指定的英特尔架构产品在特定环境和配置下,可能如何影响未来的成本和提供成本节省。环境将有所不同。英特尔不保证任何成本或成本降低。

英特尔并不控制或审核本文档引用的第三方基准数据或网站。您应访问引用的网站,确认参考资料准确无误。

英特尔技术的特性和优势取决于系统配置,并可能需要支持的硬件、软件或服务激活。实际性能会因您使用的具体系统配置的不同而有所差异。没有任何计算机系统能保证绝对安全。 更多信息,请见 intel.cn,或从原始设备制造商或零售商处获得更多信息。

英特尔未做出任何明示和默示的保证,包括但不限于关于适销性、适合特定目的及不侵权的默示保证,及履约过程、交易过程或贸易惯例引起的任何保证。

英特尔、英特尔标识、英特尔凌动和至强是英特尔公司及其子公司在美国和/或其他国家(地区)的注册商标。

VMware、VMware 标识、Photon OS、Platform Services Controller、VMware App Volumes、VMware Cloud Foundation、VMware ESXi、VMware Horizon、VMware NSX、 VMware NSX Edge、VMware SDDC Manager、VMware vCenter 服务器、VMware vRealize、VMware vRealize Automation、VMware vRealize Business、VMware vRealize Log Insight、 VMware vRealize Operations、VMware vSAN、VMware vSphere、VMware vSphere 集成容器和 VMware vSphere vMotion 是 VMware 公司在美国和其他管辖区的注册商标或商标。

Dell、Dell EMC、Dell EMC 标识、PowerEdge 和 VxRack 是戴尔公司或其子公司的商标。

*其他的名称和品牌可能是其他所有者的资产。

© 2018 英特尔公司版权所有。

0917/JM/PRW/PDF 请注意环保 336522-001CN