OpenStack Queen 版的安装与配置(四)|核心组件:nova

OpenStack Queen 版的安装与配置(四)|核心组件:nova
OpenStack Queen 版的安装与配置(四)|核心组件:nova
OpenStack Queen 版的安装与配置(四)|核心组件:nova
OpenStack Queen 版的安装与配置(四)|核心组件:nova
OpenStack Queen 版的安装与配置(四)|核心组件:nova



安装配置 controller node

创建 nova 数据库

mysql -u root -p
#创建nova_api, nova和 nova_cell0数据库
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 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' 
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' 
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' 
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' 
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' 
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> exit
Bye

服务注册授权

创建 nova 账号-认证

[root@controller ~]# openstack user create --domain default --password NOVA_PASS nova
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | ed092d36636d4647968e4b61d25ccc9f |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

给 nove 账号添加 admin 角色-授权操作

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

创建 nove 服务

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

创建 Compute API 服务端点

[root@controller ~]# openstack endpoint create --region RegionOne 
compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | da98af0feeae446395737bd1e757af79 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 7e82806d8a0e4d8aaa321c8fc116f6cf |
| 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           | 1449a1a69cbd415990c790350fc2bd53 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 7e82806d8a0e4d8aaa321c8fc116f6cf |
| 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           | 9915bcd6b5564de6813c876fddb65659 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 7e82806d8a0e4d8aaa321c8fc116f6cf |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+

创建服务账号”placement”

[root@controller ~]# openstack user create --domain default --password PLACEMENT_PASS  placement
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 12084947d039451fb70394c7b36d4d37 |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

对账号”placement”分配基于 service 项目的“admin”角色

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

在“service”项目中添加“Placement API”

[root@controller ~]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | c20da0d0bd534baaa99799c2e061a47c |
| name        | placement                        |
type        | placement                        |
+-------------+----------------------------------+

创建 Placement API 服务端点

#public访问的api endpoint
[root@controller ~]# openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 520d4f8ca19549ac89e0c571d8627b2d |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | c20da0d0bd534baaa99799c2e061a47c |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
#internal内部访问的api endpoint
[root@controller ~]# openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 1cc3806b763e49218c1b9c1441edc585 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | c20da0d0bd534baaa99799c2e061a47c |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------

#管理api endpoint
[root@controller ~]# openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 928e3c9e6c4444a28e11110c9be3e585 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | c20da0d0bd534baaa99799c2e061a47c |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

安装配置 nove 组件

安装基础包

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

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

两种修复方法,任选其一。

手工编辑 nova.conf 配置文件
[root@controller ~]# cd /etc/nova/
[root@controller nova]# cp -a nova.conf nova.conf.bak
#删除空行及注释行
[root@controller nova]# sed -i '/^$/d;/^#/d' nova.conf
  • [DEFAULT]
[DEFAULT]
#启动compute、metadata这两个api
enabled_apis = osapi_compute,metadata
#访问rabbit消息阵列
transport_url = rabbit://openstack:RABBIT_PASS@controller
#控制节点的ip地址
my_ip = 10.0.0.11
#启用网络支持
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
  • [api_database][database]段,配置 mysql 数据库连接信息
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

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

  • [api][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 = NOVA_PASS
  • 在[vnc]段,配置 controller node 放入 VNC 代理访问
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
  • [glance]段,配置镜像服务的 API
[glance]
api_servers = http://controller:9292
  • [oslo_concurrency] 段,配置 nova 锁路径
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
  • [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 = PLACEMENT_PASS
命令行形式修改配置
openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf DEFAULT transport_url  rabbit://openstack:RABBIT_PASS@controller
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip  10.0.0.11
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron  True
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:NOVA_DBPASS@controller/nova
openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:5000/v3
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf vnc enabled true
openstack-config --set /etc/nova/nova.conf vnc server_listen '$my_ip'
openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip'
openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
openstack-config --set /etc/nova/nova.conf placement os_region_name RegionOne
openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
openstack-config --set /etc/nova/nova.conf placement project_name service
openstack-config --set /etc/nova/nova.conf placement auth_type password
openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
openstack-config --set /etc/nova/nova.conf placement auth_url http://controller:5000/v3
openstack-config --set /etc/nova/nova.conf placement username placement
openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

编辑/etc/httpd/conf.d/00-nova-placement-api.conf配置文件

添加如下内容:

[root@controller nova]# cat <<EOF >>/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>
EOF

重启 http 服务

systemctl restart httpd

同步 nova 数据库

#同步api、cell0数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
#创建cell证书的id
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
#同步nova数据库
su -s /bin/sh -c "nova-manage db sync" nova

验证

[root@controller ~]# nova-manage cell_v2 list_cells
+-------+--------------------------------------+------------------------------------+-----------------------------------------------------+
|  Name |                 UUID                 |           Transport URL            |                 Database Connection                 |
+-------+--------------------------------------+------------------------------------+-----------------------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 |               none:/               | mysql+pymysql://nova:****@controller/nova_api_cell0 |
| cell1 | 5593de74-a939-4d94-8313-1ff853d2a784 | rabbit://openstack:****@controller |    mysql+pymysql://nova:****@controller/nova_api    |
+-------+--------------------------------------+------------------------------------+-----------------------------------------------------+

启动服务

[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

compute node 安装

安装软件包

yum install openstack-nova-compute openstack-utils

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

两种修改方法,任选其一。

手工修改
[root@compute1 ~]# cd /etc/nova/
[root@compute1 nova]# cp -a nova.conf nova.conf.bak
[root@compute1 nova]# sed -i '/^$/d;/^#/d' nova.conf
[root@compute1 nova]# vim nova.conf
  • [DEFAULT]
[DEFAULT]
#启动compute、metadata这两个api
enabled_apis = osapi_compute,metadata
#访问rabbit消息阵列
transport_url = rabbit://openstack:RABBIT_PASS@controller
#计算节点的管理ip地址
my_ip = 10.0.0.31
#启用网络支持
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
  • [api][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 = NOVA_PASS
  • 在[vnc]段,配置 controller node 放入 VNC 代理访问
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://10.0.0.11:6080/vnc_auto.html
  • [glance]段,配置镜像服务的 API
[glance]
api_servers = http://controller:9292
  • [oslo_concurrency] 段,配置 nova 锁路径
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
  • [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 = PLACEMENT_PASS
命令行形式修改配置文件
openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf DEFAULT transport_url  rabbit://openstack:RABBIT_PASS@controller
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip  10.0.0.31
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron  True
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:5000/v3
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf vnc enabled true
openstack-config --set /etc/nova/nova.conf vnc server_listen '0.0.0.0'
openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip'
openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://controller:6080/vnc_auto.html
openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
openstack-config --set /etc/nova/nova.conf placement os_region_name RegionOne
openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
openstack-config --set /etc/nova/nova.conf placement project_name service
openstack-config --set /etc/nova/nova.conf placement auth_type password
openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
openstack-config --set /etc/nova/nova.conf placement auth_url http://controller:5000/v3
openstack-config --set /etc/nova/nova.conf placement username placement
openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

检查虚拟机是否支持硬件加速

[root@compute1 nova]# egrep -c '(vmx|svm)' /proc/cpuinfo
2

如果返回值大于 1,虚拟机支持硬件加速;如果返回值为 0,则不支持硬件加速,需要修改“/etc/nova/nova.conf`配置文件。

「编辑[libvirt]段」

[libvirt]
# ...
virt_type = qemu

启动服务

[root@compute1 nova]# systemctl enable libvirtd.service openstack-nova-compute.service
[root@compute1 nova]#systemctl start libvirtd.service openstack-nova-compute.service
[root@compute1 nova]# systemctl status libvirtd openstack-nova-compute.service |grep Active:
   Active: active (running) since Wed 2022-01-12 18:21:58 CST; 1h 54min ago
   Active: active (running) since Wed 2022-01-12 20:13:14 CST; 3min 5s ago

添加 compute node 到 cell 数据库

以下步骤在「controller node」操作

搜索compute node并写入数据库

root@controller nova]# 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': b46af5b6-0d7e-49db-89fa-a5ee5582670f
Found 0 unmapped computes in cell: b46af5b6-0d7e-49db-89fa-a5ee5582670f

查看数据库内存在的compute node

[root@controller nova]# openstack compute service list --service nova-compute
+----+--------------+----------+------+---------+-------+----------------------------+
| ID | Binary       | Host     | Zone | Status  | State | Updated At                 |
+----+--------------+----------+------+---------+-------+----------------------------+
|  1 | nova-compute | compute1 | nova | enabled | up    | 2022-01-12T13:34:57.000000 |
+----+--------------+----------+------+---------+-------+----------------------------+

注解:

enable 表示开启,up 运行

关于 nove 的安装配置到此结束!

附加:

我在 nove 配置过程中,曾出现了一些错误,记录如下:

同步数据库出错

#su -s /bin/sh -c "nova-manage db sync" nova
ERROR: Could not access cell0.
Has the nova_api database been created?
Has the nova_cell0 database been created?
Has "nova-manage api_db sync" been run?
Has "nova-manage cell_v2 map_cell0" been run?
Is [api_database]/connection set in nova.conf?
Is the cell0 database connection URL correct?
Error: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'nova'@'localhost' (using password: YES)")

解决方案:

删除数据库,重新赋权!

compute node启动服务时,长久挂起

systemctl start libvirtd.service openstack-nova-compute.service

查看日志

[root@compute1 ~]#cd /var/log/nova/
[root@compute1 nova]# tail -fn 100 nova-compute.log
...
2022-01-12 20:11:26.833 4020 ERROR oslo.messaging._drivers.impl_rabbit [req-30ce45ba-791e-41aa-8619-4d59f5b877a5 - - - - -] [f6b5f9a2-46c2-4662-9148-3a0f53fe8d3c] AMQP server on controller:5672 is unreachable: timed out. Trying again in 32 seconds.: timeout: timed out

解决方案:出错原因,/etc/hosts 忘了修改

/etc/hosts

10.0.0.11 controller

10.0.0.31 compute1

END
OpenStack Queen 版的安装与配置(四)|核心组件:nova
OpenStack Queen 版的安装与配置(四)|核心组件:nova

扫描二维码获取

更多精彩

OpenStack Queen 版的安装与配置(四)|核心组件:nova

带米的笨老头

OpenStack Queen 版的安装与配置(四)|核心组件:nova



往期推荐






点个“在看”,一年不宕机

原文始发于微信公众号(带米的笨老头):

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/20820.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!