目录

一、创建数据库

二、安装配置组件

三、安装配置组件(计算节点)

四、将计算节点添加到单元数据库(控制节点)

五、验证


一、创建数据库

以下操作在控制节点实施

1.创建数据库

①.授予访问权限

②.刷新数据库

[root@controller ~]# mysql -u root -p

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 '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY '123456';

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> quit
Bye

2.获取admin凭证以访问OpenStack cli

[root@controller ~]# . admin-openrc.sh

3.创建计算服务

①.创建用户nova,密码(123456)

②.将角色nova添加到用户admin

③.创建服务实体nova

[root@controller ~]# openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | baf8fc63f11849929044ee0196097ce0 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

[root@controller ~]# openstack role add --project service --user nova admin

[root@controller ~]# openstack service create --name nova \
--description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | b92181ba1d3c4fa7934c1e0a94570fc3 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

4.创建api服务终结点

[root@controller ~]# openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 51131f7419f64caab06c4355a67f0af3 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | b92181ba1d3c4fa7934c1e0a94570fc3 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 1d9b434da01b496aa4215a595552d363 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | b92181ba1d3c4fa7934c1e0a94570fc3 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 86932b2e443a497ea3cda1978e3f2883 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | b92181ba1d3c4fa7934c1e0a94570fc3 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+

二、安装配置组件

1.安装软件包

[root@controller ~]# yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler -y

2.编辑配置文件

①./etc/nova/nova.conf

#备份配置文件并删除其中的空余部分
[root@controller ~]# cd /etc/nova/ && cp nova.conf nova.conf.source && cat nova.conf.source | grep -Ev "^#|^$" > nova.conf

[root@controller nova]# vim nova.conf

#启用计算和元数据API、配置消息队列访问、配置管理接口IP地址、启用对网络服务的支持
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123456@controller:5672/
my_ip = 10.0.0.20
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

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

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

#配置标识服务访问
[api]
auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 123456

#配置vnc接口的地址
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

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

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

#配置对放置服务的访问权限(配置密码:123456)
[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 = 123456

3.填充数据库

①.填充数据库nova-api

②.注册数据库cell0

③.创建单元格cell1

④.填充nova数据库

⑤.验证 nova cell0 和 cell1

[root@controller ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
8b9f801a-9115-4b82-aa54-7f6ac661c833
[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
|  Name |                 UUID                 |              Transport URL               |               Database Connection               | Disabled |
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 |                  none:/                  | mysql+pymysql://nova:****@controller/nova_cell0 |  False   |
| cell1 | 8b9f801a-9115-4b82-aa54-7f6ac661c833 | rabbit://openstack:****@controller:5672/ |    mysql+pymysql://nova:****@controller/nova    |  False   |
+-------+--------------------------------------+------------------------------------------+-------------------------------------------------+----------+

4.启动计算服务并将其配置自启动

查看服务状态是否启动成功

[root@controller ~]# systemctl enable \
openstack-nova-api.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-api.service to /usr/lib/systemd/system/openstack-nova-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-scheduler.service to /usr/lib/systemd/system/openstack-nova-scheduler.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-conductor.service to /usr/lib/systemd/system/openstack-nova-conductor.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-novncproxy.service to /usr/lib/systemd/system/openstack-nova-novncproxy.service.

[root@controller ~]# systemctl start \
openstack-nova-api.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

[root@controller ~]# systemctl status \
openstack-nova-api.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service

三、安装配置组件(计算节点)

1.配置OpenStack yum源文件

[root@computer ~]# cat >>/etc/yum.repos.d/openstack.repo<<EOF
[openstack-train]
name=openstack-train
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-train/
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
gpgcheck=1
EOF

2.安装软件包

[root@computer ~]# yum install openstack-nova-compute -y

3.编辑配置文件

①.备份配置文件并删除其中的空余部分

②.编辑配置文件/etc/nova/nova.conf

[root@computer ~]# cd /etc/nova/ && cp nova.conf nova.conf.source && cat nova.conf.source | grep -Ev "^#|^$" > nova.conf
[root@computer nova]# vim nova.conf

#启用计算和元数据API(配置密码"123456")、配置IP地址、启用对网络服务的支持
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123456@controller
my_ip = 10.0.0.10


#配置标识服务访问
[api]
auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 123456

#启用配置远程控制台vnc访问
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

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

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

#配置放置 API:[placement]
[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 = 123456

4.确定计算节点是否支持虚拟机的硬件加速

[root@computer ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
4

5.启动计算服务

[root@computer ~]# systemctl start libvirtd.service openstack-nova-compute.service
[root@computer ~]# 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.

四、将计算节点添加到单元数据库(控制节点)

1.获取admin凭据以访问OpenStack cli

[root@controller ~]# . admin-openrc.sh

2.然后确认数据库中存在计算主机

[root@controller ~]# openstack compute service list --service nova-compute
+----+--------------+----------+------+---------+-------+----------------------------+
| ID | Binary       | Host     | Zone | Status  | State | Updated At                 |
+----+--------------+----------+------+---------+-------+----------------------------+
| 16 | nova-compute | computer | nova | enabled | up    | 2022-07-21T17:50:08.000000 |
+----+--------------+----------+------+---------+-------+----------------------------+

3.发现计算主机

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': 8b9f801a-9115-4b82-aa54-7f6ac661c833
Checking host mapping for compute host 'computer': 6b733901-e714-453c-880d-d578b0452c9a
Creating host mapping for compute host 'computer': 6b733901-e714-453c-880d-d578b0452c9a
Found 1 unmapped computes in cell: 8b9f801a-9115-4b82-aa54-7f6ac661c833

五、验证

以下操作在控制节点实施

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

[root@controller ~]# openstack compute service list
+----+----------------+------------+----------+---------+-------+----------------------------+
| ID | Binary         | Host       | Zone     | Status  | State | Updated At                 |
+----+----------------+------------+----------+---------+-------+----------------------------+
|  8 | nova-conductor | controller | internal | enabled | up    | 2022-07-21T17:52:18.000000 |
| 13 | nova-scheduler | controller | internal | enabled | up    | 2022-07-21T17:52:14.000000 |
| 16 | nova-compute   | computer   | nova     | enabled | up    | 2022-07-21T17:52:18.000000 |
+----+----------------+------------+----------+---------+-------+----------------------------+

2.列出身份服务中的 API 终端节点以验证与身份服务的连接

[root@controller ~]# openstack catalog list
+-----------+-----------+-----------------------------------------+
| Name      | Type      | Endpoints                               |
+-----------+-----------+-----------------------------------------+
| placement | placement | RegionOne                               |
|           |           |   internal: http://controller:8778      |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:8778         |
|           |           | RegionOne                               |
|           |           |   public: http://controller:8778        |
|           |           |                                         |
| 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                               |
|           |           |   public: http://controller:9292        |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:9292         |
|           |           | RegionOne                               |
|           |           |   internal: http://controller:9292      |
|           |           |                                         |
| keystone  | identity  | RegionOne                               |
|           |           |   internal: http://controller:5000/v3/  |
|           |           | RegionOne                               |
|           |           |   admin: http://controller:5000/v3/     |
|           |           | RegionOne                               |
|           |           |   public: http://controller:5000/v3/    |
|           |           |                                         |
+-----------+-----------+-----------------------------------------+

3.列出影像服务中的影像以验证与影像服务的连接

[root@controller ~]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| e82bb244-644a-4d9c-8739-053f55328634 | cirros | active |
+--------------------------------------+--------+--------+

4.检查单元和放置 API 是否正常工作

[root@controller ~]# nova-status upgrade check
+--------------------------------+
| Upgrade Check Results          |
+--------------------------------+
| Check: Cells v2                |
| Result: Success                |
| Details: None                  |
+--------------------------------+
| Check: Placement API           |
| Result: Success                |
| Details: None                  |
+--------------------------------+
| Check: Ironic Flavor Migration |
| Result: Success                |
| Details: None                  |
+--------------------------------+
| Check: Cinder API              |
| Result: Success                |
| Details: None                  |
+--------------------------------+