3.4 控制节点部署Nova

系列 - OpenStack云平台部署
摘要
本文档将指导你在 OpenStack 控制节点上部署和配置 Nova 计算服务。Nova 是 OpenStack 的核心组件之一,负责管理和调度虚拟机实例的生命周期。我们将完成数据库配置、服务凭证创建、核心组件安装及数据库同步等关键步骤。

bBv2Z9

Nova 主要由以下几个核心组件构成:

  • nova-api:接收并响应外部计算 API 的请求。
  • nova-scheduler:决定将虚拟机实例分配到哪个计算节点上运行。
  • nova-conductor:充当 nova-compute 与数据库之间的中间层,提高系统安全性。
  • nova-novncproxy:提供通过 Web 浏览器访问虚拟机控制台的功能。
  • placement-api:负责跟踪和管理资源(如 CPU、内存、存储)的使用情况。

在安装配置 Nova 前,我们需要先为它创建相应的数据库。Nova 及相关服务共需要使用四个数据库:nova_apinovanova_cell0placement。创建完毕后,还需为这些数据库分配相应的访问权限。

  1. root 用户身份连接到数据库服务器。连接时请使用你在环境准备阶段安装 MariaDB 时设置的密码(默认密码是 admin123):

bash

mysql -uroot -p

iNd4u7

  1. 创建以下四个数据库:

sql

create database nova_api;
create database nova;
create database nova_cell0;
create database placement;

AXDA2w

  1. 创建 novaplacement 两个数据库用户,并为它们授予对应数据库的所有权限。你可以参考下表了解用户与数据库的对应关系:
用户名 密码 允许访问的数据库
nova nova nova_api, nova, nova_cell0
placement placement placement

sql

grant all privileges on nova_api.* to 'nova'@'%' identified by 'nova';
grant all privileges on nova.* to 'nova'@'%' identified by 'nova';
grant all privileges on nova_cell0.* to 'nova'@'%' identified by 'nova';
grant all privileges on placement.* to 'placement'@'%' identified by 'placement';

Srg2XN

  1. 完成数据库的创建和授权后,退出数据库命令行:

sql

exit
提示
在执行以下 OpenStack 命令行操作前,必须先加载管理员的凭证文件,以便获取执行命令所需的权限。
  1. 运行 admin-openstack.sh 脚本,获取管理员命令行执行权限:

bash

source admin-openstack.sh
  1. default 域内创建名为 nova 的用户,并按照提示将密码设置为 nova

bash

openstack user create nova --domain default --password-prompt 

DJRgp7

验证:你可以使用以下命令查看 default 域内的所有用户,确认 nova 用户是否创建成功。

xcCioK

  1. nova 用户赋予 service 项目的 admin(管理员)权限:

bash

openstack role add admin --project service --user nova
  1. 创建 nova 的计算服务(compute service)实体:

bash

openstack service create compute --name nova --description "OpenStack Compute"

WRXNvG

验证:你可以查看所有的服务列表,确认 nova 服务是否创建成功。

Pl8GN3

  1. 为计算服务创建 API 端点。端点分为公共(public)、内部(internal)和管理(admin)三种类型,分别用于不同场景的访问。

公共端点

bash

openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

isOoSV

内部端点

bash

openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1

EIESDN

管理端点

bash

openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

kcyk6V

验证:查看计算服务的端点是否创建成功。

gnkGvT

  1. 创建 placement 用户,并按照提示将密码设置为 placement

bash

openstack user create placement --domain default --password-prompt

jBxZP9

  1. placement 用户加入到 service 项目,并设置 admin 权限:

bash

openstack role add admin --project service --user placement 
  1. 在服务目录中创建 placement 的 API 实体:

bash

openstack service create placement --name placement --description "Placement API" 

0UwizG

  1. placement 服务创建对应的 API 端点:

公共端点

bash

openstack endpoint create --region RegionOne placement public http://controller:8778

daBnkB

内部端点

bash

openstack endpoint create --region RegionOne placement internal http://controller:8778

VdIGTs

管理端点

bash

openstack endpoint create --region RegionOne placement admin http://controller:8778

cvdGPx

验证:你可以使用以下命令查看 placement 服务的端点信息。

bash

openstack endpoint list --service placement

0qEWOt

  1. 安装 Nova 及 Placement 相关的软件包:

bash

yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
  1. 编辑 /etc/nova/nova.conf 配置文件。请根据以下内容修改或添加配置:
注意
请谨慎修改配置文件,确保每一项都在正确的配置块(例如 [DEFAULT][api_database])下。

conf

# 仅启用计算和元数据 API
[DEFAULT]
enabled_apis = osapi_compute,metadata

conf

# 配置数据库访问
[api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api

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

[placement_database]
connection = mysql+pymysql://placement:placement@controller/placement

conf

# 配置 RabbitMQ 消息队列访问
[DEFAULT]
transport_url = rabbit://openstack:openstack@controller

conf

# 配置身份服务访问
[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 = nova

conf

# 配置 IP 地址
[DEFAULT]
my_ip = 192.168.30.100 # 请将其替换为你自己控制节点的 IP 地址

# 启用对网络服务的支持
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

# 配置 VNC 代理以使用控制器节点的管理接口 IP 地址
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

# 配置 Image 服务 API 的位置
[glance]
api_servers = http://controller:9292

# 配置锁定路径
[oslo_concurrency]
lock_path = /var/lib/nova/tmp

# 配置 Placement API
[placement]
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 = placement
  1. 由于某些软件包存在的 Bug,我们需要将以下配置追加到 /etc/httpd/conf.d/00-nova-placement-api.conf 文件的末尾,以允许对 Placement API 的正常访问:

conf

<Directory /usr/bin>
	<IfVersion >= 2.4>
		Require all granted
	</IfVersion>
	<IfVersion < 2.4>
		Order allow,deny
		Allow from all
	</IfVersion>
</Directory>
  1. 重启 httpd 服务,使刚才的配置生效:
信息

使用 systemctl 命令管理服务:

  • start 启动
  • enable 开机自动启动
  • restart 重启
  • status 查看状态

自己写出命令

  1. 同步 nova-apiplacement 数据库:

bash

su -s /bin/sh -c "nova-manage api_db sync" nova
  1. 注册 cell0 数据库:

bash

su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
  1. 创建 cell1 单元:

bash

su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
  1. 同步 nova 数据库:

bash

su -s /bin/sh -c "nova-manage db sync" nova
  1. 验证 novacell0cell1 是否已成功注册:

bash

su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

bJMVh5

  1. 检查各数据库下是否能正常显示数据表,以验证数据库同步是否正确。
技巧
你可以使用 Navicat 等数据库可视化工具连接到数据库,查看 novanova_apinova_cell0placement 数据库中是否已经自动生成了相应的数据表。
  1. 启动 Nova 相关的五个核心服务:

bash

systemctl start \
openstack-nova-api.service \
openstack-nova-consoleauth \
openstack-nova-scheduler \
openstack-nova-conductor \
openstack-nova-novncproxy
  1. 将这些服务设置为随系统开机自动启动:

bash

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

N2Leom

  1. 最后,检查这些服务的运行状态,确保它们都已正常启动:

bash

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

Zxk5Fk

登录 http://192.168.192.205:3050,进入“自助服务——Web SSH”功能模块,连接服务器后执行“3.4 控制节点部署Nova”脚本

oedpkR

5MoOin