OpenStack系列之一:手动部署OpenStack Queens(4.计算服务)


title: OpenStack系列之一:手动部署OpenStack Queens(4.计算服务)
categories: Linux
tags:
- OpenStack
timezone: Asia/Shanghai
date: 2019-01-21


计算服务概览

使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。

OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

OpenStack计算服务由下列组件所构成:

  • nova-api 服务

    接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。

  • nova-api-metadata 服务

    接受来自虚拟机发送的元数据请求。nova-api-metadata服务一般在安装nova-network服务的多主机模式下使用。更详细的信息,请参考OpenStack管理员手册中的链接Metadata service <http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service>__ in the OpenStack Administrator Guide。

  • nova-compute服务

    一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。例如:
    XenServer/XCP 的 XenAPI
    KVM 或 QEMU 的 libvirt
    VMware 的 VMwareAPI

过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。

  • nova-scheduler服务

    拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。

  • nova-conductor模块

    媒介作用于nova-compute服务与数据库之间。它排除了由nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute服务的主机节点上。参考Configuration Reference Guide http://docs.openstack.org/mitaka/config-reference/compute/conductor.html`__。

  • nova-cert模块

    服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。仅仅是在EC2 API的请求中使用

  • nova-network worker 守护进程

    nova-compute服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。

  • nova-consoleauth 守护进程

    授权控制台代理所提供的用户令牌。详情可查看nova-novncproxy和 nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。在集群配置中你可以运行二者中任一代理服务而非仅运行一个nova-consoleauth服务。更多关于nova-consoleauth的信息,请查看About nova-consoleauth <http://docs.openstack.org/admin-guide/compute-remote-console-access.html#about-nova-consoleauth>__。

  • nova-novncproxy 守护进程

    提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。

  • nova-spicehtml5proxy 守护进程

    提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。

  • nova-xvpvncproxy 守护进程

    提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。

  • nova-cert 守护进程

    X509 证书。

  • nova客户端

    用于用户作为租户管理员或最终用户来提交命令。

  • 队列

    一个在守护进程间传递消息的中央集线器。常见实现有RabbitMQ <http://www.rabbitmq.com/>__ , 以及如Zero MQ <http://www.zeromq.org/>__等AMQP消息队列。

  • SQL数据库

    存储构建时和运行时的状态,为云基础设施,包括有:
    可用实例类型
    使用中的实例
    可用网络
    项目

理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。

第一步:安装并配置控制节点(控制节点)

这个部分将描述如何在控制节点上安装和配置 Compute 服务,即 nova。

1.先决条件

在安装和配置 Compute 服务前,你必须创建数据库服务的凭据以及 API endpoints。

  • 1.为了创建数据库,必须完成这些步骤:

以下有6处xiaoliu,请根据实际情况更改

# 用数据库连接客户端以 root 用户连接到数据库服务器:
mysql -u root -p

# 2.创建 nova_api 和 nova 数据库:
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

# 3.对数据库进行正确的授权:

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'xiaoliu';
  • 2.获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
source /home/admin-openrc
echo $OS_USERNAME
  • 3.要创建服务证书,完成这些步骤:
# 1.创建 nova 用户:
openstack user create --domain default --password-prompt nova

# 2.给 nova 用户添加 admin 角色(这个命令执行后没有输出):
openstack role add --project service --user nova admin

# 3.创建 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服务用户PLACEMENT_PASS:
openstack user create --domain default --password-prompt placement
  • 6.使用admin角色将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
  • 9.以上命令输出展示
[root@controller html]# source /home/admin-openrc
[root@controller html]# echo $OS_USERNAME
admin
[root@controller html]# openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 08eb041c35cf45fb85d69ad8a256e054 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller html]# openstack role add --project service --user nova admin
[root@controller html]# openstack service create --name nova --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 20972a76b318429ea55e9e8b52a90632 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 938cac58c5ef433faf2da39e853e5e39 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 20972a76b318429ea55e9e8b52a90632 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 4f991b08697f41ba819f124e98bebd12 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 20972a76b318429ea55e9e8b52a90632 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | d15364459e214fc8bb199f388c857463 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 20972a76b318429ea55e9e8b52a90632 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller html]# openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | b6e431f29b8a4849a27d2651903cfde2 |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller html]# openstack role add --project service --user placement admin
[root@controller html]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | 617e334646ab4b099a2702b643d8c900 |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 541b4dbee64b4b948b84aaba21f70e1c |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 617e334646ab4b099a2702b643d8c900 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 604dd6ee7ef54e4e855d7d8688af0d18 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 617e334646ab4b099a2702b643d8c900 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller html]# openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 0bac998fd8ae45bb91787a08226883a5 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 617e334646ab4b099a2702b643d8c900 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

2.安全并配置组件

默认配置文件在各发行版本中可能不同。你可能需要添加这些部分,选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。

  • 1.安装软件包:
yum install -y openstack-nova-api openstack-nova-conductor \
                openstack-nova-console openstack-nova-novncproxy \
                openstack-nova-scheduler openstack-nova-placement-api
  • 2.编辑/etc/nova/nova.conf文件并完成下面的操作:

以下有4处xiaoliu,请根据自己实际情况更改

以下有一处IP地址为控制端IP地址,请根据自己实际情况更改

cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
cat /etc/nova/nova.conf.bak | grep -v "^#" | grep -v '^$' > /etc/nova/nova.conf
vim /etc/nova/nova.conf

# 1.在``[DEFAULT]``部分,只启用计算和元数据API:
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

# 2.在``[api_database]``和``[database]``部分,配置数据库的连接:
# 用你为 Compute 数据库选择的密码来代替 NOVA_DBPASS。
[api_database]
# ...
connection = mysql+pymysql://nova:xiaoliu@controller/nova_api

[database]
# ...
connection = mysql+pymysql://nova:xiaoliu@controller/nova

# 3.在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
# 用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
[DEFAULT]
# ...
transport_url = rabbit://openstack:xiaoliu@controller

# 4.在 “[api]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
# 使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。
[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = xiaoliu

# 5.在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
[DEFAULT]
...
my_ip = 10.0.1.61

# 6.在 [DEFAULT] 部分,使能 Networking 服务:
# 默认情况下,计算服务使用内置的防火墙服务。
# 由于网络服务包含了防火墙服务,
# 你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

# 7.在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :
[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip

# 8.在 [glance] 区域,配置镜像服务 API 的位置:
[glance]
# ...
api_servers = http://controller:9292

# 9.在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

# 10.在该[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:5000/v3
username = placement
password = xiaoliu

# 11.由于打包错误,您必须通过将以下配置添加到以下内容来启用对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>

# Restart the httpd service:
systemctl restart httpd
systemctl status 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
  • 8.以上命令输出展示
[root@controller html]# su -s /bin/sh -c "nova-manage api_db sync" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
  exception.NotSupportedWarning

[root@controller html]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
  exception.NotSupportedWarning

[root@controller html]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
  exception.NotSupportedWarning
48e8e55e-7b55-40f6-84bb-e1acc878140c

[root@controller html]# su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
  exception.NotSupportedWarning
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)

[root@controller html]# nova-manage cell_v2 list_cells
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
  exception.NotSupportedWarning
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
|  名称 |                 UUID                 |           Transport URL            |                    数据库连接                   |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 |               none:/               | mysql+pymysql://nova:****@controller/nova_cell0 |
| cell1 | 48e8e55e-7b55-40f6-84bb-e1acc878140c | rabbit://openstack:****@controller |    mysql+pymysql://nova:****@controller/nova    |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
  • 9.验证数据库是否写入成功
# 应该有110张表
mysql -uroot -p'xiaoliu' -D nova -se "show tables"
mysql -uroot -p'xiaoliu' -D nova -se "show tables" | wc -l

# 应该有32张表
mysql -uroot -p'xiaoliu' -D nova_api -se "show tables"
mysql -uroot -p'xiaoliu' -D nova_api -se "show tables" | wc -l

mysql -uroot -p'xiaoliu' -D nova_cell0 -se "show tables"
mysql -uroot -p'xiaoliu' -D nova_cell0 -se "show tables" | wc -l

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 stop 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

systemctl status openstack-nova-api.service \
                    openstack-nova-consoleauth.service openstack-nova-scheduler.service \
                    openstack-nova-conductor.service openstack-nova-novncproxy.service

第二步:安装和配置计算节点(计算节点)

该服务支持多个虚拟机管理程序来部署实例或虚拟机(VM)。为简单起见,此配置使用Quick EMUlator(QEMU)虚拟机管理程序和支持虚拟机硬件加速的计算节点上的基于内核的VM(KVM)扩展。在传统硬件上,此配置使用通用QEMU管理程序。您可以通过稍作修改来遵循这些说明,以使用其他计算节点水平扩展您的环境。

1.启用OpenStack库

在CentOS中, extras仓库提供用于启用 OpenStack 仓库的RPM包。 CentOS 默认启用extras仓库,因此你可以直接安装用于启用OpenStack仓库的包。

# 如果更新了一个新内核,重启主机来使用新内核。
yum repolist
yum install -y centos-release-openstack-queens
yum upgrade -y

2.安全并配置组件

  • 1.安装软件包:
yum install -y openstack-nova-compute
  • 2.编辑/etc/nova/nova.conf文件并完成下面的操作:

以下有两处xiaoliu, 请根据自己实际情况修改

以下有六处controller,请根据自己实际情况修改

cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
cat /etc/nova/nova.conf.bak | grep -v "^#" | grep -v '^$' > /etc/nova/nova.conf
vim /etc/nova/nova.conf

# 1.在该[DEFAULT]部分中,仅启用计算和元数据API:
# 在该[DEFAULT]部分中,配置RabbitMQ消息队列访问:
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:xiaoliu@controller

# 2.在[api]和[keystone_authtoken]部分中,配置身份服务访问:
# 注释掉或删除该[keystone_authtoken] 部分中的任何其他选项。
[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = xiaoliu

# 3.在该[DEFAULT]部分中,配置my_ip选项:
# 替换MANAGEMENT_INTERFACE_IP_ADDRESS为计算节点上管理网络接口的IP地址
[DEFAULT]
# ...
my_ip = 10.0.1.62

# 4.在该[DEFAULT]部分中,启用对网络服务的支持:
# 默认情况下,Compute使用内部防火墙服务。由于Networking包含防火墙服务
# 因此必须使用nova.virt.firewall.NoopFirewallDriver防火墙驱动程序禁用Compute防火墙服务。
[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

# 5.在该[vnc]部分中,启用并配置远程控制台访问:
# 如果要访问远程控制台的Web浏览器驻留在无法解析controller主机名的主机上
# 则必须controller使用控制器节点的管理接口IP地址替换 
[vnc]
# ...
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

# 6.在该[glance]部分中,配置Image服务API的位置:
[glance]
# ...
api_servers = http://controller:9292

# 7.在该[oslo_concurrency]部分中,配置锁定路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

# 8.在该[placement]部分中,配置Placement API:
# 注释掉该[placement]部分中的任何其他选项。
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = xiaoliu

3.完成安装

  • 1.确定您的计算节点是否支持虚拟机的硬件加速。
egrep -c '(vmx|svm)' /proc/cpuinfo

# 如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。
# 如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM
# 在 /etc/nova/nova.conf 文件的 [libvirt] 区域做出如下的编辑:
[libvirt]
...
virt_type = qemu
  • 2.启动计算服务及其依赖,并将其配置为随系统自动启动:
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl stop libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
systemctl status libvirtd.service openstack-nova-compute.service

第三步:将计算节点添加到单元数据库(控制节点)

# 获取管理员凭据以启用仅管理员CLI命令,然后确认数据库中是否存在计算主机:
source /home/admin-openrc
echo $OS_USERNAME
openstack compute service list --service nova-compute

# 发现计算主机:
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

# 输出结果展示:
[root@controller html]# source /home/admin-openrc

[root@controller html]# echo $OS_USERNAME
admin

[root@controller html]# openstack compute service list --service nova-compute
+----+--------------+----------+------+---------+-------+----------------------------+
| ID | Binary       | Host     | Zone | Status  | State | Updated At                 |
+----+--------------+----------+------+---------+-------+----------------------------+
|  6 | nova-compute | compute1 | nova | enabled | up    | 2019-01-20T13:58:26.000000 |
+----+--------------+----------+------+---------+-------+----------------------------+

[root@controller html]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
  exception.NotSupportedWarning
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': 48e8e55e-7b55-40f6-84bb-e1acc878140c
Checking host mapping for compute host 'compute1': a42100e8-83de-4500-b22a-831d3f6de399
Creating host mapping for compute host 'compute1': a42100e8-83de-4500-b22a-831d3f6de399
Found 1 unmapped computes in cell: 48e8e55e-7b55-40f6-84bb-e1acc878140c

注意:

添加新计算节点时,必须在控制器节点上运行以注册这些新计算节点。或者,您可以在以下位置设置适当的间隔

When you add new compute nodes, you must run nova-manage cell_v2 discover_hosts on the controller node to register those new compute nodes. Alternatively, you can set an appropriate interval in /etc/nova/nova.conf:

vim /etc/nova/nova.conf
[scheduler] 
discover_hosts_in_cells_interval  =  300

第四步:验证操作(在控制器节点上执行这些命令)

验证Compute服务的运行。

1.来源admin凭据来访问仅管理员CLI命令:

source /home/admin-openrc
echo $OS_USERNAME

2.列出服务组件以验证每个进程的成功启动和注册:

此输出应指示控制器节点上启用的三个服务组件以及计算节点上启用的一个服务组件。

openstack compute service list

[root@controller html]# openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| ID | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-consoleauth | controller | internal | enabled | up    | 2019-01-20T13:59:49.000000 |
|  2 | nova-conductor   | controller | internal | enabled | up    | 2019-01-20T13:59:49.000000 |
|  3 | nova-scheduler   | controller | internal | enabled | up    | 2019-01-20T13:59:49.000000 |
|  6 | nova-compute     | compute1   | nova     | enabled | up    | 2019-01-20T13:59:56.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+

3.列出Identity服务中的API端点以验证与Identity服务的连接:

端点列表可能会有所不同,具体取决于OpenStack组件的安装。

忽略此输出中的任何警告。

openstack catalog list

[root@controller html]# openstack catalog list
+-----------+-----------+-----------------------------------------+
| Name      | Type      | Endpoints                               |
+-----------+-----------+-----------------------------------------+
| keystone  | identity  | RegionOne                               |
|           |           |   admin: http://controller:5000/v3/     |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:5000/v3/  |
|           |           | RegionOne                               |
|           |           |   public: http://controller:5000/v3/    |
|           |           |                                         |
| nova      | compute   | RegionOne                               |
|           |           |   internal: http://controller:8774/v2.1 |
|           |           | RegionOne                               |
|           |           |   public: http://controller:8774/v2.1   |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:8774/v2.1    |
|           |           |                                         |
| glance    | image     | RegionOne                               |
|           |           |   internal: http://controller:9292      |
|           |           | RegionOne                               |
|           |           |   public: http://controller:9292        |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:9292         |
|           |           |                                         |
| placement | placement | RegionOne                               |
|           |           |   admin: http://controller:8778         |
|           |           | RegionOne                               |
|           |           |   public: http://controller:8778        |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:8778      |
|           |           |                                         |
+-----------+-----------+-----------------------------------------+

4.列出Image服务中的图像以验证与Image服务的连接:

openstack image list

[root@controller html]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 6cc21209-0d33-477c-a37e-eeed6b34f3ad | cirros | active |
+--------------------------------------+--------+--------+

5.检查单元格和放置API是否成功运行:

nova-status upgrade check

[root@controller ~]# nova-status upgrade check
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
  exception.NotSupportedWarning
Option "os_region_name" from group "placement" is deprecated. Use option "region-name" from group "placement".
+-------------------------------+
| 升级检查结果                  |
+-------------------------------+
| 检查: Cells v2                |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: Placement API           |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: Resource Providers      |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: Ironic Flavor Migration |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
| 检查: API Service Version     |
| 结果: 成功                    |
| 详情: None                    |
+-------------------------------+
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,306评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,657评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,928评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,688评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,105评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,024评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,159评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,937评论 0 212
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,689评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,851评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,325评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,651评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,364评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,192评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,985评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,154评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,955评论 2 279

推荐阅读更多精彩内容