通过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。
5. 重新启动openstack-nova-compute服务
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,如下所示:
7. 创建glance image。VMware使用的是VMDK格式的image,所以如果是qcow2格式的image,需要进行转换。操作如下:
8. 创建network,注意在创建VLAN的时候,需要admin role,在创建时指定Segment ID,和vCenter里port group的VLAN ID一样。
9. 之后就可以在OpenStack里创建虚机了。创建开始后,在vCenter里也可以看到一个新的虚机被创建出来,但是虚机的名字是一长串数字和字母的组合,也就是UUID。使用UUID的原因是因为UUID总是唯一的。OpenStack是多租户模式,不同租户很可能会创建出同名的虚机。这个时候就需要UUID来区别了。
目前,这种方式还有很明显的缺陷,比如:
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来区别了。
相关文章推荐
- spark-shell on yarn 出错解决【启动命令bin/spark-shell --master yarn-client出现错误,类ExecutorLauncher 找不到】
- Linux目录下/dev/shm的理解和使用
- Opencv中gemm的使用
- linux常用快捷键随笔
- web服务器熟悉(apache编译)
- 企业shell编程基础问题解决实践-是骡子是马溜溜!
- linux下测试宽带速度
- QPixmap,QImage图片大小缩放linux版
- Linux下glui 的安装,以及错误解决
- flash player over linux
- linux man
- linux file system
- linux command
- ubuntu下openGL的配置方法
- Linux下xargs命令详解
- SDN学习笔记(linux命令)
- handleOpenUrl && openUrl
- 监控Linux性能的18个命令行工具
- 每天一个linux命令(3):last命令
- Linux磁盘分区