OpenStack Mitaka 部署实战:镜像服务与计算服务配置指南

目录

配置镜像服务

[1. 创建数据库、服务凭证和API端点](#1. 创建数据库、服务凭证和API端点)

[2. 创建服务证书](#2. 创建服务证书)

[3. 安装并配置glance组件](#3. 安装并配置glance组件)

[4. 上传镜像到镜像服务](#4. 上传镜像到镜像服务)

配置计算服务

[1. 创建数据库服务的凭据以及 API endpoints](#1. 创建数据库服务的凭据以及 API endpoints)

[2. 在控制节点安装并配置nova组件](#2. 在控制节点安装并配置nova组件)

[3. 在计算节点配置nova组件](#3. 在计算节点配置nova组件)

总结与验证

[1. 配置关键步骤回顾](#1. 配置关键步骤回顾)

[2. 验证服务是否正常运行](#2. 验证服务是否正常运行)


配置镜像服务

镜像服务(Glance)是 OpenStack 中负责镜像注册、存储与分发的核心组件 。它对外提供统一的镜像管理 API,使计算服务(Nova)在创建虚拟机实例时能够按需获取对应的系统镜像。本节将按照从数据库准备、服务凭证创建、组件安装到镜像上传的完整流程,逐步完成镜像服务的配置。

1. 创建数据库、服务凭证和API端点

在安装镜像服务之前,需要先在数据库中为 Glance 创建独立的数据库和专用账号,并授予相应的访问权限。这样既能保证数据隔离,也便于后续通过统一的数据库连接串进行管理。下面在控制节点的 MariaDB 中执行创建操作。

cpp 复制代码
[root@controller ~]# mysql -p001003
MariaDB [(none)]>  CREATE DATABASE glance;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
    ->   IDENTIFIED BY 'glance';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'    IDENTIFIED BY 'glance';
Query OK, 0 rows affected (0.01 sec)

代码说明: 首先使用 mysql -p001003 登录控制节点的 MariaDB 数据库。接着执行 CREATE DATABASE glance; 创建名为 glance 的镜像服务数据库。随后通过两条 GRANT ALL PRIVILEGES 语句,分别允许 glance 用户从本机(localhost)和任意主机(%)使用密码 glance 访问 glance 数据库,并授予全部权限,为后续 Glance 组件读写镜像元数据做好准备。

2. 创建服务证书

镜像服务需要与 Keystone 身份认证服务进行对接,因此必须先在 Keystone 中创建对应的用户、服务实体和 API 端点。这些凭证将用于 Glance 与其它 OpenStack 组件之间的相互认证与调用。下面按步骤依次完成创建。

2.1 创建 glance 用户

cpp 复制代码
[root@controller ~]# source admin-openrc
[root@controller ~]# openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | 30e46230611e4fb7b152e1adf37f3200 |
| enabled   | True                             |
| id        | 07a1e52a29f44fe69dcb2e192cb6493a |
| name      | glance                           |
+-----------+----------------------------------+

代码说明: 先执行 source admin-openrc 加载管理员环境变量,使后续命令具备 Keystone 管理权限。然后使用 openstack user create 创建 glance 用户,其中 --domain default 指定用户属于默认域,--password-prompt 表示交互式输入密码。命令执行成功后,返回的用户信息表中可以看到 glance 用户的 id、名称和启用状态。

2.2 添加 admin 角色到 glance 用户和 service 项目上

cpp 复制代码
[root@controller ~]# openstack role add --project service --user glance admin

代码说明: 该命令将 admin 角色添加到 glance 用户和 service 项目上。--project service 指定服务项目,--user glance 指定目标用户,admin 是要授予的角色。这样 glance 用户就拥有了在 service 项目中执行管理操作的权限,能够正常访问 Keystone 中的服务目录。

2.3 创建"glance"服务实体

cpp 复制代码
[root@controller ~]# openstack service create --name glance \
  --description "OpenStack Image" image
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Image                  |
| enabled     | True                             |
| id          | cd07e6b10ce145c492de5f4e5a434a71 |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+

代码说明: 该命令在 Keystone 中注册 glance 服务实体。--name glance 指定服务名称为 glance,--description "OpenStack Image" 添加服务描述,最后的 image 是服务类型。创建成功后,返回信息中的 type 为 image,表示这是一个镜像服务,后续创建 API 端点时需要引用该服务的 id。

2.4 创建镜像服务的 API 端点

cpp 复制代码
[root@controller ~]# openstack endpoint create --region RegionOne \
  image public http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | a24d1a34f5004185a8e51628484fae74 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | cd07e6b10ce145c492de5f4e5a434a71 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+

代码说明: 该命令为 glance 服务创建 public(公共)类型的 API 端点。--region RegionOne 指定区域,image 是服务类型,public 表示端点类型,最后的 URL 是镜像服务的访问地址。创建成功后,外部用户即可通过 http://controller:9292 访问 Glance 的公共 API。

cpp 复制代码
[root@controller ~]# openstack endpoint create --region RegionOne \
  image internal http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | dff2fb2c0349468e81fea37bd0f442c4 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | cd07e6b10ce145c492de5f4e5a434a71 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+
cpp 复制代码
[root@controller ~]# openstack endpoint create --region RegionOne \
  image admin http://cont oller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | f694822bfa354a95ab37567e1f44413a |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | cd07e6b10ce145c492de5f4e5a434a71 |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+

3. 安装并配置glance组件

完成数据库和服务凭证的准备工作后,接下来在控制节点安装 Glance 组件,并修改其配置文件,使其能够正确连接数据库、对接 Keystone 认证服务,并指定镜像文件的本地存储路径。下面先安装软件包,再编辑两个核心配置文件。

cpp 复制代码
[root@controller ~]# yum install openstack-glance
[root@controller ~]# vim /etc/glance/glance-api.conf
[database]
connection = mysql+pymysql://glance:glance@controller/glance
[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 = glance
password = glance
[paste_deploy]
flavor = keystone
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
cpp 复制代码
[root@controller ~]# vim /etc/glance/glance-registry.conf
[database]
connection = mysql+pymysql://glance:glance@controller/glance
[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 = glance
password = glance
[paste_deploy]
flavor = keystone

写入镜像服务数据库

cpp 复制代码
[root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
Option "verbose" from group "DEFAULT" is deprecated for removal.  Its value may be silently ignored in the future.
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1056: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade
  expire_on_commit=expire_on_commit, _conf=conf)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `ix_image_properties_image_id_name`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)

启动镜像服务、配置

cpp 复制代码
[root@controller ~]# systemctl enable openstack-glance-api.service \
  openstack-glance-registry.service
[root@controller ~]# systemctl start openstack-glance-api.service \
  openstack-glance-registry.service

4. 上传镜像到镜像服务

镜像服务配置完成后,即可通过命令行将系统镜像上传到 Glance 中。上传成功后,镜像会进入 active 状态,可供后续创建虚拟机实例时直接使用。下面以 CirrOS 测试镜像为例,演示上传和查看镜像列表的操作。

cpp 复制代码
[root@controller ~]# openstack image create "cirros" \
> --file cirros-0.6.0-x86_64-disk.img \
> --disk-format qcow2 --container-format bare \
> --public
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | f4027b89e99e238184e13089a3155b74                     |
| container_format | bare                                                 |
| created_at       | 2026-08-25T05:47:29Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/d3dff337-1999-4c58-b07d-c899afb415c5/file |
| id               | d3dff337-1999-4c58-b07d-c899afb415c5                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | cirros                                               |
| owner            | ec476ad6630045538f632b5b8c3f39fc                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 21149184                                             |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2026-08-25T05:47:29Z                                 |
| virtual_size     | None                                                 |
| visibility       | public                                               |
+------------------+------------------------------------------------------+
[root@controller ~]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| d3dff337-1999-4c58-b07d-c899afb415c5 | cirros | active |
+--------------------------------------+--------+--------+

配置计算服务

计算服务(Nova)是 OpenStack 中负责虚拟机实例生命周期管理的核心组件 ,涵盖实例的创建、调度、启动、停止与销毁等操作。它通过与镜像服务(Glance)、身份认证服务(Keystone)以及消息队列(RabbitMQ)协同工作,为上层提供弹性可扩展的计算能力。本节将按照从数据库准备、服务凭证创建、控制节点安装配置到计算节点安装配置的完整流程,逐步完成计算服务的部署。

首先需要部署一个节点作为计算节点,和配置控制节点的方法一致,必须配置好时间同步,解析,open stack包等等。从控制节点将mitaka目录同步到计算节点。

cpp 复制代码
[root@controller ~]# ls
admin-openrc  anaconda-ks.cfg  cirros-0.6.0-x86_64-disk.img  demo-openrc  mitaka  mitaka.tar
[root@controller ~]# scp -r mitaka/ compute1:/opt/

1. 创建数据库服务的凭据以及 API endpoints

与镜像服务类似,计算服务也需要在数据库中创建独立的数据库和专用账号,并在 Keystone 中注册对应的用户、服务实体和 API 端点。这些准备工作是 Nova 各组件之间以及 Nova 与其它 OpenStack 服务之间正常通信的基础。下面先在控制节点的 MariaDB 中创建数据库和授权账号。

cpp 复制代码
[root@controller ~]# mysql -p001003
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' 
->   IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%'    IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost'
->   IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'
->   IDENTIFIED BY 'nova';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> ^DBye

代码说明: 首先使用 mysql -p001003 登录控制节点的 MariaDB 数据库。接着执行 CREATE DATABASE nova_api;CREATE DATABASE nova; 分别创建 Nova 的 API 数据库和主数据库。随后通过四条 GRANT ALL PRIVILEGES 语句,分别允许 nova 用户从本机(localhost)和任意主机(%)使用密码 nova 访问 nova_api 和 nova 两个数据库,并授予全部权限,为后续 Nova 各组件的读写操作做好准备。

cpp 复制代码
[root@controller ~]# source admin-openrc
[root@controller ~]# openstack user create --domain default \
>   --password nova nova
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | 30e46230611e4fb7b152e1adf37f3200 |
| enabled   | True                             |
| id        | 8437c1d2c14d4ffd8cb3be480a8c0738 |
| name      | nova                             |
+-----------+----------------------------------+
[root@controller ~]# openstack role add --project service --user nova admin

代码说明: 先执行 source admin-openrc 加载管理员环境变量,使后续命令具备 Keystone 管理权限。然后使用 openstack user create 创建 nova 用户,其中 --domain default 指定用户属于默认域,--password nova 直接指定密码为 nova。命令执行成功后,返回的用户信息表中可以看到 nova 用户的 id、名称和启用状态。最后通过 openstack role add 将 admin 角色添加到 nova 用户和 service 项目上,使 nova 用户拥有在 service 项目中执行管理操作的权限。

cpp 复制代码
[root@controller ~]# openstack service create --name nova \
>   --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | aec887d5874f4cf6a59dbd80f6b52030 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

代码说明: 该命令在 Keystone 中注册 nova 服务实体。--name nova 指定服务名称为 nova,--description "OpenStack Compute" 添加服务描述,最后的 compute 是服务类型。创建成功后,返回信息中的 type 为 compute,表示这是一个计算服务,后续创建 API 端点时需要引用该服务的 id。

cpp 复制代码
[root@controller ~]# openstack endpoint create --region RegionOne \
>   compute public http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | e04a408b66614004956812f8c5e66954          |
| interface    | public                                    |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | aec887d5874f4cf6a59dbd80f6b52030          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne \
>   compute internal http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | a1ec7d856f6a45bc867eab08aea07e01          |
| interface    | internal                                  |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | aec887d5874f4cf6a59dbd80f6b52030          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne \
>   compute admin http://controller:8774/v2.1/%\(tenant_id\)s
+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 004204dc72e749eba11f9b808ec5d641          |
| interface    | admin                                     |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | aec887d5874f4cf6a59dbd80f6b52030          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1/%(tenant_id)s |
+--------------+-------------------------------------------+

代码说明: 这三条命令分别为 nova 服务创建 public(公共)、internal(内部)和 admin(管理)三种类型的 API 端点。--region RegionOne 指定区域,compute 是服务类型,最后的 URL 是计算服务的访问地址,其中 %(tenant_id)s 是项目 ID 的占位符,会在实际请求时被替换。创建成功后,不同网络环境下的用户即可通过对应的端点地址访问 Nova 的计算 API。

2. 在控制节点安装并配置nova组件

完成数据库和服务凭证的准备工作后,接下来在控制节点安装 Nova 的核心服务组件,包括 API 服务、调度器、控制台服务和消息代理等。安装完成后,需要编辑 nova.conf 配置文件,使其能够正确连接数据库、对接 Keystone 认证服务、使用 RabbitMQ 消息队列,并指定与镜像服务的对接地址。下面先安装软件包,再修改配置文件。

cpp 复制代码
[root@controller ~]# yum install openstack-nova-api openstack-nova-conductor \
>   openstack-nova-console openstack-nova-novncproxy \
>   openstack-nova-scheduler -y
[root@controller ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_aipis = osapi_compute,metadata
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.223.161
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api
[database]
connection = mysql+pymysql://nova:nova@controller/nova
[glance]
api_servers = http://controller:9292
[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
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

代码说明: 首先使用 yum install 安装 Nova 的核心服务组件,包括 API 服务(nova-api)、调度器(nova-scheduler)、控制台服务(nova-console、nova-novncproxy)和数据库同步工具(nova-conductor)。安装完成后,编辑 /etc/nova/nova.conf 配置文件:[DEFAULT] 段设置消息队列后端为 rabbit、认证策略为 keystone,并指定本机 IP;[api_database][database] 段分别配置 API 数据库和主数据库的连接串;[glance] 段指定镜像服务的地址;[keystone_authtoken] 段配置 Keystone 认证信息;[oslo_messaging_rabbit] 段设置 RabbitMQ 的连接参数;[vnc] 段配置 VNC 远程控制台服务。

cpp 复制代码
[root@controller ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova
/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)
cpp 复制代码
[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

3. 在计算节点配置nova组件

控制节点上的 Nova 服务配置完成后,还需要在计算节点上安装并配置 nova-compute 组件。计算节点是实际承载虚拟机运行的物理主机,nova-compute 负责与底层的虚拟化技术(如 KVM)交互,执行实例的创建和运行。下面在计算节点上安装软件包并编辑对应的 nova.conf 配置文件。

首先使用 yum install openstack-nova-compute -y 安装计算节点所需的 nova-compute 软件包。

安装完成后,编辑 /etc/nova/nova.conf 配置文件:[DEFAULT] 段设置消息队列后端为 rabbit、认证策略为 keystone,并指定本机 IP 为 192.168.223.162;[oslo_messaging_rabbit] 段配置 RabbitMQ 的连接参数,使计算节点能够与控制节点上的消息队列通信;[keystone_authtoken] 段配置 Keystone 认证信息,用于计算节点向身份认证服务验证身份;[vnc] 段启用 VNC 远程控制台,并指定代理客户端地址和访问入口;[oslo_concurrency] 段设置锁文件路径;[glance] 段指定镜像服务的地址,使计算节点能够从 Glance 获取系统镜像。

cpp 复制代码
[root@computer1 ~]# yum install openstack-nova-compute -y
[root@computer1 ~]# vim /etc/nova/nova.conf
[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.223.162
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
[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
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[glance]
api_servers = http://controller:9292

配置文件修改完成后,还需要检查 CPU 是否支持硬件虚拟化。执行 egrep -c '(vmx|svm)' /proc/cpuinfo,返回结果为 2,说明当前 CPU 支持虚拟化扩展(vmx 为 Intel 虚拟化技术,svm 为 AMD 虚拟化技术),可以正常使用 KVM 运行虚拟机。

随后通过 systemctl enablesystemctl start 启用并启动 libvirtd 和 openstack-nova-compute 服务,使 nova-compute 组件随系统开机自启并立即运行。

cpp 复制代码
[root@computer1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
2
[root@computer1 ~]# systemctl enable libvirtd.service openstack-nova-compute.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-compute.service to /usr/lib/systemd/system/openstack-nova-compute.service.
[root@computer1 ~]#  systemctl start libvirtd.service openstack-nova-compute.service

最后,回到控制节点执行 source admin-openrc 加载管理员环境变量,再运行 openstack compute service list 查看计算服务的运行状态。

从返回结果可以看到,nova-consoleauth、nova-conductor、nova-scheduler 运行在 controller 节点上,nova-compute 运行在 computer1 节点上,且所有服务的 Status 均为 enabled、State 均为 up,说明计算服务已成功部署并正常运行。

cpp 复制代码
[root@controller ~]# source admin-openrc
[root@controller ~]# openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-consoleauth | controller | internal | enabled | up    | 2026-08-25T06:47:50.000000 |
|  2 | nova-conductor   | controller | internal | enabled | up    | 2026-08-25T06:47:51.000000 |
|  4 | nova-scheduler   | controller | internal | enabled | up    | 2026-08-25T06:47:51.000000 |
|  7 | nova-compute     | computer1  | nova     | enabled | up    | 2026-08-25T06:47:58.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+

总结与验证

至此,镜像服务和计算服务的配置已全部完成。下面先回顾两个服务配置的关键步骤,再给出验证服务是否正常运行的方法。

1. 配置关键步骤回顾

**镜像服务(Glance)**的配置主要分为四步:首先在 MariaDB 中创建 glance 数据库和专用账号并授权;然后在 Keystone 中创建 glance 用户、服务实体和 API 端点;接着安装 openstack-glance 软件包,编辑 glance-api.conf 和 glance-registry.conf 配置文件,使其能够连接数据库、对接 Keystone 认证服务并指定镜像存储路径,最后执行数据库同步并启动服务;最后通过 openstack image create 命令将系统镜像上传到 Glance。

**计算服务(Nova)**的配置同样分为四步:先在 MariaDB 中创建 nova_api 和 nova 两个数据库及专用账号并授权;然后在 Keystone 中创建 nova 用户、服务实体和 API 端点;接着在控制节点安装 nova-api、nova-scheduler、nova-conductor 等核心组件,编辑 nova.conf 配置文件并同步数据库、启动服务;最后在计算节点安装 nova-compute 组件,编辑 nova.conf 配置文件,检查 CPU 虚拟化支持并启动 libvirtd 和 nova-compute 服务。

2. 验证服务是否正常运行

配置完成后,可以通过以下命令验证各服务是否正常运行。首先执行 source admin-openrc 加载管理员环境变量,然后依次执行以下命令检查服务状态。

cpp 复制代码
[root@controller ~]# source admin-openrc
[root@controller ~]# openstack service list
+----------------------------------+-----------+---------+
| ID                               | Name      | Type    |
+----------------------------------+-----------+---------+
| cd07e6b10ce145c492de5f4e5a434a71 | glance    | image   |
| aec887d5874f4cf6a59dbd80f6b52030 | nova      | compute |
+----------------------------------+-----------+---------+

执行 openstack service list 可以查看当前 Keystone 中注册的所有服务。如果列表中能看到 glance(类型为 image)和 nova(类型为 compute),说明两个服务的服务实体已正确注册。

cpp 复制代码
[root@controller ~]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| d3dff337-1999-4c58-b07d-c899afb415c5 | cirros | active |
+--------------------------------------+--------+--------+

执行 openstack image list 可以查看镜像服务中已上传的镜像。如果能看到 cirros 镜像且 Status 为 active,说明镜像服务运行正常,镜像已成功上传并可供使用。

cpp 复制代码
[root@controller ~]# openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-consoleauth | controller | internal | enabled | up    | 2026-08-25T06:47:50.000000 |
|  2 | nova-conductor   | controller | internal | enabled | up    | 2026-08-25T06:47:51.000000 |
|  4 | nova-scheduler   | controller | internal | enabled | up    | 2026-08-25T06:47:51.000000 |
|  7 | nova-compute     | computer1  | nova     | enabled | up    | 2026-08-25T06:47:58.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+

执行 openstack compute service list 可以查看计算服务各组件的运行状态。如果所有服务的 Status 均为 enabled、State 均为 up,说明 Nova 各组件运行正常。其中 nova-compute 运行在 computer1 节点上,说明计算节点已成功接入。

此外,还可以通过 systemctl status 命令检查各服务的系统服务状态,例如 systemctl status openstack-glance-api.servicesystemctl status openstack-nova-compute.service。如果服务状态显示为 active (running),说明服务进程正常运行。通过以上验证方法,可以确认镜像服务和计算服务均已正确配置并正常运行。

相关推荐
NJCloud3 小时前
Openstack(一)——基础环境配置与依赖服务安装
linux·架构·openstack
一路向北finish4 小时前
《Hadoop 高可用集群与 OpenStack Mitaka 控制节点部署全流程实操排坑指南》
大数据·linux·运维·服务器·hadoop·openstack
小张同学a.6 小时前
OpenStack 私有云实战 2—— Glance 镜像与 Nova 计算服务搭建
linux·运维·服务器·openstack
coco--hui4 天前
cloud computing-openstack简介
openstack
AAA@峥25 天前
OpenStack Keystone 认证服务完整学习指南
服务器·云计算·openstack
AAA@峥1 个月前
CentOS Stream8 基于 Packstack 搭建 OpenStack 云平台全流程实战
linux·centos·openstack
EXIORAN1 个月前
OpenStack 单元测试工作流程详解:tox + testr
openstack·unittesting·tox·testr
i2英方软件1 个月前
OpenNebula 与 OpenStack:您应该选择哪一个?
openstack·opennebula·开源私有云对比
胖兔纸21 个月前
OpenStack 1.7.2 & Ceph 9.2.1 运维命令
运维·ceph·openstack