如果让你利用vmware vsphere搭建vmware私有云搭建方案,你将如何设计与部署.

可以开发票么?
可以的,购买课程或者充值余额后都是可以开具发票的,具体详情点击:
购买的课程可以下载么?
目前PC端暂不支持下载课程视频,请手机或者平板电脑下载“51CTO学院”APP后再下载视频哦!
优惠券如何使用?
非折扣课程(不包含1元课程/套餐)可使用,一个订单(可包含多个课程)只可使用一张;优惠券一经使用,不再返还;若被冻结请在PC端删除订单即可返还。
更多问题查询点击
欢迎您提供宝贵意见,对于您的意见我们都会认真、慎重的讨论,每一个意见都是我们更好为您服务的鞭策和激励,感谢您帮助学院成长,使用 vSphere Web Servicess SDK 获取 VMWare 私有云状态
引言VMWare 是全球虚拟化解决方案的领导厂商。它不仅提供了诸如 vSphere 和 vCenter 等各种不同的虚拟化产品和管理组件,而且为这些产品和组件开放了 API 以及提供了不同的 SDK,以便开发者开发出自己的 VMWare 客户端。vSphere 是 VMware 的旗舰产品,是基于云的新一代数据中心虚拟化套件,包含了诸如 ESX/ESXi,vCenter,vSphere Client 等组件,提供了虚拟化基础架构、高可用性、集中管理、监控等一整套解决方案。VMWare 针对 vSphere 提供了完整的 API 及 Web Servicess SDK。IBM SmartCloud Entry(SCEntry)通过 vSphere Web Servicess SDK 集成了 VMware vCenter 虚拟化平台,提供了 x86 服务器的 IaaS 轻量级解决方案。本文将对 vSphere Web Servicess SDK 进行简要介绍,并以 SCEntry 为例讲解了如何利用 SDK 来获取 vSphere 中组件的状态,同时还描述了 SCEntry 是如何与云端状态保持同步的。SCEntry 简介IBM SmartCloud Entry(SCEntry )正是 IBM 基于以上市场需求推出的产品。SmartCloud Entry 通过对 IBM VMControl 或 VMware vCenter 等虚拟化平台的集成,提供了 Power 服务器以及 x86 服务器的 IaaS 轻量级解决方案,它大大简化了业内已有的虚拟化解决方案,屏蔽其复杂性,在不减弱基本功能的同时,还提供了计费和使用量统计、查询以及角色控制、审批等功能。SmartCloud Entry 可安装在 Windows、Linux 以及 AIX 环境中。SCEntry 使用 Java 开发,采用了 架构,提供了比较灵活的扩展性。在架构上,SCEntry 通过不同的可配置的 Adapter 来连接和集成不同的云,这种架构提供了很好的灵活性。图 1 展示了 SCEntry 的总体架构,其中红色的部分为 VMWare Adapter 和其连接的 vCenter。VMWare Adapter 模块通过 vSphere Web Services 来连接、管理和监控 vCenter 的状态,而 vCenter 又可以管理由很多虚拟机构成的云。另一方面,我们也可以为 SCEntry 配置 VMControl Adapter,这样 SCEntry 就可以连接 IBM VMControl 服务,从而可以通过 VMControl/System Director 来管理 IBM PowerVM。关于 VMControl 和 System Director, 这里不再详述。在后面的章节中,我们将详细的描述 vSphere Web Services 的概念以及在 SCEntry 中是如何使用 vSphere Web Services 来监控和获取 vCenter 中实体的状态信息的。因为 SCEntry 是用 Java 开发的,本文中所有的代码示例均以 Java 写成。图 1. SCEntry 总体架构vSphere Web Servicess SDK 简介如前所述,VMWare 为开发者提供了各种 SDK 以方便定制化管理 vSphere。这些 SDK 包括 vSphere Web Servicess SDK、vSphere Storage management SDK、CIM(Common Information Model)SDK、vSphere SDK for Perl、PowerCLI 等等。其中 vSphere Web Servicess SDK 是最常用的,它提供了针对 ESX/ESXi 以及 vCenter 的管理接口。目前最新的 vSphere Web Servicess SDK 版本为 5.0,可以支持 ESX/ESXi 5.0 及 vCenter5.0。vSphere Web Servicess SDK 提供了 Web Servicess 的 stub 文件,而且还包含了 Java 和 C# 的程序用例和很详细的 API 说明文档。所有的 SDK 相关材料均可从 VMWare上免费下载。理解 vSphere APIvSphere API 以标准 Web Services 方式实现,遵守 Web Servicess Interoperability Organization (WS-I) Basic Profile 1.0 标准,即支持 XML schema 1.0、SOAP 1.1 以及 WSDL1.1。用户可以像调用普通 Web Services 那样调用 vSphere API 来访问位于 ESX/ESXi 以及 vCenter 中的组件和服务。vSphere API 提供了几乎所有的针对 ESX/ESXi 以及 vCenter 的管理接口,比如生命周期管理、虚拟机以及网络和存储等资源的管理和监控功能等。使用 vSphere API 开发的客户端同 vSphere 服务器端组成了一个分布式的系统,它们之间使用异步通信方式进行同步。为了理解这个客户端 - 服务器端的结构,必须清楚以下三个概念:Managed Object(MO,被管对象 ) 存在于服务器端(即 ESX/ESXi 以及 vCenter 中),代表了 vSphere 的服务(services)和组件(components)。服务包括 PropertyCollector, SearchIndex、PerformanceManager 和 ViewManager 等,组件包括 VirtualMachine、Datastore 和 Folder 等。Managed Object Reference(MOR,被管对象引用 ) 存在于客户端,每一个 MOR 都指向服务器端的 MO。客户端程序可以引用 MOR 来调用服务器端 MO 的方法。在每一个 MO 的生命周期中,其 MOR 都是唯一的并且是持久化(persistent)的,这意味着其 MOR 在生命周期中都是不变的,比如即使重新启动 server,其 MOR 仍然不变。Data Objects(数据对象)封装了 MO 的数据信息。客户端通过 Data Object 发送请求给服务器端,又从服务器端接受 Data Object 来得到 MO 的状态等。下图摘自 ,它清楚的说明了这三种数据对象及 vSphere Sever 与 client 的关系。图 2. vSphere Server and Client在这三种数据对象中,MO 代表了服务器端的服务或组件,他们都直接或间接继承自 ManagedEntity 抽象类。下面的类图展示了目前 vSphere Infrastructure 中的 7 种最重要的 MO 类型和它们的继承关系,它们代表了 vSphere Infrastructure 中的 7 种组件或者实体。在 中,对所有的数据类型都有详细的介绍,用户可以查询每一个类的含义和用法。图 3. ManagedEntity 及其子类使用 SDK 开发自己的 vSphere 客户端程序,首要的问题就是如何访问和遍历在 vSphere Inventory 中的对象。下面我们将介绍这方面的内容。vSphere Inventory 介绍vSphere inventory 其实就是 vSphere datacenter 及其管理的对象。在 vSphere inventory 中包含了以下三种类型的对象:
在 datacenter 中被管理的系统,比如 Host、VirtualMachine、VirtualApp 等。
具有一定功能的组件,比如 ComputeResource、DataStore,、Network 等。
负责组织归类的组件,它们负责把 datacenter 中的对象按照层级关系组织起来形成了一个树状结构,比如 Folder 和 DataCenter。ESX/ESXi server 和 vCenter 的 inventory 结构是类似的,只是在 ESX server 中,有些对象的数量有限制,比如在一个 ESX server 的 inventory 中只能有一个 Host 实体。下面两张图出自 ,分别给出了 vCenter 这 ESX server 的 inventory 的结构。图 4. vCenter Inventory 结构图 5. ESX Server Inventory 结构想要访问 vCenter 或者 ESX server 中的某个对象或者调用其方法,就必须首先根据这个对象在 inventory 中的位置找个这个对象。从上图可知,ServiceInstance 对象在 inventory 的结构树中处于根位置,因此遍历整个 inventory 或者要查找 inventory 中的某个对象,必须先从 ServiceInstance 开始。ServiceInstance 类中最重要的一个属性(property,可以理解为类的成员变量)是 content,它指向数据类型(Data Object)ServiceContent 的一个实例。ServiceContent 类含有很多该 vSphere 服务实例的重要属性和服务的引用,比如整个 inventory 的 root folder,session manager,property collector(用于查找和遍历对象),以及 EventManager, TaskManager 等。下面的类图展示了 ServiceInstance 和 ServiceContent 的部分属性。图 6. ServiceInstance 和 ServiceContent下面我们将以 IBM SmartCloud Entry(SCEntry)为例介绍如何遍历和查找 inventory 中的对象。SCEntry 中的 vSphere Inventory 遍历与监控
从上文图 1 中可以看到,SCEntry 使用 VMWare Adapter 模块来连接、管理和监控 vCenter,比如重要的一个工作就是要得到 SCEntry 所关心的位于 vSphere inventory 中的组件和服务(MO 实例)以及它们的状态、属性等。VMWare Adapter 使用 Web Services 方式调用 vCenter 上的 Web Services,如图 7,描述了 SCEntry VMWare Adapter 和 vSphere SDK 以及 vCenter 之间的调用关系。
图 7. 使用 Web Services 调用 vSphere API使用 PropertyCollector 查询对象vSphere API 中,PropertyCollector 类是用来遍历、查询和监控 MO 的状态的。使用 PropertyCollector 时,要指定一或多个 filter 来限定查找的范围,而每个 filter 都含有一组对象来描述:
查询或遍历的起点,即从上文描述的 inventory 树的哪个节点开始遍历。
查询的路径。
要查询哪些对象及它们的哪些属性。PropertyCollector 中的 filter 只对当前 session 有效,因此 PropertyCollector 不能在 session 中共享。vSphere server 会给当前 session 创建一个默认的 PropertyCollector 实例。当然也可以自己在多线程中创建多个 PropertyCollector 实例,以便进行互相独立的查询操作。PropertyCollector 有两种方法来获取数据:
调用 RetrievePropertiesEx/ContinueRetrievePropertiesEx 一次性的获取数据。
如果想持续获得 inventory 中数据对象的状态变化,可以使用 WaitForUpdatesEx 方法。第一次调用这个方法会得到目标对象的初始数据,后续调用会得到相对上一次调用时的增量变化值。下面的类图给出了使用 PropertyCollector 需要用的几个主要的类及其关系。图 8. PropertyCollector 及相关数据对象类图想知道更多的关于这些类的用法请参考 。下面我们结合 SCEntry 中的实现来说明如何使用 PropertyCollector 来遍历和查询 vSphere inventory 中的对象。SCEntry 中的查询实现比如我们对 ResourcePool 类型的 MO 感兴趣,希望查询出 inventory 中所有的 ResourcePool 实例以及以下属性:“name”,”parent”和”summary.config”注意,这里的每个属性都可能是另一个简单类型,比如 String 或者 integer,但也可能是另一个 MOR,比如 parent 属性,就是指指向该 ResourcePool 的父节点 MO 的 MOR。另外,summary.config 的意思是,ResourcePool 的属性 summary 是一个 Data Object(ResourcePoolSummary 类型)实例,它又有一个属性叫做 config(ResourceConfigSpec 类型)。下面的代码片段先为 ResourcePool 和 ComputeResource 创建了 TranversalSpec,后面创建 PropertyFilterSpec 时会用到。清单 1. 创建 TraversalSpec private static final String PROP_NAME = "name";
private static final String PROP_PARENT = "parent";
private static final String PROP_SUMMARY_CONFIG = "summary.config";
// 定义属性列表
private static final String[] RESOURCE_POOL_GATHER_LIST =
{ PROP_NAME, PROP_PARENT, PROP_SUMMARY_CONFIG };
// 新建一个 TraversalSpec 用来查询所有的 ResourcePool
TraversalSpec resourcePoolTraversalSpec = new TraversalSpec();
// 将该 TraversalSpec 命名为 resourcePoolTraversalSpec
resourcePoolTraversalSpec.setName("resourcePoolTraversalSpec");
// 指定要查找类型为 ResourcePool 的 MO 对象
resourcePoolTraversalSpec.setType("ResourcePool");
// 需要读取 resourcePool 属性
resourcePoolTraversalSpec.setPath("resourcePool");
// 如果为 true,将忽略 path 中的 object
resourcePoolTraversalSpec.setSkip(new Boolean(false));
SelectionSpec tmpSelectSpec = new SelectionSpec();
//tmpSelectSpec 通过 name 指向 resourcePoolTraversalSpec,
// 表示将递归查询所有的 ResourcePool
tmpSelectSpec.setName("resourcePoolTraversalSpec");
resourcePoolTraversalSpec.getSelectSet().add(tmpSelectSpec);
// 因为 ResourcePool 都是 folder 的子节点,因此也把 folder 加入到查询条件中
TraversalSpec folderTraversalSpec = new TraversalSpec();
folderTraversalSpec.setName("folderTraversalSpec");
folderTraversalSpec.setType("Folder");
// 需要读取该 folder 的子节点
folderTraversalSpec.setPath("childEntity");
folderTraversalSpec.setSkip(new Boolean(false));
List&SelectionSpec& sspeclistvf = new ArrayList&SelectionSpec&();
sspeclistvf.add(resourcePoolTraversalSpec);
// 在子节点中,查询 resourcePool 类型的对象
folderTraversalSpec.getSelectSet().addAll(sspeclistvf);再以 ResourcePool 为例,看看如何创建 PropertySpec清单 2. 创建 PropertySpec // 得到 ResourcePool 的 PropertySpec
List&PropertySpec& resourcePoolPropSpecs = new ArrayList&PropertySpec&();
resourcePoolPropSpecs.add(new PropertySpec());
resourcePoolPropSpecs.get(0).setAll(new Boolean(false));
List&String& rpGatherList = Arrays.asList(RESOURCE_POOL_GATHER_LIST);
resourcePoolPropSpecs.get(0).getPathSet().addAll(rpGatherList);
resourcePoolPropSpecs.get(0).setType("resourcePool");下面创建 ResourcePool 的 PropertyFilterSpec清单 3. 创建 PropertyFilterSpec // 得到 ResourcePool 的 propertyFilterSpec
PropertyFilterSpec resourcePoolFilterSpec = new PropertyFilterSpec();
resourcePoolFilterSpec.getPropSet().addAll(resourcePoolPropSpecs);
resourcePoolFilterSpec.getObjectSet().add(new ObjectSpec());
//rootFolder 可以从 ServiceContent 中得到。请参考 Programming Guide
resourcePoolFilterSpec.getObjectSet().get(0).setObj(rootFolder);
resourcePoolFilterSpec.getObjectSet().get(0).setSkip(new Boolean(false));
// 将清单 1 中得到的 folderTraversalSpec 传入
resourcePoolFilterSpec.getObjectSet().get(0).getSelectSet().add(folderTraversalSpec);如果想进行一次性的查询操作,使用 retrieveProprotiesEx 方法。调用这个方法的时候在服务器端会先实例化一个 PropertyFilter 实例,然后按照这个 filter 执行查询,最后销毁 PropertyFilter 实例。Server 端并不会把这个 filter 实例加到 PropertyCollector 的 filter 属性中,所以方法调用结束之后,PropertyFilter 也随之销毁。代码如下:清单 4. 使用 retrieveProprotiesEx 查询 //service 是 Web Services 的 stub,关于如何得到 service 实例请参考 programming guide
// 要查询 ResourcePool
service.retrieveProperties(service.getPropertyCollector(), resourcePoolFilterSpec);因为要持续监控 vShpere 服务器端的状态,使用 retrieveProprotiesEx 太不经济,所以我们使用 WaitForUpdatesEx。清单 5. 使用 WaitForUpdatesEx 查询 ManagedObjectR
// 创建 PropertyFilter,并将该 filter 加入到 PropertyCollector 的 filter 属性中
filter = service.createFilter(sc.getPropertyCollector(), resourcePoolFilterSpec, false);
WaitOptions options = new WaitOptions();
// 最多等待 60 秒,如果没有变化 waitForUpdateEx 将返回 null。还可以指定最多返回的对象更新个数
options.setMaxWaitSeconds(60);
UpdateSet updateSet =
// 初始 version
String version = "";
while(true) {
updateSet = service.waitForUpdatesEx(sc.getPropertyCollector(), version, options);
version = updateSet.getVersion();
// 处理取出的数据,略 ...
}SCEntry 中的缓存设计现在已经基本完整的将如何使用 PropertyCollector 进行查询描述清楚了。但是接下来的问题是使用 WaitForUpdateEx 每次查询出来的结果怎么处理呢?为了提高效率,我们设计了一个缓存结构来缓存我们感兴趣的每种对象。每次从 WaitForUpdateEx 返回的更新,我们都相应的放到缓存中,上层程序可以直接访问缓存即可。每种对象都缓存在一个 Replicator 类中,如下:清单 6.Replicator class Replicator{
// 指向该对象的 MOR
private final ManagedObjectR
// 要查询的这个对象的属性,如清单 1 中的 COMPUTE_RESOURCE_GATHER_LIST 指定的 resourcePool 的属性
private final Object[] objA
}图 9. 某 ResourcePool 的 Replicator 结构我们将每一大类 MO,即每一个 PropertyFilter 对应的那些对象都放到同一个 Map 中,以他们的 MOR 的值为 key(他们 MOR 的 type 都是相同的,比如都是“ResourcePool”)。然后在将这个 Map 和 filter 实例放到一个 FilterTracker 类中。清单 7.FilterTracker 定义 private class FilterTracker {
// 共同的 MOR type,如"ResourcePool"
private final String morT
// 要查询的 Property
private final List&String& gatherL
private final Map&String, Replicator& morM
private ManagedObjectR
}最终我们再以 MOR 的类型为 key,将所有的 FilterTracker 放到一个 Map 中,这样我们就可以用 MOR 的类型(如 ResourcePool,VirtualMachine,或者 Alarm 等)查到某 FilterTracker,然后再根据这个对象的 MOR 的值找到对应的 Replicator。下图给出了整个的 cache 结构图 10. SCEntry 中的 Cache 结构同时为了更及时的通知上层应用底层 Inventory 的更新,SCEntry 在发现云端对象变化之后会发送一个事件到一个 BlockingQueue 中,有一个 Listener 以异步的方式去查询 event,然后通知上层应用更新数据库或者更新界面等。下图描述了 SCEntry 中 VMWare Adapter 的部分架构。图 11. VMWare Adapter总结本文首先介绍了如何 vSphere Web Services SDK 的基本概念和 vSphere Inventory 的组成结构,并以 IBM SCEntry 为例,着重讲解了如何使用 vSphere Web Services SDK 来获取 vCenter 中实体的状态。vSphere Web Services SDK 即提供了同步查询方式,也提供了异步查询方式,SCEntry 综合的使用了这两种查询方式,并针对异步查询,设计了一套比较完整的数据结构和缓存机制,有效的提高了应用的查询效率以及实时性。
相关主题:获取相关产品介绍和支持。
参考 ,查看 VMWare vSphere 的最近产品及文档。
查看 “”,更多的了解如何使用 Web Services SDK 开发 vSphere Client。
查看“”以了解详细的 API 信息。 提供了有关云计算的更新资源,包括
云计算 。更新的 ,让您的开发变得轻松, 帮助您成为高效的云开发人员。连接转为云计算设计的 。关于
的活动聚合。
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Cloud computingArticleID=862873ArticleTitle=使用 vSphere Web Servicess SDK 获取 VMWare 私有云状态publish-date=《VMware vSphere设计(原书第2版)》——1.1 什么是设计(续)
本节书摘来自华章出版社《VMware vSphere设计(原书第2版)》一 书中的第1章,第1.2节,作者:[美] 福布斯·格思里(Forbes Guthrie)斯科特·罗威(Scott Lowe)肯德里克·科尔曼(Kendrick Coleman),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
本节书摘来自华章出版社《VMware vSphere设计(原书第2版)》一 书中的第1章,第1.2节,作者:[美] 福布斯·格思里(Forbes Guthrie)斯科特·罗威(Scott Lowe)肯德里克·科尔曼(Kendrick Coleman),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2节将详细介绍各个层面。
采用这种方式定义和描述,VMware vSphere设计就显得简单多了。但是正如你即将在本书中看到的,或者根据你的经验已经知道的一样,VMware vSphere设计可能是很复杂的。然而,即使是在最复杂的设计中,都会有一个统一的元素将不同的层面聚合起来。图1-2中所描述的那个统一元素是什么呢?就是设计的功能需求。功能需求是非常重要的。在VMware vSphere设计(或者任何IT设计工作)中,我们再强调功能需求所扮演角色的重要性也不为过,这是因为它回答了设计需要做什么事情这个问题。需要牢记的是企业实施VMware vSphere都是有它的原因的,并不仅仅是为了安装vSphere。虽然VMware非常希望事情就是如此简单,但事实绝非如此。在很多情况下,VMware vSphere实施背后都会有一个驱动因素、一个动力或者一个目的。当然,这个让企业或组织部署实施VMware vSphere的原因多种多样,因客户或组织的不同而不同。根据我们在虚拟化行业的经验,不同的原因列举如下:整合 企业或组织拥有的物理服务器太多了,希望缩减数量。这个缩减物理服务器数量的需求可能源于很多原因,包括:减少数据中心的使用空间、降低电力和冷却成本,或者降低硬件更新成本。推出新应用 企业或组织想在数据中心部署新的应用或服务,并且已经决定采用虚拟化技术来完成这次部署。这个任务可能是部署某个应用的新版本,例如:企业当前使用Exchange 2007,然后决定通过VMware vSphere构建虚拟环境来推出Exchange 2010;或者某个已经部署了SAP的公司决定改用VMware vSphere来实现。采用虚拟化环境来部署应用或服务的原因不胜枚举,可能包括:增强应用、简化部署和改善对灾难恢复或业务连续性的支持。灾难恢复/业务连续性(DR/BC) 企业或组织正在制定或增强灾难恢复/业务连续性解决方案,并且已经决定使用虚拟化作为这个解决方案的关键部分。它很可能在使用基于阵列的复制解决方案,现在希望使用VMware vSphere和VMware Site Recovery Manager(SRM)来提供更加自动化的灾难恢复/业务连续性解决方案。这个选择通常都是出于经济原因:企业或组织希望减少故障时间(以最小化损失),或者降低实施解决方案的成本。虚拟桌面基础设施 企业或组织希望部署虚拟桌面基础设施(VDI)以实现桌面的移动性、更好的远程接入解决方案、增强的安全性或者较低的桌面管理成本。不管动机如何,VMware vSphere 虚拟环境的应用就是为了支持VDI的部署。如上所述,每个企业或组织采用虚拟化技术的原因都各自不同。他们不会仅为了某一个原因就采用虚拟化技术,但这也是有原因的。通常采用虚拟化技术的原因有多个,而这些原因也就构成了功能需求的基础,它们是虚拟化设计必须“做”的“事情”。功能需求将企业或组织采用VMware vSphere技术的原因具体化,并转化成可执行的条目,而我们正是用这些条目来驱动各个设计决策的。仔细想想刚才列举的例子。那个组织是计划将一个新的Microsoft Exchange Server 2010部署成虚拟化的吗?如果是这样的,那么VMware vSphere的设计最好能满足这个功能需求。这个设计必须明确具体地体现Microsoft Exchange Server 2010的配置需求、支撑性需求和资源约束条件。如果不能合理地解释Microsoft Exchange Server 2010为什么要运行在虚拟化环境中,那么你就是没有考虑到设计的某个功能需求。整个实施很可能也会失败。因为VMware vSphere设计无法完成企业需要它去“做”的“事情”:运行Microsoft Exchange Server 2010。明白了这一点。再回过头去看图1-2就能更好地理解功能需求是如何围绕并将VMware vSphere设计的几个层面统一为一个有机整体了。继续讨论那个在组织的虚拟化环境中部署Microsoft Exchange Server 2010的例子,其功能需求对很多方面都有影响:硬件服务器的选择必须保证能够给虚拟机配置足够的资源以运行Microsoft Exchange Server 2010。运行Exchange的虚拟机要尽可能多配置RAM、虚拟CPU(vCPU)和磁盘空间。Exchange Server 2010的配置还会影响到集群配置,例如vSphere High Availability(HA)、vSphere Distributed Resource Scheduler(DRS)和vSphere Fault Tolerance(FT)。集群配置,例如:应用vSphere FT的能力,反过来还会影响到在虚拟环境中运行的VMware ESXi的网络配置。因vSphere HA、vSphere DRS和vSphere FT这些特性的应用(或应用不足),vSphere设计还要包含运维过程。上述清单还可以不断追加,不过此时你应该已经明白了。功能需求几乎能影响到vSphere设计各个层面的每个决策点,因此它是整个VMware vSphere设计的核心。任何没有直接阐述组织功能需求的设计都不是一个好设计,且其实施也不会成功。任何要设计vSphere虚拟环境的VMware vSphere咨询师或者架构师,如果不了解功能需求,都会以失败告终。毕竟,功能需求是设计要实现的目标,如果连目标都搞不清楚,又怎么谈得上去实现目标呢?有趣的是,虽然功能需求会直接影响到决策点,例如:用什么服务器、服务器的外形因素、网卡(NIC)的种类和数量等,但是这些决策点也会影响到功能需求。功能需求和决策点之间存在固有的相互依赖关系,如图1-3所示。
 虽然之前的讨论一直专注于需求,但是正式的VMware设计文档通常会介绍驱动设计的四个主要因素:需求、风险、约束和假设。需求已经讨论过了,它代表设计必须提供或者满足的具体特性或功能;约束就是决策点,例如:服务器类型的选择、存储类型的使用或者采用何种方式接入现有网络中,这些决策一旦决定就无法更改;风险代表设计未能满足需求或约束的具体区域,例如:如果设计有特定的存储-容量需求,但同时还存在一个约束使设计无法满足存储需求,这就是一个风险。最后,假设就是vSphere架构师为了填补缺失信息在设计中加入的需求或约束,例如:为了规划增长,需要知道具体的增长需求。如果此需求未知,那么架构师在设计的时候就可以通过假设来填补这个空白。下面将继续熟悉vSphere设计流程,请牢记上述四个因素。由于功能需求和决策点之间的相互依赖,你会发现设计其实是个交互过程。根据功能需求来决策,然后根据决策来确保它能够满足功能需求。如果满足,再继续下一个决策点; 如果不满足,就要根据功能需求修正决策。这个交互过程又一次强调了功能需求在设计过程中的重要性。如本节开始部分所述,“设计”就是一个决策过程,在这个过程中我们决定如何集成、配置VMware vSphere环境的不同组成要素,以构建一个健壮且灵活的虚拟基础设施环境。但是,当我们将功能需求在设计过程中扮演的关键角色(统一技术、组织和运维三个层面)考虑在内的时候,也许对“设计”更好的定义应该是:“设计”就是一个决策过程,我们在这个过程中决定如何集成、配置VMware vSphere环境的不同组成要素,以满足功能需求。或者简而化之:“设计”就是让VMware vSphere环境“做”它需要做的“事情”。现在,你应该比较清楚什么是VMware vSphere设计,以及它为什么如此重要了。下一节将进一步讲解vSphere设计的三个层面。
如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@ 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】2017互联网超级工程阿里双11完美落幕,交易额突破1682亿,但阿里工程师如何玩转“超级工程”,背后黑科技又是如何?12月13-14日,12位大咖直播分享揭秘1682亿背后技术实践,马上预约&&
阿里云消息服务(Message Service,原MQS)是阿里云商用的消息中间件服务。与传统的消息中间件不同,...
云数据库 HBase 版(ApsaraDB for HBase)是基于 Hadoop 的一个分布式数据库,支持海...
充分利用阿里云现有资源管理和服务体系,引入中间件成熟的整套分布式计算框架,以应用为中心,帮助企业级客户轻松构建并...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
Loading...

我要回帖

更多关于 vsphere搭建私有云 的文章

 

随机推荐