VMware 接入 Openstack — 使用 Openstack 创建 vCenter 虚拟机

目录

  • 目录
  • 软件环境
  • 前言
  • Openstack 接口驱动
    • 使用 KVM 在 Compute Node 上创建虚拟机的流程
    • 使用 VCDirver 在 vCenter 上创建虚拟机的流程
  • 配置 vCenter 接入 Openstack
    • 修改 Openstack 配置文件
  • 通过 Openstack 在 vCenter 上安装虚拟机
  • ERROR
  • 最后
  • 参考文档

软件环境

  • 操作系统
    • Ubuntu Server 14.04
    • vCenter 6.0.0
    • Devstack-L

前言

从虚拟化的层面来说,GuestOS 的生命周期、迁移、快照等管理过程都离不开 Hypervisor 的支持。 EG. KVM/VMwate Workstation/Hpyer-V 等 VMM 。VMware 暴露的 API 接口和 Openstack Dirver 驱动程序两种结合,就能够实现使用 Openstack 平台来管理多种虚拟化产品。本质上就是 Openstack 的 Nova Service 能够使用这些 API/Dirver 去连接 VMware Hypervisor 并达到控制的目的。在了解 VMware 接入 Openstack 的两种方式之前,首先要了解一些关于 VMWare 虚拟化产品的概念:

vSphere:是 VMware 的一个虚拟化产品,是一套整体企业级虚拟化解决方案,其中主要包含了下面两个组件。

vCenter:表示一个虚拟化数据中心,是所有的物理主机(ESX/ESXI)和虚拟机等资源的统一管理工具。

ESXI(ESX)主机:使用虚拟化软件 ESX/ESXI 来运行虚拟机的物理主机虚拟化操作系统(实际上是一个可以在裸机上安装的管理软件),为虚拟机提供 CPU 和内存资源,同时为虚拟机提供访问存储资源和网络连接的能力。其中 ESX 是收费的,注意:可以直接在裸机上安装,能更节省硬件资源,类似与 Redhat 的 RHEV-H 。

Datastore:共享数据存储,用于保存虚拟机、镜像文件等数据,挂载给 ESX 主机使用。

Openstack 接口驱动

Openstack Nova Project 提供了两个连接 VMware 的 Driver 实现( nova/nova/virt/vmwareapi/dirver.py):

  • ESXDriver 是一种将 ESX/ESXI 主机作为 Hypervisor 的接入方式,ESXDirver 的缺陷在于因为 ESX/ESXI 并不具有太多虚拟化集群的管理操作功能,所以也就丢失 VMware 的一些集群特性(HA/DRS)。* 最新版本的 Openstack 已经在逐渐的抛弃这种连接方式 * 。
  • VCDriver 则可以保留这些虚拟化集群的特性,因为 VCDirver 把 vCenter(集群管理工具) 作为 Hypervisor 来接入 Openstack 。
    VCDriver 很好的支持了 Vmware 与 Openstack 的互补,这也符合当前各厂商对混合云趋势的共识。这也是本篇最主要的内容。

当然这也会引入一些新的问题,EXAMPLE
VCDriver 无法让 Openstack 对 VMware 虚拟机进行直接的操作(需要通过 vCenter 来进行)。这就带来了资源跨 ESXi 节点导致无法轻易整合的问题。具体来说就是作为 Hypervisor 的 vCenter 整体呈现出来的CPU、内存资源都很充足,但是在创建虚拟机时就会发现任何一个节点的资源都不足以创建虚拟机的情况。 VCDirver 仅仅是实现了 Openstack 对 vCenter 的操作而已。

在开始 VCDirver 的内容之前,先看看 Openstack 默认的虚拟化实现方式 —— KVM

使用 KVM 在 Compute Node 上创建虚拟机的流程

  1. nova-api 接收 HTTP 请求并将请求通过消息总线的 RPC 传递到 nova-conductor
  2. nova-conductor 通过消息总线通知 nova-scheduler 获取最佳创建虚拟机的Compute Node
  3. nova-scheduler 通过消息总线获取 nova-conductor 的任务,并返回一个 Compute Node 的数据信息
  4. nova-conductor 获取到 Compute Node 的信息后,通过信息总线通知 nova-compute 在该 Node 上创建虚拟机
  5. nova-conductor 通过消息总线接受到创建任务并通过配置文件(nova.conf)来决定以那种方式来创建虚拟机(virt/VCDirver)
  6. nova-conductor 通过消息总线通知 nova-network 提供网络
  7. nova-conductor 通过消息总线通知 nova-conductor 完成了虚拟机的创建
  8. nova-conductor 访问数据库修改元数据

对于 KVM 来说,通过 nove-compute serivce 直接在 Compute Node 创建虚拟机就可以完成。即:
HTTP Request ==> Restful API ==> nova-api ==> RPC & Queue ==> nova-scheduler ==> nova-compute ==> Create VM in Compute_Node

使用 VCDirver 在 vCenter 上创建虚拟机的流程

  1. 首先需要在 Openstack Nova Service 的配置文件 nova.conf 配置实现创建虚拟机的 Driver type == VCDirver 。
  2. nova-compute 通过 VCDirver 与管理虚拟机集群的 vCenter APIs 交互
  3. 然后 vCenter 选出 Cluster 中合适的 ESX
  4. 最后在 Cluster 内部使用 DRS 来创建虚拟机。

VMware driver architecture

注意:nova-scheduler 可调度的 nova-compute 可以有多个,并且每个 nova-compute 对应了 vSphere 上的一个 Cluster ,每个 Cluster 又都要有一个 Datastore 进行配置和使用。

通过 Openstack 来创建 vSphere 的虚拟机后,虚拟机在 vCenter 的总控界面中会得到呈现,并且可以支持 VMware 的高级功能。除此之外,在 Horizon 中也会得到呈现,能够像管理其他 Openstack 虚拟机一样管理 vCenter 中的虚拟机,但也可能会存在部分 VMware 的功能限制(如ssh keys等)。

配置 vCenter 接入 Openstack

Use the VMwareVCDriver to connect Openstack Compute(nova-compute) with vCenter,and you can access through vCenter to advanced vSphere featuers(vMotion/HA/DRS(Dynamic Resource Scheduling)).

修改 Openstack 配置文件

  • nova.conf :启用 vmwareapi.VMwareVCDriver Dirver
[DEFAULT]
...
compute_driver=vmwareapi.VMwareVCDriver

[vmware]
host_ip=<vCenter_server_ip>                          #VMware vCenter server application 的 IP
host_username=<vCenter username>                   #安装vCenter时配置的Login Username
host_password=<vCenter password>                   #vCenter Password
cluster_name=<vCenter cluster name>                #指定要连接vCenter的哪一个Cluster,一个nova-compute Service可以连接一个Cluster
datastore_regex=<optional datastore regex>         #指定Cluster的Datastore,每个Cluster都需要至少一个Datastore,可以对应多个Datastore, 也可以使用通配符
wsdl_location=https://<vCenter_server_ip>/sdk/vimService.wsdl               #指定wsdl路径
insecure=True                                      #以非Secure的方式访问

NOTE:EG. datastore_regex="nas.*"
==> select all the data stores that have a name starting with “nas”. if the line is omitted, Compute uses the first data store return by the vSphere API.

  • glance-api.conf & glance-registry.conf :配置 Image 上传到 vCenter datastore 中
    镜像下载流程:
    a. Openstack 在 Compute Node 上调用 Glance API 下载镜像
    b. 再调用 VMware 的 API 将镜像上传到 datastore
# glance-api.conf

[glance_store]
filesystem_store_datadir = /opt/stack/data/glance/images/

# Image 上传到 filesystem_store_datadir
#default_store=file
#stores=file,http

# Image 上传到 vCenter datastore 中
default_store=vsphere
stores=vmware,http

# VMware Datastore Store Options
vmware_server_host=<vCenter host IP>
vmware_server_username=<vCenter username>
vmware_server_password=<vCenter password>
vmware_datastores = <datacenterName:datastoreName>    # vCenter中数据中心的名称:数据存储的名称;为了避免存储单向I/O的不便,所以也可以对应多个datastore
vmware_api_insecure=True
vmware_task_poll_interval = 5
#Create the directory for vmware to store the image file
vmware_store_image_dir = /openstack_glance            # 默认为 /openstack_glance

# glance-registry.conf

[glance_store]

default_store=vsphere
stores = vmware,http

vmware_server_host=<vCenter host IP>
vmware_server_username=<vCenter username>
vmware_server_password=<vCenter password>
vmware_datastore_name=<datastoreName>
vmware_datacenter_path=<datacenterName>

和 Openstack 原始支持的 Libvirt Driver 一样,VMware Driver 也能够和 Glance service 交互。如架构图,从 Openstack Image Service 复制 vmdk Image File 到启动 vCenter 虚拟机的 Shared Datastore 中去,同时还会被缓存下来。即:镜像需要从 Glance 下载到 Vmware datastore 中。这样能够使用 VMware 的资源来存储属于 VMware 的文件数据。

  • cinder.conf:配置在 VMware 的资源上创建 Volume
    与创建虚拟机的流程类似,Cinder 的后端存储支持指定为 VMware,使用 VMware Dirver 去创建卷,最终都是调用 vCenter 的存储管理的功能。
#cinder.conf

[vmware]
volume_driver = cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver

vmware_host_ip=<vCenter host IP>
vmware_host_username=<vCenter username>
vmware_host_password=<vCenter password>
vmware_wsdl_location=https://200.21.101.12/sdk/vimService.wsdl
vmware_volume_folder= <VolumeFileName>
vmware_insecure = true
vmware_host_version = 6.0

通过 Openstack 在 vCenter 上安装虚拟机

Step1. 上传 VMDK 镜像文件

glance image-create --name trusty-cloud \
--container-format bare --disk-format vmdk \
--property vmware_disktype="sparse" \
--property vmware_adaptertype="ide" < \
cirros-0.3.2-i386-disk.vmdk

注意:最好使用 Commands 的方式来上传镜像文件,因为必须指定镜像文件的属性为:vmware_disktype="sparse"/vmware_adaptertype="ide"/--disk-format vmdk,使用 Dashboard 来上传镜像的话不能准确的指定这些属性,导致上传之后的镜像无法被 ESXI 识别。

转换镜像文件格式为 VMDK:VMware 只能认识这种类型的镜像文件,所以当我们手中的镜像文件不是 VMDK 时,我们可以转换镜像文件的格式。

qemu-img convert -f qcow2 ~/Downloads/trusty-server-cloudimg-amd64-disk1.img \
-O vmdk trusty-server-cloudimg-amd64-disk1.vmdk

Step2. 使用 Dashboard 或 Commands 启动虚拟机,需要使用刚刚上传 VMDK 格式的镜像来启动。
在成功启动虚拟机的过程中,在 vCenter 的 Log 控制台上会显示由创建信息。

Step3. nova list 查看虚拟机信息

fanguiju@fanguiju:~$ cd devstack/
fanguiju@fanguiju:~/devstack$ source openrc admin admin
fanguiju@fanguiju:~/devstack$ nova list
+--------------------------------------+---------------------+--------+------------+-------------+------------------+
| ID                                   | Name                | Status | Task State | Power State | Networks         |
+--------------------------------------+---------------------+--------+------------+-------------+------------------+
| 42da5d12-a470-4193-8410-0209c04f333a | TestVMwareInterface | ACTIVE | -          | NOSTATE     | private=10.0.0.2 |
+--------------------------------------+---------------------+--------+------------+-------------+------------------+

注意:需要先加载环境变量,如果是使用 admin 身份创建的虚拟机,必须使用 admin 的环境变量才能查看。

ERROR

  • ERROR 1:
ERROR (Unauthorized): Unauthorized (HTTP 401) (Request-ID: req-b228ead3-2680-40c5-9682-dbe7af1da843)

TSG:查看日志发现非正确 Nova Node IP,所以考虑是否在用户 Home 目录下有存在 nova.conf 配置文件。在 screen 启动服务时,没有指定 config 配置路径,那么该启动的服务默认到 home目录 ==> usr/share ⇒ etc下依次寻找并加载配置文件。

ERROR 2:

ERROR (ConnectFailure): Unable to establish connection to http://200.21.18.2:8774/v2.1/ad9a69f3da8f4aa280389fcdf855aeb5

TSG:考虑是否相应的服务没有启动

ERROR 3:

ERROR glance_store._drivers.vmware_datastore [req-60ec6d3c-0596-45d8-ab97-9ef84360acc1 85c6b9fa9127439880276f070c60dad6 ad9a69f3da8f4aa280389fcdf855aeb5] Communication error sending http PUT request to the url /folder/openstack_glance/7a1fa12f-2b41-4751-b421-c454e9a9673a%3FdcPath%3Ddatacenter%26dsName%3Ddatastore1.
Got IOError [Errno 104] Connection reset by peer
ERROR glance_store._drivers.vmware_datastore [req-60ec6d3c-0596-45d8-ab97-9ef84360acc1 85c6b9fa9127439880276f070c60dad6 ad9a69f3da8f4aa280389fcdf855aeb5] Failed to upload content of image 7a1fa12f-2b41-4751-b421-c454e9a9673a. The request returned an unexpected status: 301.
The response body:
None

TSG:配置完 Glance service 后,无法上传镜像文件。是因为Devstack-L 的 PIP 包版本与 vCenter 6 不兼容。上级包即可。

pip list | grep glance

ERROR 4:
在Openstack创建VMWare虚拟机时无法传递镜像,导致VMWare虚拟机无法引导操作系统。

TSG:
需要使用 commands 方式上传镜像,并且在Dashboard中将镜像的属性编辑成为 public 。
EXAMPLE:

glance image-create --name trusty-cloud --container-format bare --disk-format vmdk --property vmware_disktype="sparse" --property vmware_adaptertype="ide" < cirros-0.3.2-i386-disk.vmdk

最后

对于 Openstack 的用户来说,完全不会感觉到 KVM 虚拟机和 VMware 虚拟机的不同,表面上都是通过 Openstack 去管理底层的虚拟机实现,而终端也都仅是调用了 Openstack API 。Openstack 作为一个云集算管理平台,只能管理到 nova-compute 这一层,即:知道 nova-compute 对应了哪一个 VMware Cluster,对于 ESX/ESXI 底层的虚拟机实现,Openstack 是无法管理的,都交由 vCenter 管理。所以虚拟机在 Cluster 内的变动,对于 Openstack 来说是完全不会有影响的。

参考文档

VMware vSphere

时间: 2024-08-18 06:48:04

VMware 接入 Openstack — 使用 Openstack 创建 vCenter 虚拟机的相关文章

Openstack_通用模块_Oslo_vmware 创建 vCenter 虚拟机快照

目录 目录 前文列表 创建虚拟机快照 最后 前文列表 Python Module_oslo.vmware_连接 vCenter Openstack_通用模块_Oslo_vmware 创建/删除 vCenter 虚拟机 创建虚拟机快照 vSphere Create Snapshot 文档 Snapshot 是虚拟机磁盘文件(VMDK)在某个点及时的复本.包含了虚拟机所有虚拟磁盘上的数据状态和这个虚拟机的电源状态(on/off/suspended).你可以在虚拟机起电, 关电, 挂起的状态下创建一个

Openstack 实现技术分解 (2) 虚拟机初始化工具 — Cloud-Init &amp;amp; metadata &amp;amp; userdata

目录 目录 前文列表 扩展阅读 系统环境 前言 Cloud-init Cloud-init 的配置文件 metadata userdata metadata 和 userdata 的区别 metadata 的服务机制 ConfigDrive Metadata RESTful 前文列表 Openstack 实现技术分解 (1) 开发环境 - Devstack 部署案例详解 扩展阅读 Documentation - Cloud-Init 0.7.9 documentation 系统环境 Devsta

VMware Workstation如何创建加密虚拟机_VMware

用户需要输入解密密码才能访问已加密的虚拟机.没有解密密码,就无法访问加密虚拟机的VMDK文件.VMware Workstation加密位于物理计算硬件的启动密码之上.如果是物理计算机,你可以轻松地取出它的硬盘然后安装在任意一个位置就能访问硬盘上的数据. VMware Workstation的加密特性能够防止非授权用户访问虚拟机的敏感数据.本文带你了解采用Workstation加密技术对虚拟机访问进行控制的配置及其局限性. 加密为虚拟机提供了保护,限制了用户对虚拟机的修改.在生产环境中,你不希望在

xen创建的虚拟机xl之后为什么总会变化?

问题描述 xen创建的虚拟机xl之后为什么总会变化?

安卓环境 虚拟机-安卓SDK设置问题,在创建安卓虚拟机的时候需要安卓4.2.2的系统镜像

问题描述 安卓SDK设置问题,在创建安卓虚拟机的时候需要安卓4.2.2的系统镜像 安卓SDK设置问题,在创建安卓虚拟机的时候需要安卓4.2.2的系统镜像,我单独下载好了,请问如何放在android-17的文件夹里 解决方案 http://jingyan.baidu.com/article/4f34706ef9053ae387b56db5.html

eclipse-Genymotion virtual devices manager 的列表中没有检测到我已经创建的虚拟机,什么问题

问题描述 Genymotion virtual devices manager 的列表中没有检测到我已经创建的虚拟机,什么问题 Genymotion virtual devices manager 的列表中没有检测到我已经创建的虚拟机,什么问题噢 Genymotion 作为eclipse插件成功安装了,同时在genymotion里成功创建了android虚拟机,但是从eclipse打开却没有 解决方案 打开genymotion有的话,可能是eclipse插件有问题,可以考虑重启一下eclipse

azure 创建的虚拟机公网ip原理是什么,为什么虚拟机无法解析一些域名。

问题描述 azure 创建的虚拟机公网ip原理是什么,为什么虚拟机无法解析一些域名. 我在azure上创建了虚拟机,有公网IP,我能ssh链接上去.但我下载东西时,无法解析域名 我能在azure虚拟机访问aws的s3吗? 解决方案 如果你用的是天朝山寨azure,那么它只能使用大中华局域网,amazon的was.google的gae.google自己.facebook/twitter等等都是访问不到的. 解决方案二: 下载东西时,无法解析域名? 你是在虚拟机上下载东西还是你本机去下载虚拟机上的东

openstack nova 创建运行虚拟机error

问题描述 创建虚拟机的时候总是显示error,参考openstackicehouse官方文档进行的安装包,下面是/var/log/nova/nova-compute.log日志文件,大家碰到这样的问题没?2014-06-1009:48:11.67245736TRACEnova.compute.manager[instance:0038081b-5967-4296-92aa-d793d74603d3]block_device_info)2014-06-1009:48:11.67245736TRAC

openstack创建的虚拟机无法自动获取到IP地址

问题描述 我创建了两台虚拟机这是网络拓扑图启动虚拟机,虚拟机自动获取不了IP地址安全组规则哪位老师可以解惑啊,在线等,很急 解决方案 解决方案二:要不试试换种方式重启网卡,再检查一下eth1的配置?我也是才在做的解决方案三:我也遇到这个问题了,不知道你当初解决了没有?解决方案四:怎么解决的,我也遇到了这个问题