在 IBM PureApplication System 中实现工作负载隔离

学习如何在 IBM® PureApplication™ System 中创建两个或更多彼此高度隔离的应用程序运行时环境,使一个环境中的工作负载不能干扰另一个环境中的工作负载。本文展示如何创建它们并进一步论证它们的确是隔离的。

Hendrik van Run, 咨询 IT 专家, IBM

Hendrik van Run 是位于 Hursley 的 IBM Software Services for WebSphere 的经过认证的 IT 专家。他在设计、实现和评估 WebSphere Network Deployment 和 WebSphere Virtual Enterprise 基础设施方面具有丰富的经验。



Venkata (Vishy) Gadepalli, 高级管理顾问, IBM

Venkata Gadepalli (Vishy)IBM for Software Services for WebSphere (ISSW) Pre-Sales / PoC 团队的成员,这个团队与技术销售人员紧密合作。他在 IT 领域拥有超过 14 年的从业经验,曾参与关于 WebSphere 产品家族的客户活动。最近,他主要关注的是参与涉及 IBM PureApplication Systems 的一流促销活动。Vishy 撰写了大量文章,这些文章发表在 IBM 内部和外部。Vishy 还参与编写了 WebSphere Portal Primer 的第一版和第二版。



Bobby Woolf, 认证 IT 咨询专家, IBM

Bobby WoolfIBM Software Services for WebSphere (ISSW) 的一名顾问,专注于 IBM PureApplication System、面向服务的架构、事件驱动的架构和应用程序集成。他是 Exploring IBM SOA Technology and Practice 的作者及 Enterprise Integration PatternsThe Design Patterns Smalltalk Companion 的合著者之一。



2013 年 6 月 17 日

简介

在 IBM PureApplication System W1500 V1.0(以下简称 PureApplication System)中,应用程序作为工作负载在云中运行,共享系统资源,比如 CPU、内存和网络。然而,一些工作负载需要彼此隔离,以便一个工作负载中的活动不能干扰另一个工作负载中的活动。作为一个管理员,在设置 PureApplication System 时,该如何创建两个或更多彼此高度隔离的运行时环境,以便一个环境中的工作负载不能干扰另一个环境中的工作负载?此外,我们该如何证明这些环境及其工作负载的确是彼此隔离的?

例如,一个应用程序开发团队可能想要将其 PureApplication System 分为两个运行时环境:

  • 应用程序生产环境,用于运行业务
  • 应用程序测试环境,用于开发测试

PureApplication System 如何将生产工作负载从测试工作负载中隔离出来,以便生产工作负载获得测试工作负载无法使用的专用资源,测试工作负载中的问题也不会干扰生产工作负载?

要了解如何在 PureApplication System 上创建隔离的应用程序运行时环境并演示其隔离性,我们首先需要理解两个运行时环境彼此隔离意味着什么,PureApplication System 提供什么功能来创建运行时环境以及如何使用这些功能来创建拥有我们渴望的隔离性的运行时环境。然后我们证明这种隔离实际上是可行的。本文源自 在 IBM PureApplication System 中管理应用程序运行时环境 以及 导航 IBM 云,第 2 部分: 理解 IBM Workload Deployer 和 IBM PureApplication Systems 中的虚拟系统模式 中的概念。


隔离的工作负载环境

要了解如何创建隔离的工作负载以隔离 PureApplication System 上的工作负载,我们首先回顾一下运行时环境隔离运行工作负载意味着什么。

在 IBM PureApplication System 中管理应用程序运行时环境 一文解释了资源隔离和资源共享之间的关系:

  • 隔离:工作负载可彼此隔离,以便一个工作负载中的问题(比如耗尽所有 CPU 或内存的失控进程)不会对其他工作负载产生影响。
  • 共享:工作负载源自常见资源池,其他工作负载不需要资源时某个工作负载可以使用更多资源。

本文继续介绍资源可在两个主要方面进行隔离:

  • 计算隔离:CPU 组和内存容量是彼此隔离的。如果两个工作负载在计算隔离的情况下执行,一个工作负载的资源消耗量不会对另一个产生影响。
  • 网络隔离:两个计算资源之间的通信流量通过单独连接传递。

这也说明了隔离可能是物理的也可能是逻辑的。物理隔离意味着资源是单独的硬件,逻辑隔离意味着硬件管理软件使一个硬件像多个、独立的硬件那样工作。

在本文中,我们想让工作负载是完全隔离的,所以我们不希望它们之间共享任何资源。每个工作负载应分配属于自己的专有资源。

无论您使用传统计算机硬件还是 PureApplication System,搭建硬件平台来实现专用计算资源比实现专用网络资源要容易很多。如果您有一台计算机连接到企业网络中,要隔离两个应用程序,惟一的选择就是虚拟计算隔离(比如通过使用虚拟机和虚拟机监控程序)以及逻辑网络隔离(比如使用企业网络中定义的虚拟局域网(VLAN))。如果您有两台计算机,而且可以将它们通过一套独立的网络设备连接到企业网络中,那么您可以实现物理计算隔离(将每个工作负载放在一台独立的计算机上)和物理网络隔离(使用每台计算机的独立网络连接)。尽管独立的网络连接不同寻常,但是将所有计算机 连接到一起作为一个企业网络的一部分比较简单,因为 VLAN 是一个更为常见的网络隔离方法。因此要隔离两个应用程序,常见的方法是隔离计算硬件和 VLAN,以隔离网络流量。


PureApplication System 的功能

在展示如何在 PureApplication System 中创建两个隔离的工作负载运行时环境以及论证它们的确是隔离的之前,我们先来回顾一下 PureApplication System 中用于定义运行时环境以及将应用程序部署为工作负载的功能。

运行时环境

正如 在 IBM PureApplication System 中管理应用程序运行时环境 一文中所介绍的,PureApplication System 中的计算硬件是由一个或多个云组组成的。云组 是一个由一个或多个计算节点以及至少一个 IP 组构成的逻辑计算机。计算节点 是一个紧凑但功能强大的计算机,类似于刀片服务器。它包含 CPU 和 内存,可以运行一个托管虚拟机的虚拟机监控程序,如图 1 所示。IP 组 是一组 IP 地址,与连接到企业网络的 VLAN 相关。通过将计算节点和 IP 组结合起来,云组就是运行虚拟机所需的一切(云组中有供虚拟机在其中运行的硬件以及分配给虚拟机的 IP 地址)。

图 1. 计算节点中的 Hypervisor 栈
计算节点中的 Hypervisor 栈

要更好地理解云组如何使用硬件资源,这里有一些关于云组、云组与计算节点之间的关系、VLAN 以及需要在网络中定义的资源的详细信息。

关于云组与计算节点的关系有一些限制。当一个云组创建后并没有为其分配计算节点。对于一个要运行的云组,需要包含至少一个计算节点(至少一个 IP 组)。尽管云组只需要一个计算节点就能正常运行,但理想情况下,每个云组应该包含至少两个计算节点,这样如果其中一个发生故障,虚拟机可以向另一个计算节点进行故障转移。一个特定的计算节点只能属于一个云组。要将一个计算节点从一个云组重新分配给另一个云组,必须将它从第一个云组中删除然后才能添加到第二个上。

PureApplication System 以两种不同方法使用 VLAN,管理 VLAN 或者是应用程序 VLAN。每个云组也需要一个管理 VLAN ID。一个云组包含一个内部 VLAN,用于管理它的虚拟机和其他进程。这些 VLAN 不需要向它们分配任何 IP 地址,但是网络管理员需要保留 ID,这样企业网络就会不包含任何其他有相同 ID 的 VLAN。

PureApplication System 管理员将需要一些来自网络管理员的信息以正确配置 IP 组。VLAN 对于每组应用程序都是必需的,这些应用程序的网络流量应与其他应用程序的网络流量隔离开来。需要为每个 IP 组分配足够的 IP 地址, 以便应用程序中的每个虚拟机都有一个惟一的 IP 地址。具体需要多少 IP 需要一些规划:

  • 将要部署的应用程序。
  • 运行这些应用程序需要的独立虚拟机。
  • 在这些应用程序之间通信所需的独立 VLAN。

网络管理员需要在网络中实际提供 VLAN 和惟一 ID 以及一个足够大的 IP 地址组。这些 VLAN 也需要物理连接到 PureApplication System 并在其上进行配置。通常情况下,许多 VLAN 是在系统初始设置过程中配置的。以后也可以添加其他 VLAN。

虚拟系统模式(Virtual system patterns)

PureApplication System 允许用户创建模式来定义特定应用程序,这些模式支持一个一致的、可重复的部署流程,用户可以使用一个环境配置文件来部署一个模式。环境配置文件 定义如何将模式部署到一个或多个云组及其实例如何在云组中运行的策略。要部署一个模式,用户可以选择一个配置文件来执行该部署,部署反过来指定部署者可以向其中部署模式的云组。一旦部署完成,就可以将每个运行的模式实例称之为一个工作负载

PureApplication System 中一个常见的模式是虚拟系统模式。这类封装标准中间件的产品(比如 WebSphere® Application Server 和 DB2®)可作为可部署 模式安装,通过使用一个或多个脚本包来定制。通常情况下,部署这样一个模式涉及到您的应用程序以及需要运行它的中间件。关于虚拟系统模式及其运作方式的更多详细信息,参阅 导航 IBM 云,第 2 部分: 理解 IBM Workload Deployer 和 IBM PureApplication Systems 中的虚拟系统模式


演示隔离的工作负载环境

要演示两个工作负载彼此隔离的运行时环境,执行以下步骤:

  1. 创建演示环境:演示环境由两个运行时环境构成,每个都孤立地运行其工作负载。
  2. 部署演示工作负载:每个运行时环境将托管一个工作负载。
  3. 演示运行时隔离:要演示两个环境之间的隔离性,需要运行以下两个测试:
    • 我们将展示两个工作负载之间的网络路由,显示它们在系统上是彼此隔离的,彼此只能通过外部网络连接到系统。
    • 我们要让一个运行时环境中的工作负载消耗大量环境资源,而其他环境及其工作负载不受影响。

创建演示环境

演示运行时环境之间的隔离性的第一步是创建两个独立的运行时环境,每个环境运行与另一个环境隔离的工作负载。

如前所述,PureApplication System 中的运行时环境是一个云组。因此,要创建两个独立的运行时环境,我们将需要创建两个云组。一个云组由一个或多个计算节点以及至少一个 IP 组构成。计算节点是硬件资源,是 PureApplication System 的一部分,因此不需要创建,因为它们在系统中已经有了。另一方面,IP 组只代表配置数据,所以必须要创建。我们也需要创建两个环境配置文件来部署模式。

开始创建之前,需要确保下列硬件和网络资源可用:

  • 用户:PureApplication System 上只有一个拥有完整权限的用户。
  • 计算节点:您将需要两个计算节点,它们应是未分配的,即不属于另一个云组。这样可以将它们分配给您的云组。在本例中,您将使用两个名为 "SN#23ZXL15" 和 "SN#23ZXL05" 的节点。
  • 网络: 要演示网络隔离,需要两个应用程序 VLAN,每组应用程序(应该是彼此隔离的)一个。两个 VLAN 可在一个单独的网络上定义,这将创建逻辑隔离。对于该演示,需要在两个单独的企业网络中定义两个 VLAN,使网络隔离不仅仅是逻辑的而且也是物理的。我们假设那些网络是由其各自网关连接的。更大网络隔离可通过重新配置网关或添加一个防火墙轻松实现。

您可以使用两个不同的 VLAN,每个都在不同的网络中定义,如图 2 所示。

图 2. PureApplication System 与企业网络的连通性
PureApplication System 与企业网络的连通性

您所使用的网络的详细信息在表 1 中列出。

表 1. 网络属性和应用程序 VLAN
网络属性 Network A Network B
网络 172.19.75.0 172.19.76.0
子网掩码 255.255.255.0 255.255.255.0
网关 172.19.75.1 172.19.76.1
主 DNS 172.19.64.2 172.19.64.2
备用 DNS 172.19.64.4 172.19.64.4
VLAN 100 200

要创建的演示环境将由以下几个部分构成:

  • IP 组:您将创建两个 IP 组:
    • IP Group A:该组将使用应用程序 VLAN 100。
    • IP Group B: 该组将使用应用程序 VLAN 200。
  • 云组:您将创建两个云组:
    • Cloud Group 1:该组将包含计算节点 SN#23ZXL15 和 IP Group A。
    • Cloud Group 2:该组将包含计算节点 SN#23ZXL05 和 IP Group B。
  • 环境配置文件:您将创建两个环境配置文件来将模式部署到两个云组:
    • EnvProf-1:该文件将模式部署到 Cloud Group 1。
    • EnvProf-2:该文件将模式部署到 Cloud Group 2。

演示环境如图 3 所示。

图 3. 演示环境
演示环境

计算节点

PureApplication System 包括一组计算节点。一个系统中计算节点的数量取决于系统的大小。例如,一个小的 W1500 系统包含 6 个计算节点。对于该演示,您只需要使用两个计算节点就可以创建两个云组。

IP 组

您需要为两个将要用于部署的网络创建两个 IP 组。每个 IP 组将配置一组预定义 IP 地址。表 2 显示您将为每个 IP 组使用的属性。注意这些网络设置是由您的网络管理员提供的。在本例中,您为每个 IP 组分配了全系列 IP 地址。

表 2. IP 组属性
IP 组属性 IP Group A IP Group B
网络地址 172.19.75.0 172.19.76.0
子网/子网掩码 255.255.255.0 255.255.255.0
网关 172.19.75.1 172.19.76.1
主 DNS 172.19.64.2 172.19.64.2
备用 DNS 172.19.64.4 172.19.64.4
VLAN ID 100 200
IP 起始范围 172.19.75.2 172.19.76.2
IP 结束范围 172.19.75.254 172.19.76.254

要创建 IP 组,转至 PureApplication System 控制台中的 IP 组页面。在该控制台上,选择 System Console 选项卡,然后选择 Cloud > IP Groups。该页面显示现有 IP 组列表。要创建一个新 IP 组,按绿色加号图标(+),打开 Create IP group 对话框。将表 2 中列出的 IP Group A 的值填入其中,如图 4 所示,然后单击 OK

图 4. Create IP group 对话框
Create IP group 对话框

现在,您需要向其中每一个添加一组 IP 地址。您可以将 253 个网络地址分配给该 IP 组,注意,对于该演示不需要太多 IP 地址。

要将 IP 地址添加到现有 IP 组,再次转至 IP 组页面(选择 System Console > Cloud > IP Groups)并选择 IP Group A。输入起始地址和结束地址,然后单击 Add,如图 5 所示。

图 5. Set IP range 对话框
Set IP range 对话框

重复上述步骤创建 "IP Group B" 。

云组

管理控制台中的云组页面显示现有云组。要浏览该页面,转至 System Console 选项卡,然后选择 Cloud > Cloud Groups

一个新初始化的 PureApplication System 包含默认云组 “Shared”。在云组页面,选择一个现有云组并检查其属性:

  • 计算节点:这是分配给该云组的计算节点列表。
  • IP 组:这是分配给该云组的 IP 组列表。
  • Management VLAN ID:每个云组需要一个独立的管理 VLAN。这是一个内部 VLAN,不能从系统外部访问。然而,VLAN ID 在 PureApplication System 中应该是惟一的。

图 6 显示默认云组 “Shared” 的属性。

图 6. 云组属性
云组属性

为了演示,需要两个云组。表 3 显示两个云组的属性。

表 3. 云组属性
云组属性 Cloud Group 1 Cloud Group 2
类型 平均数 平均数
Management VLAN ID 1000 2000
IP 组 IP Group A IP Group B

要创建云组,转至云组页面(选择 System Console > Cloud > IP Groups)然后点击绿色加号图标(+),这将打开创建云组对话框。将表 3 中列出的 Cloud Group 1 的值填入其中,如图 7 所示,然后单击 OK。对 Cloud Group 2 中的其他云组重复这些步骤。

图 7. Create cloud group 对话框
Create cloud group 对话框

两个云组创建完成后,需要为每个云组分配一个计算节点和适当的 IP 组。注意计算节点应该是未分配的。在云组页面,选择第一个云组 Cloud Group 1。在云组属性的计算节点部分,选择分配给该云组的计算节点 SN#23ZXL15,如图 8 所示。在 IP Groups 部分,选择该云组的 IP 组 IP Group A。对于第二个云组 Cloud Group 2,重复上述步骤。

图 8. 云组配置
云组配置

环境配置文件

您需要创建两个环境配置文件,使用该文件将模式部署到云组中。表 4 显示两个环境配置文件的属性。注意,每个都部署到其云组和 IP 组。

表 4. 环境配置文件属性
环境配置文件属性 EnvProf-1 EnvProf-2
云组 Cloud Group 1 Cloud Group 2
IP 组 IP Group A IP Group B

要创建一个环境配置文件,转至环境配置文件页面(选择 Workload Console > Cloud > Environment Profiles)并单击绿色加号图标(+),打开 Create environment profile 对话框。将表 4 中列出的 EnvProf-1 值填入对话框,如图 9 所示,然后单击 OK

图 9. Create environment profile 对话框
Create environment profile 对话框

现在将 Cloud Group 1 添加到新创建的环境配置文件 EnvProf-1 中,如图 10 所示。

图 10. 将一个云组添加到环境配置文件
将一个云组添加到环境配置文件

一旦云组添加成功,就必须配置环境配置文件来使用与云组相关的 IP 组。选中图 11 中的选项。现在环境配置文件可用于部署了。对另一个环境配置文件(EnvProf-2)重复上述步骤。

图 11. 使用与云组相关的 IP 组
使用与云组相关的 IP 组

部署演示工作负载

演示运行时环境之间的隔离性的第二步是为每个运行时环境部署一个工作负载,以便每个环境可以托管自己的工作负载。工作负载不需要是完整的业务应用程序,简单应用程序就足以在资源上创建负载。

创建一个虚拟系统模式

首先,您需要一个可以作为工作负载部署的模式。创建一个简单的虚拟系统模式,只包含一个部分 “IBM OS Image for Red Hat Linux Systems 2.0”。真正的工作负载通常由很多在多个虚拟机上运行的复杂模式组成,考虑到这是演示,基础映像就足够了。

Workload Console 中,选择 Patterns > Virtual System Patterns,进入虚拟系统模式页面然后点击绿色加号图标(+)创建一个新模式。起一个名称,SingleCoreOS,在对话框中输入描述然后单击 OK,如图 12 所示。

图 12. Create virtual system pattern 对话框
Create virtual system pattern 对话框

回到虚拟系统模式页面,确保您的新模式是选中的,然后点击右上角的 “edit” 图标打开模式编辑器。在左侧 “Parts” 列表中找到 Core OS,如图 13 所示,然后将其拖放到右边的画布上。

图 13. Core OS 模式部分
Core OS 模式部分

在模式编辑画布上,选中 Core OS 部分,然后点击其 "Properties" 图标,如图 14 所示,打开该部分的属性对话框。

图 14. 模式编辑器中的 Core OS 部分
模式编辑器中的 Core OS 部分

将表 5 中的值填入对话框,如图 15 所示,注意,可以将虚拟机的大小调整为只使用一个虚拟 CPU 和 2048 MB RAM。在这里可以为 root 和 virtuser 用户设置密码,这样一来在您部署该模式时不需要每次都输入密码。

表 5. Core OS 属性值
属性
虚拟 CPU 16
内存大小(MB) 2048
密码(root) password
密码(virtuser) password
图 15. Core OS 属性对话框
Core OS 属性对话框

设置好属性值之后,点击 OK 关闭属性对话框。在模式编辑画布中,点击右上角的 Done Editing,这将保存您所做的模式更改并关闭编辑器。

部署虚拟系统实例

其次,您需要将该模式部署到每个云组。因此需要将该模式部署两次,每次使用一个环境配置文件。这将每个模式部署到其各自的云组中,从该云组的 IP 组中检索一个 IP 地址,在此提醒,部署组件之间的关系如表 6 中所示。

表 6. 虚拟系统模式的部署组件
虚拟系统实例 环境配置文件 云组IP 组
SingleCoreOS-1 Env-Prof-1 Cloud Group 1 IP Group A
SingleCoreOS-2 Env-Prof-2 Cloud Group 2 IP Group B

在虚拟系统模式页面,选择您的 SingleCoreOS 模式,然后点击 Deploy 打开部署对话框,在标有 Virtual system name 的部分,输入 SingleCoreOS-1 作为名称。展开 Choose environment 部分,选择 Env-Prof-1 配置文件,该对话框看起来如图 16 所示。然后点击 OK 部署该模式。模式部署完成后,重复上述步骤,使用 Env-Prof-2 将 SingleCoreOS-2 部署到 Cloud Group 2。

图 16. 虚拟系统模式部署对话框
虚拟系统模式部署对话框

现在,模式实例 SingleCoreOS-1 正在作为一个工作负载使用来自 IP Group A 的 IP 地址在云组 Cloud Group 1 中运行,SingleCoreOS-2 使用 IP Group B 地址在 Cloud Group 2 中运行。可以通过转至虚拟系统实例页面(从 Workload Console 中选择 Instances > Virtual Systems)进行验证,然后选择您的模式实例。如图 17 所示,该属性显示了诸如该实例通过什么模式创建、其当前状态及其虚拟机等细节。

图 17. 虚拟系统实例页面
虚拟系统实例页面

验证您的虚拟系统实例状态,显示为 “The virtual system pattern has been deployed(虚拟系统模式已成功部署)”。您也可以展开虚拟机列表来查看每个虚拟机上有多少 CPU 和内存正在使用中。


演示工作负载隔离

演示运行时环境之间的隔离性的第 3 步是执行两个测试:

  • 网络隔离:我们将展示两个工作负载之间的网络路由,显示它们在系统上是彼此隔离的,彼此只能通过外部网络连接到系统。
  • 计算隔离:我们要让一个运行时环境中的工作负载消耗大量环境资源,而其他环境及其工作负载不受影响。

开始之前,需要确定工作负载在什么硬件上运行,以便您可以使用该硬件执行测试。

硬件资源

要演示资源隔离,首先需要知道您的模式实例具体在什么硬件上运行。通常情况下,我们不知道或不关心具体工作负载使用什么硬件。云计算的神奇之处就是我们知道工作负载在云中某一个地方运行,但不知道具体在哪里。然而,要演示资源隔离,需要深入挖掘 PureApplication System 以了解它在何处运行我们的演示工作负载。

工作负载是一个正在运行的模式实例,模式实例是由虚拟机构成的。因此,需要了解这些 VM 使用什么硬件资源。在本例中,设置如表 7 所示。您的 PureApplication System 和网络上的设置有所不同,但是类似。

表 7. 模式实例硬件资源
虚拟系统实例 VM 名称 云组 计算节点 IP 地址 (IPv4)
SingleCoreOS-1 ipas-a-2-OS Node-SingleCoreOS-1-2405 Cloud Group 1 SN#23ZXL15 172.19.75.2
SingleCoreOS-2 ipas-b-2-OS Node-SingleCoreOS-2-2406 Cloud Group 2 SN#23ZXL05 172.19.76.2

我们怎样理解表 7 中所示的网络设置?按照以下步骤操作:

  1. 转至虚拟系统实例页面(选择 Workload Console > Instances > Virtual Systems)并选择 SingleCoreOS-1,如图 17 所示。
  2. 在实例属性列表中,展开虚拟机列表。将虚拟机名称添加到表中。
  3. 对 SingleCoreOS-2 重复上述步骤。
  4. 转至虚拟机页面(选择 System Console > Cloud > Virtual Machines)并选择 SingleCoreOS-1 VM,如图 18 所示。
图 18. 虚拟机属性
虚拟机属性
  1. 在虚拟机属性列表中,找到云组、计算节点以及 IPv4 地址,然后将它们添加到表中。
  2. 对 SingleCoreOS-2 VM 重复上述操作。

这项技术对于诊断您组织的工作负载如何在 PureApplication System 上运行也是非常重要的。如果工作负载不能正确运行 ,第一步通常是确认它们是否正在运行,在什么硬件上运行。

网络隔离

要演示网络中的工作负载是彼此隔离的,需要使用 ping 和 traceroute 命令展示它们是如何连接的,以及这种连接是否也构成隔离。要展示同一个网络上的工作负载及其连接性,需要登录其中一个模式实例的虚拟机然后在另一个模式实例中 ping 这个虚拟机。可以正常运行,因为两个网络可以通过各自网关彼此接通,但虚拟机之间没有直接连接。

要展示模式实例的确是通过不同网络连通的,使用 traceroute 来展示各个模式实例的 VM 之间的连接通路。因为两个模式实例是通过不同 VLAN 连接到网络的,traceroute 显示它们之间的连接是通过网络默认网关(从 PureApplication System 外部)接通的。要完全隔离模式实例,网络管理员可以将网关设置成防火墙,阻止两个网络之间的所有连接。

要使用 ping 和 traceroute,需要了解模式实例中虚拟机的网络设置。这在前面的 硬件资源 部分已经介绍过了。按照该流程为您的系统建立一个完整的表,如 表 7 所示。

对于我们系统中的示例,表 7 中的值是正确的。注意 SingleCoreOS-1 VM 的 IP 地址是 172.19.75.2。同样地,SingleCoreOS-2 VM 的 172.17.76.2 也在 IP Group B 范围之内。就我们对 PureApplication System 的了解,这些 VM 位于不同的应用程序 VLAN。反过来,这些 VLAN 在系统外部连接到不同网络。

现在有了虚拟机的 IP 地址,可以测试其网络隔离了:

  1. 启动一个 SSH 客户端,比如 “Putty”。
  2. 提供 SingleCoreOS-1 VM 的 IP 地址,如图 19 所示。在我们的示例中,VM 可使用 IP 地址 172.19.75.2 连通。
    图 19. Putty 登录
    Putty 登录
  3. 在 Putty 会话中,使用命令行以 root 身份登录并提供您早期设置的密码(例如,“password”)。
    login as: root
    root@172.19.75.2's password:
    -bash-4.1#
  4. 运行 service iptables stop,禁用 VM 的防火墙。
    -bash-4.1# service iptables stop
    iptables: Flushing firewall rules:                         [  OK  ]
    iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
    iptables: Unloading modules:                               [  OK  ]
  5. 使用另一个 Putty 会话登录到 SingleCoreOS-2 VM(通过 172.19.76.2),并禁用它的防火墙。
  6. 两个防火墙都禁用后,返回 SingleCoreOS-1 VM 的 Putty 会话,尝试 ping 一下 SingleCoreOS-2 的 VM。
    -bash-4.1# ping 172.19.75.2
    PING 172.19.75.2 (172.19.75.2) 56(84) bytes of data.
    64 bytes from 172.19.75.2: icmp_seq=1 ttl=63 time=1.63 ms
    64 bytes from 172.19.75.2: icmp_seq=2 ttl=63 time=0.396 ms
  7. ping 测试成功,这证明 VM 在网络上是可以彼此连接的。但是,有一点我们必须要意识到,VM 能够连接是因为网关配置为允许它们连接。要证实这一点,从 SingleCoreOS-1 VM 运行 traceroute 命令。
    	-bash-4.1# traceroute 172.19.76.2
    	traceroute to ipas-b-2.iic.hur.cdn (172.19.76.2), 30 hops max, 60 byte packets
    	 1  172.19.75.1 (172.19.75.1)  0.274 ms  0.265 ms  0.290 ms
    	 2  ipas-b-2.iic.hur.cdn (172.19.76.2)  0.692 ms  0.723 ms  0.694 ms

正如您所看到的,traceroute 不只是显示一个到目标 IP 172.19.76.2 的跃点,而是显示两个跃点,第一个是 172.19.75.1。这是网络的默认网关,您为 IP Group A(在部署时用于配置 SingleCoreOS-1 VM 的网络)配置的设置之一。默认网关在 PureApplication System 外托管,便于您在其中控制网络隔离。

计算隔离

要演示工作负载的计算资源(即,CPU 和内存)是彼此隔离的,需要在其中一个模式实例中生成 CPU 负载,并显示负载只使用该工作负载云组中的资源,其他云组不受影响。和之前测试网络隔离一样,需要创建一个类似 表 7 的表,描述您的模式实例所使用的硬件资源。

首先在 SingleCoreOS-1 上生成一个系统负载。这只有在计算节点 SN#23ZXL15 上才能转换成实际系统负载。

  1. 启动一个 SSH 客户端,比如 Putty。
  2. 提供 SingleCoreOS-1 VM 的登录详细信息,并以 root 身份登录。在我们的示例中,VM 可以通过 IP 地址 172.19.75.2 连通。
  3. 发出以下命令。这将在后台启动一个单线程进程,使 CPU 利用率接近 100%。
    -bash-4.1# while true; do true; done &
  4. 我们的虚拟机总共应有 16 个(虚拟)CPU。要确认这一点,运行以下命令:
    -bash-4.1# grep processor /proc/cpuinfo
    012345678901234567890123456789
    Processor       : 0
    Processor       : 1
    Processor       : 2
    Processor       : 3
    Processor       : 4
    Processor       : 5
    Processor       : 6
    Processor       : 7
    Processor       : 8
    Processor       : 9
    Processor       : 10
    Processor       : 11
    Processor       : 12
    Processor       : 13
    Processor       : 14
    Processor       : 15
  5. 为了使 16 个 CPU 都实现 100% 利用率,将以下命令再运行 15 次:
    -bash-4.1# while true; do true; done &
  6. 总共应有 16 个作业在后台运行,通过以下命令确认:
    -bash-4.1# jobs
    [1]    Running     while true; do
    	True;
    Done &
    	
    ...
    	
    [16]+  Running     while true; do
    	True;
    Done &
  7. 现在可以确认,OS 报告的 CPU 利用率目前是或者接近 100%:
    -bash-4.1# vmstat 5 5
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
    r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    1  0      0 1879008  14300  69764    0    0    26     4  564  298 54  0 46  0  0
    1  0      0 1878992  14300  69764    0    0     0     0  916   31 100  0  0  0  0
    1  0      0 1878992  14300  69764    0    0     0     0  906   29 100  0  0  0  0
    1  0      0 1878992  14300  69764    0    0     0     0  917   34 100  0  0  0  0
    1  0      0 1878992  14300  69764    0    0     0     0  917   31 100  0  0  0  0

    对于该虚拟机,PureApplication System 控制台显示相同的虚拟 CPU 利用率。

  8. 在管理控制台,转至虚拟机页面(选择 System Console > Cloud > Virtual Machines)。
  9. 选择 SingleCoreOS-1 的 VM:ipas-d-221-OS Node-SingleCoreOS-1-2405。要快速在一个可能很长的 VM 列表中找到该 VM,过滤列表。在本例中输入 Single,如图 20 所示(模式名是 VM 名的一部分)。
    图 20. 搜索虚拟机列表
    搜索虚拟机列表
  10. 选中 ipas-d-221-OS Node-SingleCoreOS-1-2405,检查右侧属性面板。该虚拟 CPU 属性显示利用率是或者接近 100%,如图 21 所示。实际值应该与操作系统工具(vmstat)之前报告的值相当。

    注意:有时候,控制台中显示的数据不是实时更新的。我们发现通常是 4 到 5 分种刷新一次。

    图 21. 虚拟机属性
    虚拟机属性

    要演示云组之间的计算隔离,现在需要比较每个云组计算节点中的 CPU 负载。结果显示 SingleCoreOS-1 计算节点中的 CPU 利用率较高,而 SingleCoreOS-2 计算节点中的 CPU 利用率仍然较低。

    SingleCoreOS-1 虚拟机上有一个较高的(虚拟)CPU 利用率,我们期待看到计算节点 SN#23ZXL15CPU 上相应的(物理)CPU 利用率。

  11. 在管理控制台中,转至计算节点页面(选择 System Console > Hardware > Compute Nodes)。
  12. 选择 SingleCoreOS-1 的计算节点 SN#23ZXL15
  13. 选中 SN#23ZXL15 ,查看右侧属性面板。您将看到物理内核的 CPU 利用率大约是 100%,如图 22 所示。
    图 22. 一个具有高 CPU 利用率的计算节点
    一个具有高 CPU 利用率的计算节点

    因为我们使用 16 个虚拟内核驱动虚拟机,每个内核 CPU 利用率趋于 100%,计算节点(底层物理硬件)的 16 个物理内核的 CPU 利用率趋于 100%。

    注意:有时候,控制台中显示的数据不是实时更新的。在这种情况下,需要等待几分钟,直至控制台刷新数据。

  14. 现在,选择 SingleCoreOS-2 的计算节点 SN#23ZXL05。可以看到物理内核的 CPU 利用率比较低,比如 1% 到 2%,如图 23 所示。
    图 23. 一个 CPU 利用率较低的计算节点
    一个 CPU 利用率较低的计算节点

我们已经演示了虚拟机如何使用其所有虚拟内核逼近它运行所在的计算节点的 CPU 利用率。而同一个 PureApplication System 中的其他计算节点不受影响。按照设计,单个计算节点最多可以分配给一个云组。通过在不同的云组上部署不同的工作负载,可以确保这些工作负载绝对不会同时位于一个计算节点中。换句话说,我们就是这样实现资源隔离的。


结束语

本文从计算资源和网络资源两方面演示了在独立云组中运行的工作负载如何彼此隔离。讨论了工作负载隔离意味着什么,并介绍了 PureApplication System 中用于创建隔离运行时环境的功能。本文也展示了如何创建演示环境、部署测试工作负载、执行测试,并讨论了测试结果。有了这些信息,现在您应当对 PureApplication System 中运行时环境提供的工作负载隔离有所了解了 吧!

致谢

作者对以下 IBM 工作人员对本文所做的贡献表示感谢:Andy BraverySara MitchellKyle BrownRohith Ashok

参考资料

学习

讨论

  • 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, WebSphere
ArticleID=935158
ArticleTitle=在 IBM PureApplication System 中实现工作负载隔离
publish-date=06172013