1.3.4.p_w_picpath的服务管理html
glance p_w_picpath-create命令html5
glance p_w_picpath-create命令用于添加新的虚拟机镜像至glance中,glance p_w_picpath-update 命令用于修改已经完成更新的镜像的属性信息。python
p_w_picpath-create命令至少要接收三个参数:--name 、--container_format、--disk_format。 其中--disk_format用于指明磁盘镜像文件的格式,包括raw,qcow2,vhd,vmdk,iso,vdi,aki,ari,ami等。--container_format用于代表镜像文件是否包含了虚拟机的元数据信息,然而,目前compute服务并未使用此信息,所以,在不肯定的状况下能够将其指定为bare,而经常使用的格式主要有bare(没有container或元数据信息)、ovf、aki、ari或ami几种。linux
镜像元数据git
glance p_w_picpath-create或glance p_w_picpath-update命令的--property key=value参数可以为镜像文件附加元数据信息,而经常使用的属性主要有:github
architecture: hypervisor必须支持CPU架构,如x866_64、arm等数据库
hypervisor_type: hypervisor类型,其可以使用的值包括xen、qemu、kvm、lxc、uml、vmware、hyper-v及powervm;ubuntu
vm_mode:定义虚拟机模式,即应用于虚拟机的host/guest ABI;例如hvm,xen,uml,exe等vim
xenAPI还有其专用的两个属性能够定义:windows
autho_disk_config:布尔型属性值,true表示在虚拟机实例启动前磁盘的根分区将被自动调整;
os_type:p_w_picpath中安装的操做系统类型,如linux,windows等,xenAPI可以根据此属性值来执行不一样的操做,若是为windows则建立fat32格式的交换分区、限制其主机名称少于16个字符等。
Vmware的API也有以下三个专用属性能够定义:
vmware_adaptertype:定义hypervisor使用的虚拟scsi或IDE接口类型,其有效值为lsiLogic,busLogic及ide;
vmware_ostype:Vmware GuestID,用于描述映像文件中的操做系统类型:vmware所支持的类型较多,能够参照thinkvirt.com获取详细信息,默认值为otherGuest;
vmware_p_w_picpath_version:目前未使用,默认值为1;
1.3.5.获取虚拟机镜像
CirrOS(test)镜像
由Scott Moser维护的一系列用于测试目的的微型虚拟机映像,登陆名为cirros,下载地址为https://launchpad.net/cirros/+download。在qemu或kvm中测试时,官方建议使用qcow2格式的镜像文件。
Ubuntu镜像
Canonical官方提供了基于Ubuntu的系列镜像,登陆名为ubuntu,下载地址为http://uec-p_w_picpaths.ubuntu.com。 在QEMU或KVM中部署时,建议使用qcow2格式的镜像文件
Fedora镜像
Fedora官方提供了预制的Fedora JEOS映像,下载地址为http://berrange.fedorapeople.org/p_w_picpaths,目前最新的是为x86_64平台提供的QCOW2格式的映像.
OpenSUSE和SLES11镜像
经过SUSE Studio(http://susestudio.com)能够很方便的为OpenSUSE和SLES11构建与Openstack兼容的虚拟应用,好比建立一个OpenSUSE12.1的JEOS镜像
Rackspace云生成器镜像
Rackspace云生成器(https://github.com/rackerjoe/oz-p_w_picpath-build)提供了多种发行版预制的预制镜像,如RedHat,Centos,Fedora,Ubuntu等
1.3.6.制做镜像的专用工具
Oz(KVM):Oz是可以为常见Linux发行版建立映像文件的命令行工具,Rackspace就是使用Oz建立的镜像文件。在Fedora Project的wiki中,提供了使用Oz建立镜像文件的案例,具体请参照:
https://fedoraproject.org/wiki/Getting_started_with_Openstack_Nova#Building_an_Image_with_Oz
VMBuilder(KVM,Xen):VMBuilder可以为不一样的hypervisor建立虚拟机镜像文件,它是一个脚本,可以自动收集所需的资源为虚拟机建立镜像文件,Ubuntu为之提供了一个使用案例,具体请参照http://help.ubuntu.com/12.04/serverguide/jeos-and-vmbuilder.html
VeeWee(KVM):VeeWee一般用于建立Vagrant虚拟工做环境,一种基于Virtualbox,Vmware,AWS等虚拟化技术的虚拟化工具,VeeWee也能够用于建立KVM镜像
p_w_picpathfactory:Aeolus项目的一款工具,用于自动化建立,转换及为不一样的云服务商的镜像文件,支持openstack云
若要为openstack定制镜像,镜像文件要与Openstack兼容,须要顾及不少方面的因素。
1.3.7.支持元数据服务或配置驱动(config drive)
openstack支持的映像文件必须可以由openstack获取到其元数据信息,如ssh公钥以及用户在请求镜像文件时提交的用户数据等。这些元数据信息能够经过元数据服务或配置驱动获取,最简单的方式莫过于在映像文件中安装cloud-init程序。cloud-init用于为云实例提供配置及定制功能,项目地址为:http://launchpad.net/cloud-init。
1.3.8.支持对磁盘镜像大小进行调整
虚拟机镜像文件的磁盘大小有建立镜像时的初始大小决定,然而openstack须要在启动实例时经过指定不一样的flavor来使用不一样大小的磁盘空间。例如,有着磁盘初始大小为5G的镜像文件,在用于建立实例时使用了m1.small这个flavor,虚拟机实例将须要一个大小为10G磁盘,调整实例的磁盘大小是,经过在其尾部填0来完成。
镜像文件的分区大小也须要可以根据用户的须要在实例启动时进行调整,不然,在实例启动后,为了可以访问有flavor的配置指定的超出磁盘原始大小的其余空间就不得不手动去调整分区大小,所以在实例启动时,映像文件须要运行一个脚本以修改分区表,并运行相应的程序(如resize2fs等)调整文件系统,使得其可以适应新的分区大小。
Compute service overview 计算服务概述
OpenStack用于对主机的计算和管理云计算系统。OpenStack的计算是一个基础设施即服务(IaaS)系统的一个重要组成部分。主要模块是用python实现的。
OpenStack计算与OpenStack身份验证交互用来完成认证;OpenStack镜像服务用于磁盘和服务器镜像;用户和管理接口为OpenStack Dashboard。镜像访问受到项目和用户的限制,每一个项目的配额是有限的(例如,实例的数量)。OpenStack计算能够在标准硬件上水平缩放,并将镜像下载来启动实例。
OpenStack计算包括如下领域及其组件:
nova-api service:接受并响应终端用户计算API调用。服务支持OpenStack Compute API,亚马逊EC2 API,以及一些特权用户为了执行管理动做的特殊的 Admin API 。它强制执行一些策略并启动不少编排动做,例如运行实例。
nova-api-metadata service:接受来自实例的元数据请求。当您在多主机模式下运行nova-network安装时,一般使用它。
nova-compute service:经过hypervisor APIs来建立和终止虚拟机实例的后台工做守护程序。例如:
XenAPI for XenServer/XCP
libvirt for KVM or QEMU
VMwareAPI for VMware
处理至关复杂。基本上,守护进程接收来自队列的动做和执行一系列的系统命令,例如建立KVM实例并更新它的状态到数据库。
nova-placement-api service:跟踪每一个提供者的库及使用状况。
nova-scheduler service:从队列获取虚拟机实例请求并肯定它要在哪一个计算服务器主机运行。
nova-conductor module:位于nova-compute和数据库的中间层,用来避免nova-compute与数据库直接进行交互。不要将其部署到nova-compute service运行的节点上。
nova-consoleauth daemon:受权控制台代理提供的用户令牌。次服务必须运行,控制台代理服务才能工做。
nova-novncproxy daemon:经过一个VNC链接来提供一个代理访问运行中的实例。支持基于浏览器的novnc客户端。
nova-spicehtml5proxy daemon:经过一个SPICE链接来提供一个代理访问运行中的实例。支持基于浏览器的HTML5客户端。
nova-xvpvncproxy daemon:经过一个VNC链接来提供一个代理访问运行中的实例。支持OpenStack-specific Java客户端。
The queue
在各进程间传递消息的消息队列服务,一般使用RabbitMQ,也能够用其它的AMQP消息队列实现,如ZeroMQ
SQL database
存储云基础架构的构建时和运行时的状态。包含:
Available instance types
Instances in use
Available networks
Projects
在controller上安装计算服务nova
前提准备工做:
在安装nova以前,必须建立databases, service credentials, 和API endpoints.
一、使用root登录数据库
MariaDB [(none)]> CREATE DATABASE nova_api; MariaDB [(none)]> CREATE DATABASE nova; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> CREATE DATABASE nova_cell0; Query OK, 1 row affected (0.00 sec)
一、受权访问新建立的数据库。
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456'; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123.456'; Query OK, 0 rows affected (0.00 sec) Maria [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123.456'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123.456'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.00 sec)
[root@Controller /]# source admin-openrc
一、建立计算服务凭证
建立onva用户
[root@Controller /]# openstack user create --domain default --password-prompt nova
将nova用户加入到admin角色和service项目
[root@Controller ~]# openstack role add --project service --user nova admi
建立nova服务项目
[root@Controller ~]# openstack service create --name nova --description "OpenStack Compute" compute
一、建立计算服务service endpoints openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
一、建立Placement用户
[root@Controller ~]# openstack user create --domain default --password-prompt placement
一、添加Placement用户到admin角色
[root@Controller /]# openstack role add --project service --user placement admin
一、建立placement API服务项
[root@Controller /]# openstack service create --name placement --description "Placement API" placement
一、建立Placement API service endpoints:
[root@Controller /]# openstack endpoint create --region RegionOne placement public http://controller:8778
[root@Controller /]# openstack endpoint create --region RegionOne placement internal http://controller:8778
安装和配置nova
一、安装包
[root@Controller /]# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console oopenstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y
在[api_database]和[database]部分配置数据库链接
在[DEFAULT]部分配置到RabbitMQ消息队列的访问
transport_url = rabbit://openstack:123456@controller
在[api]和[keystone_authtoken]部分配置身份验证服务的访问
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123456
auth_strategy=keystone 去掉#号
my_ip = 10.0.0.11 添加
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
在[vnc]部分配置VNC代理,使用controller管理接口IP地址
[vnc]
enabled = true
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = 123456
为了解决包的bug,你必须将如下配置添加到/etc/httpd/conf.d/00-nova-placement-api.conf文件中,来激活Placement API的访问
vim /etc/httpd/conf.d/00-nova-placement-api.conf
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
从新启动httpd服务
[root@Controller /]# systemctl restart httpd
一、初始nova_api数据库
[root@Controller /]# su -s /bin/sh -c "nova-manage api_db sync" nova
一、建立cell
[root@Controller /]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
一、初始nova数据库
root@Controller /]# su -s /bin/sh -c "nova-manage db sync" nova
一、检查nova cell0和cell1是否正确注册
[root@Controller /]# nova-manage cell_v2 list_cells
[root@Controller /]# systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
[root@Controller /]# systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
在compute上安装nova
本节描述如何在计算节点上安装和配置计算服务。服务支持多种hypervisors部署实例或虚拟机(VM)。为简单起见,这个配置使用带KVM的QEMU扩展计算节点,须要硬件支持虚拟机的硬件加速。在传统的硬件,这样的配置使用通用的QEMU虚拟机管理程序。
安装和配置:
一、安装包
[root@compute/]# yum install openstack-nova-compute
一、编辑和配置/etc/nova/nova.conf完成如下设置
在[DEFAULT]部分激活仅compute和metadata APIs:
enabled_apis = osapi_compute,metadata
在[DEFAULT]部分配置到RabbitMQ消息队列的访问
在[api]和[keystone_authtoken]部分配置身份验证服务的访问
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
password = 123456
在[DEFAULT]部分配置my_ip选项,地址指向controller管理IP地址
my_ip = 10.0.0.31
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
完成安装
1、肯定计算节点是否支持虚拟机的硬件加速:
[root@Controller /]# egrep -c '(vmx|svm)' /proc/cpuinfo
若是返回的值为1或者更大,说明你的计算节点支持硬件加速,一般不须要额外配置,若是返回的值为0,说明你的计算节点不支持硬件加速,你必须将libvirt配置为QEMU,来替代默认的KVM。编辑/etc/nova/nova.conf文件:
virt_type=qemu 修改
二、启动计算服务,包括它的依赖项,并配置它们在系统启动时自动启动:
[root@Controller /]# systemctl enable libvirtd.service openstack-nova-compute.service [root@Controller /]# systemctl start libvirtd.service openstack-nova-compute.service
若是不能正常启动,通常是controller上的消息服务的5672端口被拒绝访问,配置防火墙容许便可。
添加计算节点到cell数据库
操做在controller节点上
一、提供admin管理凭证以便操做命令,而后确认数据库中有计算主机:
[root@Controller ~]# source admin-openrc [root@Controller ~]# openstack compute service list --service nova-compute
一、发现计算主机
[root@Controller /]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
当你添加新的计算节点,你必需要在控制节点上运行“nova-manage cell_v2 discover_hosts”命令来注册这些新的计算节点。或者,你能够在配置文件中设置一个适当的时间间隔:/etc/nova/nova.conf,默认是不自动发现,单位是秒。
[scheduler]
discover_hosts_in_cells_interval = 300
检查操做
检查计算服务的操做,在控制节点上执行如下命令:
一、执行admin命令行运行环境
[root@Controller ~]# source admin-openrc
一、列出服务组件,以验证成功启动和注册的每一个进程
[root@Controller ~]# openstack compute service list
其输处中有3个服务组件是激活在控制节点,一个服务组件是激活在计算节点
一、列出身份服务中的API endpoints,以验证与身份服务的连通性,显示结果和安装的组件有关。
[root@Controller ~]# openstack catalog list
一、列出镜像服务的列表,检查和镜像服务的连通性
[root@Controller ~]# openstack p_w_picpath list
一、检查cells和placement API是否成功工做
[root@Controller ~]# nova-status upgrade check
后期更新OpenStack网络neutron