




安装配置 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
❞


扫描二维码获取
更多精彩

带米的笨老头

往期推荐
原文始发于微信公众号(带米的笨老头):
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/20820.html