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
|