6-OpenStack计算服务nova
1. Nova简介
Nova 是 openstack 中最早出现的模块之一 , 主要是为openstack提供计算服务。在openstack中 , Nova又分为计算节点和控制节点。我们把安装有nova-compute的节点称为计算节点 , 其他的节点称为控制节点。nova的计算节点只负责创建虚拟机 , 而nova的控制节点负责控制。
Nova 主要有以下服务
API负责接收和响应外部请求 , 支持openstack api、EC2(亚马逊云)API等。Cert 负责进行身份认证。
·
Scheduler用于云主机调度。Conductor用于计算节点访问数据。Consoleauth用于控制台的授权验证。NovncproxyVNC代理。
2. Nova 系统架构
Nova 由多个服务器进程构成 , 每个进程执行不同的功能 , 下面介绍各个组件的功能。

nova-api: 接收rest消息 , 包括HTTP请求 , 服务间通信。nova-schedule: 选择合适的主机。nova-conductor: 数据库操作和复杂流程控制。nova-compute: 虚拟机生命周期管理和资源管理 , 负责处理虚机和hypervisor间的通信。db:sql: 数据库存储nova相关的业务数据。
3. Nova 组件详解
3.1 Nova-API

Nova API提供的功能 :
对外提供
REST接口 , 接收和处理请求。对传入的参数进行合法性校验和约束限制。
对请求的资源进行配额的校验和预留。
资源的创建 , 更新 , 删除查询等。
虚拟机生命周期管理的入口。
3.2 Nova-Conductor

Nova-Conductor功能 :
数据库操作 , 解耦其他组件(
Nova-Compute)数据库访问。Nova复杂流程控制 , 如创建 , 冷迁移 , 热迁移 , 虚拟机规格调整 , 虚拟机重建。其他组件的依赖 , 如
nova-compute需要nova-conductor启动成功后才能启动。其他组件的心跳定时写入。
引入nova-conductor的好处
安全性上考虑。之前每个
nova-compute都是直接访问数据库的。如果由于某种原因 , 某个计算节点被攻陷了 , 那攻击者就可以获取访问数据库的全部权限 , 肆意操作数据库。方便升级。将数据库和
nova-compute解耦 , 如果数据库的模式改变 ,nova compute就不用升级了。性能上考虑。之前数据库的访问在
nova-compute中直接访问且数据库访问是阻塞性的 , 由于nova-compute只有一个os线程 , 所以当一个绿色线程去访问数据库的时候会阻塞其他绿色线程 , 导致绿色线程无法并发。但是nova-conductor是通过rpc调用 ,rpc调用是绿色线程友好的 , 一个rpc call的执行返回前不会阻塞其他绿色线程的执行。这样就会提高了操作的并发。
3.3 Nova-Scheduler
Scheduler 用于决定那台计算节点承载计算实例的 nova 调度器。Nova-Scheduler 功能 :
筛选和确定将虚拟机实例分配到哪一台物理机。
分配过程主要分两步 , 过滤和权重;通过过滤器选择满足条件的计算节点 , 通过权重选择最优的节点。

调度器的类型
随机调度器 : 从所有正常运行
nova-compute服务的节点中随机选择。缓存调度器 : 是随机调度器的一种特殊类型 , 在随机调度器的基础上 , 将主机资源信息缓存在本地内存中 , 然后通过后台的定时任务 , 定时从数据库中获取最新的主机资源信息 , 周期性同步而不是实时获取主机资源信息。
过滤器调度器 : 根据指定的过滤条件以及权重选择最佳的计算节点 , 又称为筛选器。
调度器的调度过程
Nova Scheduler 的调度过程如下图所示 :

从上图可以看出 , Nova Scheduler的调度过程分为两个步骤 , 即过滤和权值计算。所谓过滤就是根据虚拟机资源配置情况和各个主机的实际情况 , 过滤掉一些不符合条件的主机。在进行过滤后 , Nova Scheduler会对剩余的主机进行权重计算 , 最终选择最优的物理机进行调度。
3.4 Nova-Compute
Nova-Compute 框架
ManagerDriver
Driver对接不同的虚拟化平台
KVMVMwareXenLXCQEMU…

Nova-Compute功能
虚拟机各生命周期操作的真正执行者(会调用对应的
hypervisor的driver)。底层对接不同虚拟化的平台(
KVM/VMware/XEN/Ironic等)内置周期性任务,完成资源刷新,虚拟机状态同步等功能。
资源管理模块(
resource_tracker)配合插件机制,完成资源的统计。
4. Nova 安装
4.1 控制节点配置
4.1.1 环境准备
创建
nova_api、nova、nova_cell0数据库 ,[root@node02 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 324 Server version: 10.5.22-MariaDB MariaDB Server Copyright (c) 2000, 2018, 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.001 sec) MariaDB [(none)]> CREATE DATABASE nova; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> CREATE DATABASE nova_cell0; Query OK, 1 row affected (0.001 sec) 对数据库授权
[root@node02 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 325 Server version: 10.5.22-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova123'; Query OK, 0 rows affected (0.013 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova123'; Query OK, 0 rows affected (0.004 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova123'; Query OK, 0 rows affected (0.005 sec) 用其他主机使用
nova用户连接mariadb,看看是否能够正常连接?是否能够看到nova_api,nova,nova_cell0这三个库[root@node01 ~]# mysql -unova -pnova123 -hnode02; Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 327 Server version: 10.5.22-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | nova | | nova_api | | nova_cell0 | +--------------------+ 4 rows in set (0.002 sec)创建
compute服务认证创建
nova服务用户 ,设置其密码为nova[root@node01 ~]# openstack user create --domain default --password-prompt nova User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 1ebd8cb4b9f74118b199623cd733a831 | | name | nova | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+将
nova用户授权为admin角色,并指明是一个service项目[root@node01 ~]# openstack role add --project service --user nova admin创建
nova服务,并将其类型设置为compute[root@node01 ~]# openstack service create --name nova \ --description "OpenStack Compute" compute +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Compute | | enabled | True | | id | c1887005bba9424ca1a28a063aeed2e7 | | name | nova | | type | compute | +-------------+----------------------------------+创建
compute API endport(服务端点,注册服务)创建公共端点
[root@node01 ~]# openstack endpoint create --region RegionOne compute public http://openstack-vip.net:8774/v2.1 +--------------+------------------------------------+ | Field | Value | +--------------+------------------------------------+ | enabled | True | | id | dc53d259577147ba811ff9f95d0cd943 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | c1887005bba9424ca1a28a063aeed2e7 | | service_name | nova | | service_type | compute | | url | http://openstack-vip.net:8774/v2.1 | +--------------+------------------------------------+创建私有端点
[root@node01 ~]# openstack endpoint create --region RegionOne compute internal http://openstack-vip.net:8774/v2.1 +--------------+------------------------------------+ | Field | Value | +--------------+------------------------------------+ | enabled | True | | id | 93f4d8cf312c4a608bd26b72e9a9c759 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | c1887005bba9424ca1a28a063aeed2e7 | | service_name | nova | | service_type | compute | | url | http://openstack-vip.net:8774/v2.1 | +--------------+------------------------------------+ 管理端点
[root@node01 ~]# openstack endpoint create --region RegionOne compute admin http://openstack-vip.net:8774/v2.1 +--------------+------------------------------------+ | Field | Value | +--------------+------------------------------------+ | enabled | True | | id | 5a1047ab5de742a1b122874445aa8b69 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | c1887005bba9424ca1a28a063aeed2e7 | | service_name | nova | | service_type | compute | | url | http://openstack-vip.net:8774/v2.1 | +--------------+------------------------------------+
4.1.2 安装配置组件
安装软件包
[root@node01 ~]# dnf install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler编辑配置
/etc/nova/nova.conf文件,在
[DEFAULT]配置段配置 ,仅启用compute和metadata API[DEFAULT] # ... enabled_apis = osapi_compute,metadata在
[api_database]和[database]部分,配置数据库访问:[api_database] # ... connection = mysql+pymysql://nova:nova123@openstack-vip.net/nova_api [database] # ... connection = mysql+pymysql://nova:nova123@openstack-vip.net/nova在
[DEFAULT]部分,配置RabbitMQ消息队列访问:[DEFAULT] # ... transport_url = rabbit://openstack:openstack123@openstack-vip.net:5672/在
[api]和[keystone_authtoken]部分,配置身份服务访问:[api] # ... auth_strategy = keystone [keystone_authtoken] # ... www_authenticate_uri = http://openstack-vip.net:5000/ auth_url = http://openstack-vip.net:5000/ memcached_servers = openstack-vip.net:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = nova在
[service_user]部分,配置服务用户令牌, 这个是wallaby版本之后新加的部分:[service_user] send_service_user_token = true auth_url = http://openstack-vip.net/identity auth_strategy = keystone auth_type = password project_domain_name = Default project_name = service user_domain_name = Default username = nova password = nova这里官方给的
auth_url时https, 这里需要ssl证书,默认安装的时候没有监控443端口。所以这里直接使用http://openstack-vip.net/identity。这里是Bobcat版本开始是这个url, 另外可以使用auth_url为http://openstack-vip.net:5000/v3在
[DEFAULT]部分,配置my_ip选项以使用控制节点的管理接口IP地址:[DEFAULT] # ... my_ip = 192.168.71.11在
[vnc]部分,配置VNC代理以使用控制节点的管理接口IP地址:[vnc] enabled = true # ... server_listen = $my_ip server_proxyclient_address = $my_ip在
[glance]部分,配置镜像服务API的位置:[glance] # ... api_servers = http://openstack-vip.net:9292在
[oslo_concurrency]部分,配置lock路径:[oslo_concurrency] # ... lock_path = /var/lib/nova/tmp在
[placement]部分,配置对Placement服务的访问:[placement] # ... region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://openstack-vip.net:5000/v3 username = placement password = placement填充
nova-api数据库:[root@node01 ~]# su -s /bin/sh -c "nova-manage api_db sync" nova注册
cell0数据库:[root@node01 ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova创建
cell1单元[root@node01 ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova填充
Nova数据库:[root@node01 ~]# su -s /bin/sh -c "nova-manage db sync" nova验证
nova cell0和cell1是否注册正确[root@node01 ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code. +-------+--------------------------------------+-------------------------------------------------+--------------------------------------------------------+----------+ | Name | UUID | Transport URL | Database Connection | Disabled | +-------+--------------------------------------+-------------------------------------------------+--------------------------------------------------------+----------+ | cell0 | 00000000-0000-0000-0000-000000000000 | none:/ | mysql+pymysql://nova:****@openstack-vip.net/nova_cell0 | False | | cell1 | 617af809-ffb0-42d1-9085-511fb45c4719 | rabbit://openstack:****@openstack-vip.net:5672/ | mysql+pymysql://nova:****@openstack-vip.net/nova | False | +-------+--------------------------------------+-------------------------------------------------+--------------------------------------------------------+----------+启动服务
[root@node01 ~]# systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service --now调整
haproxy节点的haproxy配置文件listen openstack_nova_port bind 192.168.71.250:8774 mode tcp log global server 192.168.71.11 192.168.71.11:8774 check inter 3000 fall 3 rise 5 listen openstack_nova_port_8775 bind 192.168.71.250:8775 mode tcp log global server 192.168.71.11 192.168.71.11:8775 check inter 3000 fall 3 rise 5 listen openstack_nova_vnc_port bind 192.168.71.250:6080 mode tcp log global server 192.168.71.11 192.168.71.11:6080 check inter 3000 fall 3 rise 5 listen openstack_nova_identity_port bind 192.168.71.250:80 mode tcp log global server 192.168.71.11 192.168.71.11:80 check inter 3000 fall 3 rise 5查看
nova数据库中是否有表生成[root@node02 ~]# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 6751 Server version: 10.5.22-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> use nova; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [nova]> show tables; +--------------------------------------------+ | Tables_in_nova | +--------------------------------------------+ | agent_builds | | aggregate_hosts | | aggregate_metadata | | aggregates | | alembic_version | | allocations | | block_device_mapping | | bw_usage_cache | | cells | | certificates | | compute_nodes | | console_auth_tokens | | console_pools | | consoles | | dns_domains | | fixed_ips | | floating_ips | | instance_actions | | instance_actions_events | | instance_extra | | instance_faults | | instance_group_member | | instance_group_policy | | instance_groups | | instance_id_mappings | | instance_info_caches | | instance_metadata | | instance_system_metadata | | instance_type_extra_specs | | instance_type_projects | | instance_types | | instances | | inventories | | key_pairs | | migrations | | networks | | pci_devices | | project_user_quotas | | provider_fw_rules | | quota_classes | | quota_usages | | quotas | | reservations | | resource_provider_aggregates | | resource_providers | | s3_images | | security_group_default_rules | | security_group_instance_association | | security_group_rules | | security_groups | | services | | shadow_agent_builds | | shadow_aggregate_hosts | | shadow_aggregate_metadata | | shadow_aggregates | | shadow_alembic_version | | shadow_block_device_mapping | | shadow_bw_usage_cache | | shadow_cells | | shadow_certificates | | shadow_compute_nodes | | shadow_console_pools | | shadow_consoles | | shadow_dns_domains | | shadow_fixed_ips | | shadow_floating_ips | | shadow_instance_actions | | shadow_instance_actions_events | | shadow_instance_extra | | shadow_instance_faults | | shadow_instance_group_member | | shadow_instance_group_policy | | shadow_instance_groups | | shadow_instance_id_mappings | | shadow_instance_info_caches | | shadow_instance_metadata | | shadow_instance_system_metadata | | shadow_instance_type_extra_specs | | shadow_instance_type_projects | | shadow_instance_types | | shadow_instances | | shadow_key_pairs | | shadow_migrations | | shadow_networks | | shadow_pci_devices | | shadow_project_user_quotas | | shadow_provider_fw_rules | | shadow_quota_classes | | shadow_quota_usages | | shadow_quotas | | shadow_reservations | | shadow_s3_images | | shadow_security_group_default_rules | | shadow_security_group_instance_association | | shadow_security_group_rules | | shadow_security_groups | | shadow_services | | shadow_snapshot_id_mappings | | shadow_snapshots | | shadow_task_log | | shadow_virtual_interfaces | | shadow_volume_id_mappings | | shadow_volume_usage_cache | | snapshot_id_mappings | | snapshots | | tags | | task_log | | virtual_interfaces | | volume_id_mappings | | volume_usage_cache | +--------------------------------------------+ 110 rows in set (0.001 sec)可以看到
nova数据库中生成了很多张表,说明初始nova数据库没有问题;检测端口:
6080是nova-novncproxy服务所监听的端口;8774和8775是nova-api所监听的端口;
到此nova服务在控制节点上就安装配置完毕
4.2 计算节点配置
安装组件包
yum install openstack-nova-compute这里需要注意,官网给出的命令是上面这种, 但是实验之后发现, 安装过程中缺少
libvirt软件包需要额外运行以下命令
dnf install libvirt qemu-kvm编辑
/etc/nova/nova.conf文件并完成以下操作在
[DEFAULT]部分,仅启用compute和metadata API:[DEFAULT] # ... enabled_apis = osapi_compute,metadata在
[DEFAULT]部分,配置RabbitMQ消息队列访问:[DEFAULT] # ... transport_url = rabbit://openstack:openstack123@openstack-vip.net在
[api]和[keystone_authtoken]部分,配置身份服务访问:[api] # ... auth_strategy = keystone [keystone_authtoken] # ... www_authenticate_uri = http://openstack-vip.net:5000/ auth_url = http://openstack-vip.net:5000/ memcached_servers = openstack-vip.net:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = nova在
[service_user]部分,配置服务用户令牌:[service_user] send_service_user_token = true auth_url = http://openstack-vip.net/identity auth_strategy = keystone auth_type = password project_domain_name = Default project_name = service user_domain_name = Default username = nova password = nova在
[DEFAULT]部分,配置my_ip选项:[DEFAULT] # ... my_ip = 192.168.71.30在
[vnc]部分,启用并配置远程控制台访问:[vnc] # ... enabled = true server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://openstack-vip.net:6080/vnc_auto.html服务器组件监听所有
IP地址,而代理组件仅监听计算节点的管理接口 IP 地址。基础 URL 指示您可以使用 Web 浏览器访问此计算节点上实例的远程控制台的位置。在
[glance]部分,配置镜像服务 API 的位置:[glance] # ... api_servers = http://openstack-vip.net:9292在
[oslo_concurrency]部分,配置lock路径:[oslo_concurrency] # ... lock_path = /var/lib/nova/tmp在
[placement]部分,配置Placement API:[placement] # ... region_name = RegionOne project_domain_name = Default project_name = service auth_type = password user_domain_name = Default auth_url = http://openstack-vip.net:5000/v3 username = placement password = placement确定您的计算节点是否支持虚拟机的硬件加速:
[root@node03 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo 40如果这个命令返回的值是一或更大,您的计算节点支持硬件加速,通常不需要额外的配置。
如果这个命令返回的值是零,您的计算节点不支持硬件加速,您必须配置
libvirt使用QEMU而不是KVM。编辑
/etc/nova/nova.conf文件中的[libvirt]部分如下:[libvirt] # ... virt_type = qemu
开启对应服务
[root@node03 ~]# systemctl enable libvirtd.service openstack-nova-compute.service [root@node03 ~]# systemctl start libvirtd.service openstack-nova-compute.service开启服务之后,会有如下报错提示
Sep 20 09:39:33 node03 nova-compute[41489]: 2024-09-20 09:39:33.453 41489 ERROR nova.virt.driver [None req-45e42af7-ef51-431b-9780-c9c798d78840 - - - - - -] Compute driver option required, but not specified这里修改
/etc/nova/nova.conf, 开启driver驱动[DEFAULT] compute_driver=libvirt.LibvirtDriver开启服务过程中提示报错
Sep 20 09:42:54 node03 nova-compute[41986]: 2024-09-20 09:42:54.063 41986 ERROR oslo_service.service nova.exception.InvalidNodeConfiguration: Invalid node identity configuration: Unable to write uuid to /usr/lib/python3.9/site-packages/compute_id: [Errno 13] Permission denied: '/usr/lib/python3.9/site-packages/compute_id'需要创建对应文件解决这个问题
[root@node03 ~]# chown nova:nova /usr/lib/python3.9/site-packages/compute_id [root@node03 ~]# chmod u+w /usr/lib/python3.9/site-packages/compute_id [root@node03 ~]# uuidgen > /usr/lib/python3.9/site-packages/compute_id另外开启过程中, 还有如下报错
Sep 20 09:56:01 node03 nova-compute[46672]: 2024-09-20 09:56:01.840 46672 ERROR nova.compute.manager FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/python3.9/site-packages/instances'解决这个问题可以使用以下命令, 在
OpenStack Nova中,/usr/lib/python3.9/site-packages/compute_id目录包含的是与计算节点标识相关的文件。从2023.1版本开始,Nova要求计算节点在其生命周期内保持一个恒定且一致的身份标识。这通常是通过在磁盘上持久化一个包含节点唯一标识符的文件来实现的。这个文件是在nova-compute服务首次启动时自动生成并写入磁盘的,之后会一直使用这个UUID作为其稳定的身份标识。[root@node03 ~]# touch /usr/lib/python3.9/site-packages/instances处理这三个问题之后直接启动对应服务即可
只不过上面两个文件问题是一个参数导致的, 直接通过修改
/etc/nova/nova.conf参数[DEFAULT] ... state_path = /var/lib/nova #默认为这个目录这里如果这个
compute_id文件丢失, 可以通过数据库重新获取该节点的uuidMariaDB [nova]> SELECT uuid FROM nova.compute_nodes WHERE hypervisor_hostname = 'node03'\G; *************************** 1. row *************************** uuid: 4eac8f84-fd92-4451-a7e9-d36070ffdb3a 1 row in set (0.001 sec)将计算节点添加到单元数据库
[root@node01 ~]# openstack compute service list --service nova-compute +--------------------------------------+--------------+--------+------+---------+-------+----------------------------+ | ID | Binary | Host | Zone | Status | State | Updated At | +--------------------------------------+--------------+--------+------+---------+-------+----------------------------+ | 24d26380-78ae-4825-a9ec-b1efa39593d8 | nova-compute | node03 | nova | enabled | up | 2024-09-20T01:59:48.000000 | +--------------------------------------+--------------+--------+------+---------+-------+----------------------------+手动扫描发现计算节点
[root@node01 ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova设置自动发现计算节点,并自动完成计算节点注册的间隔时间
[scheduler] discover_hosts_in_cells_interval = 300当你添加新的计算节点时, 你必须在控制节点上运行
nova-manage cell_v2 discover_hosts来注册这些新的计算节点。你可以在/etc/nova/nova.conf中设置适当的间隔这个配置要在控制节点的
nova.conf中配置,上述配置表示每隔300秒自动扫描一下有没有新的计算节点加入;到此,计算节点上的
nova服务就安装配置完成了在控制节点导出
admin用户的环境变量,列出服务组件,验证每个流程的成功启动和注册[root@node01 ~]# openstack compute service list +--------------------------------------+----------------+--------+----------+---------+-------+----------------------------+ | ID | Binary | Host | Zone | Status | State | Updated At | +--------------------------------------+----------------+--------+----------+---------+-------+----------------------------+ | 89a07788-8508-4888-85d3-8a2fc9cc24a5 | nova-conductor | node01 | internal | enabled | up | 2024-09-20T02:28:53.000000 | | 47c9381b-7833-47d6-b71a-3ec8401e282f | nova-scheduler | node01 | internal | enabled | up | 2024-09-20T02:28:53.000000 | | 24d26380-78ae-4825-a9ec-b1efa39593d8 | nova-compute | node03 | nova | enabled | up | 2024-09-20T02:28:48.000000 | +--------------------------------------+----------------+--------+----------+---------+-------+----------------------------+能够看到
controller节点上启用的两个服务组件和compute节点上启用的一个服务组件。能够看到上述信息,表示nova服务工作正常;验证:列出通过
keystone验证的API端点[root@node01 ~]# openstack catalog list +-----------+-----------+------------------------------------------------+ | Name | Type | Endpoints | +-----------+-----------+------------------------------------------------+ | glance | image | RegionOne | | | | public: http://openstack-vip.net:9292 | | | | RegionOne | | | | admin: http://openstack-vip.net:9292 | | | | RegionOne | | | | internal: http://openstack-vip.net:9292 | | | | | | keystone | identity | RegionOne | | | | internal: http://openstack-vip.net:5000/v3/ | | | | RegionOne | | | | public: http://openstack-vip.net:5000/v3/ | | | | RegionOne | | | | admin: http://openstack-vip.net:5000/v3/ | | | | | | nova | compute | RegionOne | | | | admin: http://openstack-vip.net:8774/v2.1 | | | | RegionOne | | | | internal: http://openstack-vip.net:8774/v2.1 | | | | RegionOne | | | | public: http://openstack-vip.net:8774/v2.1 | | | | | | placement | placement | RegionOne | | | | admin: http://openstack-vip.net:8778 | | | | RegionOne | | | | internal: http://openstack-vip.net:8778 | | | | RegionOne | | | | public: http://openstack-vip.net:8778 | | | | | +-----------+-----------+------------------------------------------------+验证:检查
cell和placement是否工作正常[root@node01 ~]# nova-status upgrade check Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code. +-------------------------------------------+ | Upgrade Check Results | +-------------------------------------------+ | Check: Cells v2 | | Result: Success | | Details: None | +-------------------------------------------+ | Check: Placement API | | Result: Success | | Details: None | +-------------------------------------------+ | Check: Cinder API | | Result: Success | | Details: None | +-------------------------------------------+ | Check: Policy File JSON to YAML Migration | | Result: Success | | Details: None | +-------------------------------------------+ | Check: Older than N-1 computes | | Result: Success | | Details: None | +-------------------------------------------+ | Check: hw_machine_type unset | | Result: Success | | Details: None | +-------------------------------------------+ | Check: Service User Token Configuration | | Result: Success | | Details: None | +-------------------------------------------+这个检查必须要全部都是成功的才没有问题;到此
nova服务的安装配置和测试就完了;后续我们还差一个neutron网络服务,就可以在openstack上启动虚拟机了;[root@node01 ~]# openstack hypervisor list +--------------------------------------+---------------------+-----------------+---------------+-------+ | ID | Hypervisor Hostname | Hypervisor Type | Host IP | State | +--------------------------------------+---------------------+-----------------+---------------+-------+ | 4eac8f84-fd92-4451-a7e9-d36070ffdb3a | node03 | QEMU | 192.168.71.30 | up | +--------------------------------------+---------------------+-----------------+---------------+-------+
参考链接
玩转企业云计算平台系列(五) : Openstack 计算服务 Nova (qq.com)