您的位置:首页 > 运维架构

通过OpenStack来管理VMware虚拟化集群

2015-12-01 18:50 716 查看
VMware的装机量非常大,在很多客户要上云的时候,其中一个主要需求就是把正在使用的VMware集群纳入到OpenStack的管理中。为此,VMware专门开发了VMwareVCDriver以及VMDK driver。前者主要以novo driver的方式,通过vCenter来控制计算和网络;后者主要以cinder driver的方式,通过vCenter来控制datastore。

目前,这种方式还有很明显的缺陷,比如:

1. 已有的运行在VMware集群的虚机无法被OpenStack识别到。也就是说只能通过OpenStack创建的新虚机,才能够被OpenStack管理。

2. 如果使用VLAN模式,在OpenStack里同时只能使用一个VLAN。因为VMwareVCDriver要求vCenter里被使用的VLAN port group的名字必须和OpenStack里integration bridge(默认是br-int)的名字一样。

3. 第一次在OpenStack里创建虚机的时候,会花费很长时间,因为VMwareVCDriver需要将glance里的image通过vCenter拷贝到集群共享的datastore里。这个拷贝完全取决于image的大小和网络传输的速度。

4. 在OpenStack里无法对虚机做resize。

尽管如此,这个driver已经提供了一些基本的功能,可以让我们通过OpenStack来管理VMware集群。在这个基础上,可以做一些二次开发来逐步完善。下面是整个的配置过程,以VMwareVCDriver的配置为主。关于VMDK driver的配置比较简单,可以参考社区文档。

1. 首先需要确保作为OpenStack管理节点的存在两个网卡,一个作为管理用,一个用作数据通道。如果要使用VLAN,还需要将作为数据通道的网卡所连接的交换机端口配置成Trunk模式。

2. 在管理虚机上安装OpenStack controller, network,compute和storage服务,其实就是一个all-in-one的安装配置方式。如果要使用VLAN,请注意在安装配置过程中将租户网络设置为VLAN类型,并配置相关的bridge mapping。我们这里使用的network是neutron。

3. 安装完成后,创建一个KVM的虚拟机测试一下,看是不是能正常启动,包括通过DHCP获得IP地址。

4. 测试通过后,编辑/etc/nova/nova.conf文件,添加如下内容。其中host_IP是vCenter的IP,host_username和host_password分别是vCenter管理员的用户名和密码。lan_interface是vCenter上vlan port group对应的上行的vmmic的名字,比如vmnic1。

[DEFAULT]
compute_driver=vmwareapi.VMwareVCDriver

[vmware]
host_ip=<vcenter_IP>
host_username=<vcenter_username>
host_password=<vcenter_password>
cluster_name=<cluster_name>
vlan_interface=<vmnic_name>


5. 重新启动openstack-nova-compute服务

# systemctl restart openstack-nova-compute.service


6. 如果之前没有配置SSL(缺省是没有),需要修改代码,禁止VMwareVCDriver使用SSL认证,否则在创建虚机的时候会报错“error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed”。

需要编辑/usr/lib/python2.7/site-packages/oslo_vmware/service.py,注释掉如下行:

#self.verify = cacert if cacert else not insecure

并修改self.verify的值为False,如下所示:

class RequestsTransport(transport.Transport):
def __init__(self, cacert=None, insecure=True, pool_maxsize=10):
transport.Transport.__init__(self)
# insecure flag is used only if cacert is not
# specified.
#self.verify = cacert if cacert else not insecure
self.verify = False

self.session = requests.Session()
self.session.mount('file:///',
LocalFileAdapter(pool_maxsize=pool_maxsize))
self.cookiejar = self.session.cookies


7. 创建glance image。VMware使用的是VMDK格式的image,所以如果是qcow2格式的image,需要进行转换。操作如下:

# qemu-img convert -f qcow2 ./cirros-0.3.1-x86_64-disk.img -O vmdk cirros-0.3.1-x86_64-disk.vmdk
# glance image-create --name cirros-cloud --container-format bare --disk-format vmdk --property vmware_disktype="sparse" --property vmware_adaptertype="ide" < cirros-0.3.1-x86_64-disk.vmdk


8. 创建network,注意在创建VLAN的时候,需要admin role,在创建时指定Segment ID,和vCenter里port group的VLAN ID一样。

9. 之后就可以在OpenStack里创建虚机了。创建开始后,在vCenter里也可以看到一个新的虚机被创建出来,但是虚机的名字是一长串数字和字母的组合,也就是UUID。使用UUID的原因是因为UUID总是唯一的。OpenStack是多租户模式,不同租户很可能会创建出同名的虚机。这个时候就需要UUID来区别了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: