免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2929 | 回复: 0
打印 上一主题 下一主题

使用 IBM Systems Director VMControl 实现 PowerVM 虚拟环境的自动化部署 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-19 11:39 |只看该作者 |倒序浏览
概述
PowerVM 是 IBM 的一种虚拟化平台。通过 PowerVM 可以最大限度的利用服务器资源,其 CPU 资源可以细化到 0.01(微分区),具有动态内存共享和实时迁移等高级性能。IBM Systems Director VMControl 简化了 PowerVM 环境中的虚拟机(后面简称虚机)部署、映像管理等功能。在虚机部署方面,通过 VMControl,部署一台虚机只需要一个操作;而如果利用传统的 HMC 和 NIM,则需要先在 HMC 上创建一个虚机,为其分配存储和网络,然后再利用 NIM 来实现网络安装操作系统。在映像管理方面,VMControl 提出了“虚拟设备(Virtual Appliance)”的概念,虚拟设备存储在一个映像存储库中,VMControl 可以自动发现映像存储库及其上的所有虚拟设备。虚拟设备可以从多种来源获得,且可以方便的被 VMControl 管理。
有三种方法可以使用 VMControl 来实现虚拟环境的部署:VMControl 的控制台界面,VMControl 的命令行接口以及 REST API 接口。对于应用程序而言,可以调用命令行或 REST API 接口。当前已有的资料对两种接口的描述比较分散,对一些参数的使用解释不太详细,本文根据实践经验说明接口的详细使用,并结合前期的环境准备给出一个完整的虚拟环境搭建过程。

环境准备
PowerVM 环境准备
PowerVM 的基础环境包括:
  • 至少一台 Power 主机作为虚机的物理宿主。
  • 一个 HMC 服务器用于管理多个 Power 主机,并和 Systems Director 进行通信。
  • VIO 服务器用于实现动态分区功能(DLPAR),为虚机提供虚拟的存储和网络资源。
创建虚拟机的 CPU 和内存资源可以直接从主机得到;磁盘存储可以从主机得到,也可以来自于外来存储;网络资源从主机的物理网卡中虚拟出来。VIO 服务器负责存储和网络的虚拟化,下面分别介绍基于 VIO 服务器的存储和网络的环境准备。
  • 存储环境初始化
    在此介绍一种较为简单的存储虚拟化方式:VIO 服务器通过虚拟的 SCSI 方式将存储映射成逻辑卷分配给不同的虚机。
    在 HMC 界面上,进入到主机的配置目录,展开到“虚拟资源”中的“虚拟存储管理”(virtual storage management),点击进去查询 VIO 服务器。在查询得到的界面中,可以创建存储库和虚拟磁盘。创建存储库如图 1 所示。


    图 1. 创建存储库


    如图 1 所示,我们创建了存储库“lparvg”。此时我们再创建一块虚拟磁盘,如图 2 所示。


    图 2. 创建虚拟磁盘


    如图 2 所示,我们创建了一块 20G 大小的名为“tempdisk”的磁盘。此块磁盘即可以作为以后创建虚机时所用的磁盘。
  • 网络环境初始化
    如果要让创建的虚机能够和 VIO 服务器以及其他虚机进行内部通信,则需要在 VIO 服务器上建立至少一个虚拟局域网(VLAN)。如果虚机还需要同外部网络进行通信,则需要在 VIO 服务器上创建共享网络适配器(SEA)。SEA 和 VLAN 的关系图如图 3 所示。


    图 3. SEA 和 VLAN


    (1)创建 VLAN 可以在 HMC 界面上进行:
    打开 VIO 服务器的概要文件(Profile)的虚拟适配器页面,或者定位到 VIO 服务器的“动态逻辑分区”的实际虚拟适配器界面上,选择创建“网络适配器”,则出现以下界面如图 4 所示。


    图 4. 创建 VLAN


    如图 3 所示,创建 VLAN 时提供 VLAN 的 ID(如果提供的 ID 不是已有的,则会创建一个新的 VLAN),然后选择需要“访问外网”。
    (2)创建 SEA 需要在 VIO 服务器上运行命令:
    $ mkvdev -sea ent0 -vadapter ent1 -default ent1 -defaultid 1
    在运行命令之前,首先需要在 VIO 服务器上创建虚拟以太网适配器 ent1,然后用此命令将 ent1 与物理以太网适配器 ent0 连接起来。

VMControl 环境准备
VMControl 环境准备主要包括将 HMC 所管理的 Power 环境加入到 Systems Director 中,并发现映像存储库和其中的映像。在 IBM Systems Director 和其插件 VMControl 都安装完成后,打开控制台界面,在界面上即可完成这些操作。
  • HMC 发现
    在 Systems Director 的控制台界面上,定位到“System Discovery”,输入 HMC 的 IP 地址,点击“Discovery Now”,如图 5 所示。


    图 5. HMC 发现



    当发现完成后,会出现 HMC 和其操作系统。输入 HMC 的访问用户名和密码,则 HMC 所管的所有 Power 主机和虚机都会出现在 Systems Director 的资源库里,并以树形方式显示。
  • 映像发现
    VMControl 需要映像库储存各种操作系统和应用的映像。我们采取 NIM 作为映像存储库。在部署第一个虚机之前,需要准备至少一个映像用于部署。
    发现映像存储器的步骤如下:

    • 配置 NIM 主机
    • 在 VMControl 界面上安装代理到 NIM 主机所在的机器
    • 安装代理成功后,选择发现映像存储器,从而将存储器里面的映像都能显示在虚拟设备列表中。
    映像存储器发现之后,如果里面没有任何虚拟设备,需要准备至少一个虚拟设备。可以采取以下方法获取一个虚拟设备:
    • 捕获(capture)一个已存在的虚机或者工作负载
    • 从 NIM 上导入 mksysb 文件或者 lpp_source 文件


使用命令行接口搭建 PowerVM 虚拟环境
利用 VMControl 可以方便地将虚拟设备部署成运行状态的虚拟环境。有两种方式来部署虚拟环境:
(1)用虚拟设备创建一台新的虚机
(2)将虚拟设备部署到已经存在的虚机上
下面详细介绍如何使用命令行来实现这两种方法。
使用虚拟设备直接创建虚机
使用虚拟设备直接创建一台虚机时,VMControl 提供了命令行接口 deployva 。接口 deployva 的参数中要指定将哪个虚拟设备部署到哪个主机上,同时指定虚机的配置参数。具体步骤如下所示。
步骤一:取得虚拟设备的唯一标识号(OID)
# smcli lsva – o

通过 lsva 命令得到所有的虚拟设备,加上 -o 参数可以得到虚拟设备的 OID。
步骤二:取得主机的 OID
#smcli lssys -o -n AUSP5N

通过 lssys 命令指定主机的名称(AUSP5N),加上 -o 参数来得到主机的 OID。
步骤三:获取可用的存储和网络
#smcli lscustomization -a deploy_new -V 3648 -s 0xd56

通过 lscustomization 参数得到可以定制化的参数,尤其是为了得到可用的存储和网络资源。其中 -V 参数指定虚拟设备的 OID,-s 参数指定主机的 OID。 此命令运行结果中,需要注意的有 virtualnetworks 结果和 poolstorages 结果。


可以看到已有的虚拟网络是“Network 1”。


可以看到已有的存储库有 lparvg 和 rootvg。
步骤四:部署虚拟设备创建虚机,示例代码如清单 1 所示。

清单 1. 部署虚拟设备创建虚机
smcli deployva -v -s 0xd56 -V 3648 -a deploy_new -A "poolstorages =lparvg:VIOS VIOS,  
CPUshared=1, CPUmode=SHARED, memsize=1024, memmax=2048,  
virtualnetworks[Network 1]=hostVnet:ETHERNET0/1,  
product.AIX1.com.ibm.ovf.vim.2.system.hostname=client2,  
product.AIX1.com.ibm.ovf.vim.2.system.domainname=ibm.com,  
product.AIX1.com.ibm.ovf.vim.2.networkport.6.ip=172.16.3.6,  
product.AIX1.com.ibm.ovf.vim.2.networkport.6.netmask=255.255.240.0,  
product.AIX1.com.ibm.ovf.vim.2.networkport.6.gateway=172.16.0.1,  
product.AIX1.com.ibm.ovf.vim.2.networkport.6.dns1.ip=172.16.0.2"

此 deployva 命令,指定 -a 参数为 deploy_new 则是创建虚机,-A 参数中指定了所创虚机的配置参数,包括 CPU、内存大小,磁盘所用的存储库,虚拟网络及 IP 相关参数。此命令运行一般需要几十分钟,运行结束后表示虚机部署完成,部署完成后的虚机磁盘大小将和所用的虚拟设备相同。
在已有虚机上部署虚拟设备
可以选择一个已有的虚机,不管虚机是否已经安装操作系统,部署虚拟设备。如果是还未安装操作系统的虚机(空虚机),则部署完成后虚机将有了和虚拟设备一样的操作系统及应用;如果是已经有了操作系统的虚机,则已有的系统会被新的虚拟设备所覆盖。
本节将先介绍如何创建一个空的虚机,然后在空的虚机上部署虚拟设备。
  • 创建空虚机
    (1)首先运行命令取得创建空虚机可以定制的参数:
    smcli lsvrtcap -n AUSP5N -c mkvs -A "IBM Power - AIXLINUX"

    利用 lsvrtcap 命令用 -n 参数指定主机,-A 参数指定虚机类别来得到在创建空虚机时可以定制的参数。
    此命令的运行结果中需要注意的是 networks、disks:




    可以看到 networks 的 key 值是 1。




    可以看到可用的虚拟磁盘包括 tempdisk 和 lp3vd1.
    (2)在得到可以定制的参数之后,可以运行 mkvs 命令来创建空虚机,如:


    清单 2. 创建空虚机
    smcli mkvs -A "name=client3, gos=IBM Power - AIXLINUX, CPUshared=2,CPUmode=SHARED,  
    memsize=2048, networks=+1, disks=+tempdisk:lparvg:VIOS" AUSP5N

    命令中指定的 networks 和 disks 即是从上一步骤中得到的可配置参数。创建好的虚机磁盘大小即为指定的虚拟磁盘大小。
    (3)运行命令启动空虚机
    smcli rpower -n "client3" PowerOn
  • 将虚拟设备部署到空虚机上
    在空虚机创建之后,就可以将虚拟设备部署上去。
    (1)首先运行命令得到可配置参数
    smcli lscustomization -a deploy_existing -V 3648 -s 0x1583

    运行 lscustomization 指定类别是 deploy_existing,-V 指定虚拟设备的 OID,-s 指定空虚机的 OID,可用上节所述命令得到这些 OID。
    (2)部署虚拟设备到空虚机上,示例代码如清单 3 所示。


    清单 3. 部署虚拟设备到已有虚机上
    #smcli deployva -v -s 0x1583 -V 3648 -a deploy_existing -A '
    product.AIX1.com.ibm.ovf.vim.2.system.hostname=client3,  
    product.AIX1.com.ibm.ovf.vim.2.system.domainname=ibm.com,  
    product.AIX1.com.ibm.ovf.vim.2.networkport.6.ip=172.16.3.7,  
    product.AIX1.com.ibm.ovf.vim.2.networkport.6.hostname=client3,  
    product.AIX1.com.ibm.ovf.vim.2.networkport.6.gateway=172.16.0.1,  
    product.AIX1.com.ibm.ovf.vim.2.networkport.6.netmask=255.255.240.0,  
    product.AIX1.com.ibm.ovf.vim.2.networkport.6.dns1.ip=172.16.0.2,  
    product.AIX1.com.ibm.ovf.vim.2.networkport.6.domainname=ibm.com'

    可以看到将虚拟设备部署到已有虚机上时,命令中主要指定 IP 相关参数即可,因为虚机已经存在,不需要再指定虚机本身的硬件参数如 CPU、内存和磁盘存储等。此命令运行一般也需要几十分钟,待命令结束,登录已有的虚机,将看到新部署的系统环境而非原来的系统。

小结
使用 VMControl 的命令行接口来搭建虚拟环境,方便快捷。可用于测试 VMControl 和 PowerVM 环境是否准备好;同时在一些脚本后台程序中,调用此命令行接口将会比较方便。

使用 REST API 接口搭建 PowerVM 虚拟环境
除掉命令行接口外,VMControl 还提供了 REST API 接口来搭建 PowerVM 虚拟环境。下面将详细介绍如何使用 Java 实现 REST API 接口来创建一个空的虚机,然后在空虚机上部署虚拟设备,从而得到一个完整的可用的虚机。
创建空虚机
如同使用命令行接口一样,创建空虚机需要首先取得主机的 OID,并得到可以定制的虚机属性
步骤一:取得主机的 OID
发送 GET 请求到 /VMControl/hosts 可以得到所有的主机信息,从中得到所需主机的 OID。
步骤二:取得可以定制的虚机属性参数
发送 GET 请求到 /VMControl/hosts/3461/virtualServers/customization,可以得到在主机(OID 为 3461)上创建一个虚机时所能定制的所有属性参数。
步骤三:创建新虚机
发送 POST 请求到 /VMControl/hosts/hostOID/virtualServers 中(其中 hostOID 是步骤一中得到的主机 OID),示例代码如清单 4 所示。

清单 4. 使用 Java 实现 REST API 创建空虚机
//get SystemsDirectorConnection sdc  
String uri =
     sdc.getConnectionContextURI() + "/VMControl/hosts/"+hostOID+"/virtualServers";  
String requestBody = "{\"virtualServer\":{\"properties\":[" +
"{\"name\":\"gos\", \"value\":\"IBM Power - AIXLINUX\"}," +
"{\"name\":\"name\", \"value\":\""+vmname+"\"}," +
"{\"name\":\"CPUshared\", \"value\":2}," +
"{\"name\":\"CPUmode\", \"value\":\"SHARED\"}," +
"{\"name\":\"memsize\", \"value\":2048}," +
"{\"name\":\"memunitsize\", \"value\":\"MB\"}," +
"{\"name\":\"networks\", \"value\":1}," +
"{\"name\":\"disks\", \"value\":\"tempdisk:lparvg:VIOS\"}" +
                 "]}}";  
HttpsURLConnection dataConnection = sdc.processRequest(uri, "POST", requestBody);  
int rc = dataConnection.getResponseCode();           
if (rc == 201) {  // OK
          System.out.println("success!");  
}

在清单 4 中,hostOID 是主机的 OID,在请求体中传递虚机创建参数:操作系统(gos);CPU 和内存大小;networks 是从步骤二中得到的可选网络的主键;disks 也是从从步骤二中得到的可用的磁盘的主键。向服务器发送此请求后,若返回值是 201,说明请求发送成功,服务器开始按照所传参数创建空虚机。
部署虚拟设备
在虚机创建完成后,将虚拟设备部署到所创建的虚机上。首先取到虚拟设备的 OID 以及所创建虚机的 OID,然后发送 POST 请求到 /VMControl/workloads 来部署虚拟设备。
(1)通过发送 GET 请求到 /VMControl/virtualAppliances 取得所有虚拟设备的信息,从中得到所需虚拟设备的 OID。
(2)通过发送 GET 请求到 /VMControl/hosts/3461/virtualServers 来得到主机(OID 为 3461)上的所有虚机信息,从而得到新创建的虚机的 OID 信息。
(3)部署虚拟设备的示例代码如清单 5 所示。

清单 5. 使用 JAVA 实现 REST API 部署虚拟设备
//get SystemsDirectorConnection sdc  
String uri = sdc.getConnectionContextURI() + "/VMControl/workloads";  
String response = "";  
String requestBody =  
"{\"workload\":{\"virtualAppliance\":\""+vaOID+"\",\"target\":\""+vmOID+"\"," + "\"properties\":[" +         "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.system.hostname\",  \"value\":\"client1\"}," + "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.system.domainname\", \"value\":\"ibm.com\"}," + "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.networkport.6.ip\", \"value\":\"172.16.3.5\"}," + "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.networkport.6.hostname\",\"value\":\"client1\"}," + "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.networkport.6.gateway\", \"value\":\"172.16.0.1\"}," + "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.networkport.6.netmask\", \"value\":\"255.255.240.0\"}," +                           "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.networkport.6.dns1.ip\", \"value\":\"172.16.0.2\"}," + "{\"name\":\"product.AIX1.com.ibm.ovf.vim.2.networkport.6.domainname\", \"value\":\"ibm.com\"}" +
                 "]}}";  
HttpsURLConnection dataConnection = sdc.processRequest(uri, "POST", requestBody);  
int rc = dataConnection.getResponseCode();  
if (rc == 201) {
          System.out.println("success!");  
}

在清单 5 中,vaOID 是虚拟设备的 OID,vmOID 是新虚机的 OID,在请求体中提供 IP 相关参数,发送请求,即向服务器提交了一个部署虚拟设备的申请。返回值 201 表示申请提交成功,服务器开始部署虚拟设备到请求的虚机上。
小结
使用 REST API 接口来搭建虚拟环境,由于 REST API 的通用性,使得此方法适合于扩展各种已经存在的应用系统。如果你已经有一个相关的应用系统,想使用 VMControl 来管理虚拟环境,那么选用此方法是最合适不过的了。

总结
本文首先介绍了 PowerVM 和 VMControl 的环境准备,然后详细描述了如何使用两种接口——命令行接口和 REST API 接口来实现 PowerVM 虚拟环境的自动化搭建。通过本文可以对 PowerVM 虚拟环境搭建过程有一个整体的了解,同时能了解到 Systems Director VMControl 的两种程序接口的详细调用方法。

作者简介
操牡丹是 IBM 中国软件开发中心工程师,主要从事云服务方案的研究和开发工作。兴趣包括:虚拟化、云服务以及数据分析。

马润生主要从事 ERP 系统的开发工作,非常关注于富客户端解决方案的技术和产品,同时对云计算技术感兴趣。




http://www.ibm.com/developerworks/cn/aix/library/1112_caomd_vmcontrolpowervm/index.html


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP