1.1.1.1. Nova服务安装(Compute )
1.1.1.1.1. 计算服务概述
使用OpenStack Compute来托管和管理云计算系统。OpenStack Compute是基础架构即服务(IaaS)系统的主要部分。主要模块是用Python实现的。
OpenStack Compute与OpenStack Identity进行交互以进行身份验证; OpenStack镜像服务用于磁盘和服务器镜像; OpenStack仪表板用于用户和管理界面。镜像访问受到项目和用户的限制; 配额对于每个项目是有限的(例如数量)。OpenStack Compute可以在标准硬件上水平扩展,并下载镜像以启动实例。
OpenStack Compute由以下几个服务组成:
2 nova-api 服务
接受并回复最终用户的计算API调用。该服务支持OpenStack Compute API,Amazon EC2 API和特殊的Admin API,用于特权用户执行管理操作。它执行一些策略并启动大多数业务流程活动,例如运行一个实例。
2 nova-api-metadata 服务
接受来自实例的元数据请求。nova-api-metadata 当您在多主机模式下运行nova-network安装时,通常会使用该服务 。有关详细信息,请参阅 “OpenStack管理员指南”中的元数据服务。
2 nova-compute 服务
通过虚拟机管理程序API创建和终止虚拟机实例的工作程序守护程序。例如:
适用于XenServer / XCP的XenAPI
KVM或QEMU的libvirt
适用于VMware的VMwareAPI
处理相当复杂。基本上,守护程序接受队列中的操作,并执行一系列系统命令,例如启动KVM实例并更新数据库中的状态。
2 nova-placement-api 服务
跟踪每个提供商的库存和使用情况。有关详细信息,请参阅 Placement API。
2 nova-scheduler 服务
从队列获取虚拟机实例请求,并确定运行哪个计算服务器主机。
2 nova-conductor 模块
中介nova-compute服务和数据库之间的交互。它消除了对nova-compute服务器所做的云数据库的直接访问。该nova-conductor模块水平缩放。但是,请勿在nova-compute服务运行的节点上部署它 。有关详细信息,请参阅配置参考指南。
2 nova-cert 模块
服务器守护进程为Nova Cert服务提供X509证书。用于生成证书 euca-bundle-image。只需要EC2 API。
2 nova-consoleauth 守护进程
授权控制台代理提供的用户的令牌。参考 nova-novncproxy和nova-xvpvncproxy。此服务必须运行才能使控制台代理工作。您可以在集群配置中针对单个nova-consoleauth服务运行任一类型的代理。有关信息,请参阅关于nova-consoleauth。
2 nova-novncproxy 守护进程
提供通过VNC连接访问运行实例的代理。支持基于浏览器的novnc客户端。
2 nova-spicehtml5proxy 守护进程
提供通过SPICE连接访问运行实例的代理。支持基于浏览器的HTML5客户端。
2 nova-xvpvncproxy 守护进程
提供通过VNC连接访问运行实例的代理。支持OpenStack特定Java客户机。
2 队列
在守护进程之间传递消息的中心枢纽。通常用RabbitMQ实现,也可以用另一个AMQP消息队列来实现,如ZeroMQ。
2 SQL数据库
存储云基础设施的大部分构建时间和运行时状态,包括:
可用的实例类型
正在使用的实例
可用网络
项目
理论上,OpenStack Compute可以支持SQLAlchemy支持的任何数据库。公共数据库是用于测试和开发工作的SQLite3,MySQL,MariaDB和PostgreSQL。
1.1.1.1.2. 安装和配置控制器节点
本节介绍如何在控制器节点上安装和配置代号为Nova的Compute服务。
1.1.1.1.2.1. 先决条件
在安装和配置Compute服务之前,必须创建数据库,服务凭据和API端点。
1、要创建数据库,请完成以下步骤:
使用数据库访问客户端作为root用户连接到数据库服务器:
$ mysql -u root -p
创建nova_api,nova和nova_cell0数据库:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
授予对数据库的正确访问权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
更换NOVA_DBPASS一个合适的密码。
退出数据库访问客户端。
2、输入admin凭据以访问仅管理CLI命令:
$ . admin-openrc
3、创建计算服务凭据:
创建nova用户:
$ openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
将admin角色添加到nova用户:
$ openstack role add --project service --user nova admin
创建nova服务实体:
$ openstack service create --name nova \
--description "OpenStack Compute" compute
4、创建Compute API服务端点:
$ openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1
$ openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1
$ openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1
5、使用选择的PLACEMENT_PASS创建Placement 服务:
$ openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
6、将Placement用户添加到具有管理角色的服务项目中:
$ openstack role add --project service --user placement admin
7、在服务目录中创建Placement API条目:
$ openstack service create --name placement --description "Placement API" placement
8、创建Placement API服务端点:
$ openstack endpoint create --region RegionOne placement public http://controller:8778
$ openstack endpoint create --region RegionOne placement internal http://controller:8778
$ openstack endpoint create --region RegionOne placement admin http://controller:8778
1.1.1.1.2.2. 安装和配置组件
1、安装软件包:
# yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
2、编辑/etc/nova/nova.conf文件并完成以下操作:
在该[DEFAULT]部分中,仅启用计算和元数据API:
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
在[api_database]和[database]部分中配置数据库访问:
[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
替换NOVA_DBPASS为您选择的计算数据库的密码。
在本[DEFAULT]节中,配置RabbitMQ 消息队列访问:
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
替换RABBIT_PASS为您为该openstack帐户选择的密码 RabbitMQ。
在[api]和[keystone_authtoken]部分中,配置身份服务访问:
[api]
# ...
auth_strategy = keystone
[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 = NOVA_PASS
替换NOVA_PASS为nova身份服务中为用户选择的密码 。
在该[DEFAULT]部分中,配置该my_ip选项以使用控制器节点的管理接口IP地址:
[DEFAULT]
# ...
my_ip = 10.0.0.11
在本[DEFAULT]节中,启用对网络服务的支持:
[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
注意:默认情况下,Compute使用内部防火墙驱动程序。由于网络服务包含防火墙驱动程序,因此您必须使用nova.virt.firewall.NoopFirewallDriver防火墙驱动程序禁用Compute防火墙驱动 程序。
在本[vnc]节中,配置VNC代理以使用控制器节点的管理接口IP地址:
[vnc]
enabled = true
# ...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
在该[glance]部分中,配置Image Service API的位置:
[glance]
# ...
api_servers = http://controller:9292
在该[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
在本[placement]节中,配置Placement API:
[placement]
# ...
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 = PLACEMENT_PASS
替换PLACEMENT_PASS为placement身份服务中为用户选择的密码 。注释[placement]节中的任何其他选项。
启用对Placement API的访问,方法是将以下配置添加到 /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服务:
# systemctl restart httpd
3、填充nova-api数据库:
# su -s /bin/sh -c "nova-manage api_db sync" nova
4、注册cell0数据库:
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
5、创建cell1单元格:
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
6、导入新星数据库:
# su -s /bin/sh -c "nova-manage db sync" nova
7、验证nova cell0和cell1是否正确注册:
# nova-manage cell_v2 list_cells
1.1.1.1.2.3. 完成安装
启动Compute服务并将其配置为在系统启动时启动:
# systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
本文转自yuweibing51CTO博客,原文链接:http://blog.51cto.com/yuweibing/1981178 ,如需转载请自行联系原作者