Skip to content

Latest commit

 

History

History
 
 

README.mkd

部署Openstack环境

OpenStack主要由七部分组成,分别是Identify, Image, Network, Compute, Block Storage, Object Storage, Dashboard,分别表示认证模块,镜像模块,网络模块,计算模块,块存储模块,对象存储模块和管理模块。

Identify(Keystone)

为其他几个模块提供认证服务,所有的认证操作都会通过keystone来进行。

整个keystone其实就是在数据库中建立用户(user)、角色(role)、Tenant、服务(service)、endpoint以及其相互对应关系。Tenant在之前的版本中叫做Project,Tenant是一个独立的资源容器。每个Tenant都可以定义独立的VLAN, volumes, instances, images, keys, users等。服务指的是OpenStack所提供的那几种服务(network, volume, image, identify, compute, swift)。endpoint是指各服务的内部、外部及管理接口址(REST API)。

软件包:

keystone                 OpenStack identity service - Daemons
python-keystone          OpenStack identity service - Python library
python-keystoneclient    Client libary for Openstack Keystone API

Image(Glance)

提供镜像服务,创建虚拟机什么的都会从这里拉取镜像模板。

你可以将镜像通过Glance来上传到相应目录并在数据库里标记镜像的位置、属性及相关权限。使用nova来创建instance的时候就是从Glance的数据库中来查找镜像文件及相关属性、权限。

软件包:

glance                 OpenStack Image Registry and Delivery Service - Daemons
glance-api             OpenStack Image Registry and Delivery Service - API
glance-common          OpenStack Image Registry and Delivery Service - Common
glance-registry        OpenStack Image Registry and Delivery Service - Registry
python-glance          OpenStack Image Registry and Delivery Service - Python library
python-glanceclient    Client library for Openstack glance server.

Network(Quantum)

提供网络服务,即创建虚拟机的IP地址分配及网络分配都由它来支配。

软件包:

quantum-common                      common - Quantum is a virtual network service for Openstack.
quantum-dhcp-agent                  Quantum is a virtual network service for Openstack. (dhcp agent)
quantum-l3-agent                    Quantum is a virtual network service for Openstack. (l3 agent)
quantum-plugin-openvswitch          Quantum is a virtual network service for Openstack. (openvswitch plugin)
quantum-plugin-openvswitch-agent    Quantum is a virtual network service for Openstack. (openvswitch plugin agent)
quantum-server                      server - Quantum is a virtual network service for Openstack
python-quantum                      Quantum is a virutal network service for Openstack. (python library)
python-quantumclient                client - Quantum is a virtual network service for Openstack

Comupte(Nova)

提供计算服务,nova是运行在libvirt上层的的一个管理工具,用来管理操作虚拟机。

软件包:

nova-api             OpenStack Compute - API frontend
nova-cert            OpenStack Compute - certificate management
nova-common          OpenStack Compute - common files
nova-compute         OpenStack Compute - compute node
nova-compute-kvm     OpenStack Compute - compute node (KVM)
nova-consoleauth     OpenStack Compute - Console Authenticator
nova-novncproxy      OpenStack Compute - NoVNC proxy
nova-scheduler       OpenStack Compute - virtual machine scheduler
python-nova          OpenStack Compute Python libraries
python-novaclient    client library for OpenStack Compute API

Block Storage(Cinder)

提供块存储服务,持久存储虚拟机上的数据,即一台虚拟机上面会挂载其他磁盘如vdb/vdc/vdd等,这个虚拟的磁盘就是Cinder在宿主机上创建的raw或qcow2文件。

软件包:

cinder-api             Cinder storage service - api server
cinder-common          Cinder starage service - common files
cinder-scheduler       Cinder storage service - api server
cinder-volume          Cinder storage service - api server
python-cinder          Cinder python libraries
python-cinderclient    python bindings to the OpenStack Volume API

Object Storage(Swift)

对象存储,存储的是一些资源文件,如图片、代码等文件。

Dashboard(horizon)

管理这些模块的平台,所在操作都可以在Dashboard中进行。

软件包:

openstack-dashboard      django web interface to Openstack
python-django-horizon    Django module providing web based interaction with OpenStack
python-openstack-auth    A django authentication backend for Openstack

OpenStack各组件说明

nova-api

接收和回应终端用户的API请求,包括OpenStack Compute API, Amazon's EC2 API和一个特殊的管理API(给授权用户做一些管理操作的)。

nova-api-metadata

接收虚拟机的metadata请求,仅用在多机模式。

nova-compute

通过宿主机的API(KVM的libvirt,XenServer的XenAPi, VMware和VMwareAPI)用来创建和销毁虚拟机,说白了就是接收队列(AMQP)的操作请求,然后执行相应命令来完成该操作。

nova-scheduler

从队列里接收创建虚拟机的请求,然后确定该虚拟机应该在哪台宿主机上运行。

nova-conductor

Grizzly中新加入的一个模块,是夹在nova-compute和数据库之间的一层介质,用来避免nova-compute直接对数据库进行操作。

nova-network

和nova-compute相似的一个东西,是用来接收队列里的网络请求,然后执行相应指令如添加一条iptables规则、启动一个网桥。这个东西已经从nova中分离出来,成为了OpenStack Network组件,学名Quantum。

nova-dhcpbridge

是一个脚本,用来记录可以分配给虚拟机的IP地址,已经合并到了Quantum中。

nova-consoleauth

用来认证控制台代理(Console Proxies)提供的用户token。

nova-novncproxy

提供了一个通过VNC来访问正在运行的虚拟机的功能,它支持基于浏览器的VNC客户端。

nova-xvpnvncproxy (nova-console)

提供通过VNC链接正在运行的虚拟机。

nova-cert

用来管理x509证书,登录虚拟时所需要的私钥以及创建虚拟机时所使用的公钥。

nova-cells

用来在不改变数据库和消息队列的情况下来伸缩OpenStack Compute,它的主要目标是使OpenStack支持大规模部署。如果不用cells的话,你想伸缩OpenStack Compute,你需要建数据库和消息队列集群等比较麻烦的事情。

nova-volume

一个已经被Cinder取代的鸟

nova-objectstore

提供了一个S3界面的镜像注册功能。

nova / nova-manage

命令行管理工具。

glance-api

接收镜像API的查询、抓取和存储请求。

glance-registry

存储、执行和抓取镜像的metadata(大小,类型等)。

keystone

认证的东东,处理API请求并提供可配置的策略、token及认证服务。

quantum-server

接收网络的API请求并转发到适当的网络插件(openvswitch,linuxbridge等)上。

cinder-api

接收块存储的API请求并转发到cinder-volume上去执行。

cinder-volume

执行cinder-api转发来的请求,如向数据库写块存储的相关状态,通过MQ队列与其他进程进行交互,通过相关驱动来与块存储系统进行通信如IBM的存储系统、GlusterFS、Linux iSCSI等。

cinder-scheduler

与nova-scheduler差不多,也是用来确定在哪个节点上创建Block Storage。

说明

以上是在Ubuntu 12.10环境下进行部署的。看似简单,但是其中各种细节很让人纠结,我还没搞定网络这块。

吐槽

OpenStack最开始的设计各种不规范,各种乱啊,之前的部分命令被重新定义了。官方的文档貌似都没人更新,里面存在的错误之处也没有得到更正。

搭建OpenStack Unit Test环境(nova)

$ git clone https://github.com/openstack/nova
$ cd nova
$ ./run_tests.sh --update
$ ./run_tests.sh nova.tests.virt.libvirt.test_libvirt
$ source .venv/bin/activate
$ pip install nose
$ nosetests nova/tests/
$ nosetests nova/tests/test_file.py
$ nosetests nova.tests.virt.libvirt.test_libvirt
$ nosetests -s -v nova/tests/virt/libvirt/test_libvirt.py:LibvirtDriverTestCase.test_finish_revert_migration_power_on

调试Test Case

在testcase.py脚本里进行调试里需要在nosetests后面加上-s参数。

If you are using CentOS, you need to:

# yum install libffi-devel postgresql-devel gcc mysql python-pep8 openssl-devel libxml2-devel  libxslt-devel mysql-devel

参考资料

1.http://docs.openstack.org/folsom/basic-install/content/
2.http://docs.openstack.org/trunk/openstack-compute/admin/content/
3.http://wiki.openstack.org/LibvirtXMLCPUModel
4.http://wiki.openstack.org/NovaConfigOptions