搭建多OpenStack多节点私有云平台(四)(nova计算服务)
搭建多OpenStack多节点私有云平台(四)
(四)nova计算服务
一、安装并配置控制节点
-
要创建数据库,请完成以下步骤:
-
使用数据库访问客户端连接到数据库服务器,作为
root用户:$ 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';取代
NOVA_DBPASS有一个合适的密码。 -
退出数据库访问客户端。
-
-
来源
admin访问只管理的CLI命令的凭据:$ . admin-openrc -
创建计算服务凭据:
-
创建
nova用户:$ openstack user create --domain default --password NOVA_PASS nova +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 8a7dbf5279404537b1c7b86c033620fe | | name | nova | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ -
添加
admin角色到nova用户:$ openstack role add --project service --user nova admin注
此命令不提供输出。
-
创建
nova服务实体:$ openstack service create --name nova \ --description "OpenStack Compute" compute +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Compute | | enabled | True | | id | 060d59eac51b4594815603d75a00aba2 | | name | nova | | type | compute | +-------------+----------------------------------+
-
-
创建ComputeAPI服务端点:
$ openstack endpoint create --region RegionOne \ compute public http://controller:8774/v2.1 +--------------+-------------------------------------------+ | Field | Value | +--------------+-------------------------------------------+ | enabled | True | | id | 3c1caa473bfe4390a11e7177894bcc7b | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 060d59eac51b4594815603d75a00aba2 | | service_name | nova | | service_type | compute | | url | http://controller:8774/v2.1 | +--------------+-------------------------------------------+ $ openstack endpoint create --region RegionOne \ compute internal http://controller:8774/v2.1 +--------------+-------------------------------------------+ | Field | Value | +--------------+-------------------------------------------+ | enabled | True | | id | e3c918de680746a586eac1f2d9bc10ab | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 060d59eac51b4594815603d75a00aba2 | | service_name | nova | | service_type | compute | | url | http://controller:8774/v2.1 | +--------------+-------------------------------------------+ $ openstack endpoint create --region RegionOne \ compute admin http://controller:8774/v2.1 +--------------+-------------------------------------------+ | Field | Value | +--------------+-------------------------------------------+ | enabled | True | | id | 38f7af91666a47cfb97b4dc790b94424 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 060d59eac51b4594815603d75a00aba2 | | service_name | nova | | service_type | compute | | url | http://controller:8774/v2.1 | +--------------+-------------------------------------------+ -
使用您选择的位置服务用户创建一个Placement服务用户
PLACEMENT_PASS:$ openstack user create --domain default --password PLACEMENT_PASS placement +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | fa742015a6494a949f67629884fc7ec8 | | name | placement | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ -
将Placement用户添加到具有管理角色的服务项目中:
$ openstack role add --project service --user placement admin注
此命令不提供输出。
-
在服务目录中创建Placement API条目:
$ openstack service create --name placement --description "Placement API" placement +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Placement API | | enabled | True | | id | 2d1a27022e6e4185b86adac4444c495f | | name | placement | | type | placement | +-------------+----------------------------------+ -
创建Placement API服务端点:
$ openstack endpoint create --region RegionOne placement public http://controller:8778 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 2b1b2637908b4137a9c2e0470487cbc0 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 2d1a27022e6e4185b86adac4444c495f | | service_name | placement | | service_type | placement | | url | http://controller:8778 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne placement internal http://controller:8778 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 02bcda9a150a4bd7993ff4879df971ab | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 2d1a27022e6e4185b86adac4444c495f | | service_name | placement | | service_type | placement | | url | http://controller:8778 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne placement admin http://controller:8778 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 3d71177b9e0f406f98cbff198d74b182 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 2d1a27022e6e4185b86adac4444c495f | | service_name | placement | | service_type | placement | | url | http://controller:8778 | +--------------+----------------------------------+
安装和配置组件
注
默认配置文件随发行版而异。您可能需要添加这些节和选项,而不是修改现有的节和选项。另外,省略号(...)在配置片段中,指示应该保留的潜在默认配置选项。
-
安装软件包:
# yum install openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler openstack-nova-placement-api -y -
编辑
/etc/nova/nova.conf归档并完成以下操作:-
在
[DEFAULT]节中,只启用计算和元数据API:[DEFAULT] # ... enabled_apis = osapi_compute,metadata -
在
[api_database]和[database]各节,配置数据库访问:[api_database] # ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api [database] # ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova取代
NOVA_DBPASS使用您为Compute数据库选择的密码。 -
在
[DEFAULT]节,配置RabbitMQ消息队列访问:[DEFAULT] # ... transport_url = rabbit://openstack:RABBIT_PASS@controller取代
RABBIT_PASS使用您为openstack记帐RabbitMQ. -
在
[api]和[keystone_authtoken]各节,配置身份服务访问:[api] # ... auth_strategy = keystone [keystone_authtoken] # ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS取代
NOVA_PASS使用您为nova身份服务中的用户。注
类中的任何其他选项注释掉或删除。
[keystone_authtoken]部分。 -
在
[DEFAULT]节中,配置my_ip选项使用控制器节点的管理接口IP地址:[DEFAULT] # ... my_ip = 192.168.25.141
-
-
在
[DEFAULT]节中,启用对网络服务的支持:[DEFAULT] # ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver注
默认情况下,Compute使用内部防火墙驱动程序。由于网络服务包括防火墙驱动程序,所以必须使用
nova.virt.firewall.NoopFirewallDriver防火墙驱动程序。 -
在
[vnc]节中,配置VNC代理以使用控制器节点的管理接口IP地址:[vnc] enabled = true # ... vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip -
在
[glance]节中,配置图像服务API的位置:[glance] # ... api_servers = http://controller:9292 -
在
[oslo_concurrency]节中,配置锁路径:[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:35357/v3 username = placement password = PLACEMENT_PASS取代
PLACEMENT_PASS使用您为placement身份服务中的用户。中的任何其他选项注释掉。[placement]部分。 -
因包装缺陷,必须将以下配置添加到Placement API中,从而启用对Placement API的访问
/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> -
重新启动httpd服务:
# systemctl restart httpd
-
填充nova-api数据库:
# su -s /bin/sh -c "nova-manage api_db sync" nova注
忽略此输出中的任何弃用消息。
-
注册
cell0数据库:# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova -
创建
cell1牢房:# 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 -
验证nova cell 0和cell 1是否正确注册:
# nova-manage cell_v2 list_cells +-------+--------------------------------------+ | Name | UUID | +-------+--------------------------------------+ | cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 | | cell0 | 00000000-0000-0000-0000-000000000000 | +-------+--------------------------------------+
最后安装
-
启动Compute服务并将其配置为在系统启动时启动:
# systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service # systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service查看有没有弄好
# nova service-list +--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+ | Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | Forced down | +--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+ | 26469d4d-5341-4a7e-95cd-3279dbed39e9 | nova-scheduler | controller | internal | enabled | up | 2020-10-26T03:50:21.000000 | - | False | | a877753e-c5be-4621-8715-91690d1b32a5 | nova-conductor | controller | internal | enabled | up | 2020-10-26T03:50:13.000000 | - | False | | f7d4f947-fe98-43f1-b03b-dd83aafb605f | nova-consoleauth | controller | internal | enabled | up | 2020-10-26T03:50:13.000000 | - | False | +--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
二、安装和配置计算节点
安装和配置组件
注
默认配置文件随发行版而异。您可能需要添加这些节和选项,而不是修改现有的节和选项。另外,省略号(...)在配置片段中,指示应该保留的潜在默认配置选项。
-
安装软件包:
# yum install openstack-nova-compute -
编辑
/etc/nova/nova.conf归档并完成以下操作:-
在
[DEFAULT]节中,只启用计算和元数据API:[DEFAULT] # ... enabled_apis = osapi_compute,metadata -
在
[DEFAULT]节,配置RabbitMQ消息队列访问:[DEFAULT] # ... transport_url = rabbit://openstack:RABBIT_PASS@controller取代
RABBIT_PASS使用您为openstack记帐RabbitMQ. -
在
[api]和[keystone_authtoken]各节,配置身份服务访问:[api] # ... auth_strategy = keystone [keystone_authtoken] # ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS取代
NOVA_PASS使用您为nova身份服务中的用户。注
类中的任何其他选项注释掉或删除。
[keystone_authtoken]部分。 -
在
[DEFAULT]节中,配置my_ip备选方案:[DEFAULT] # ... my_ip = 192.168.25.143取代
MANAGEMENT_INTERFACE_IP_ADDRESS对于计算节点上的管理网络接口的IP地址,通常为第一个节点的10.0.0.31示例体系结构. -
在
[DEFAULT]节中,启用对网络服务的支持:[DEFAULT] # ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver注
默认情况下,Compute使用内部防火墙服务。由于网络包括防火墙服务,所以必须使用
nova.virt.firewall.NoopFirewallDriver防火墙驱动程序。 -
在
[vnc]节中,启用和配置远程控制台访问:[vnc] # ... enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = $my_ip novncproxy_base_url = http://controller:6080/vnc_auto.html服务器组件侦听所有IP地址,代理组件只侦听计算节点的管理接口IP地址。基URL指示可以使用Web浏览器访问此计算节点上实例的远程控制台的位置。
注
如果要访问远程控制台的web浏览器驻留在无法解析
controller主机名,您必须替换controller具有控制器节点的管理接口IP地址。 -
在
[glance]节中,配置图像服务API的位置:[glance] # ... api_servers = http://controller:9292 -
在
[oslo_concurrency]节中,配置锁路径:[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:35357/v3 username = placement password = PLACEMENT_PASS取代
PLACEMENT_PASS使用您为placement身份服务中的用户。中的任何其他选项注释掉。[placement]部分。
-
最后安装
-
确定计算节点是否支持虚拟机的硬件加速:
$ egrep -c '(vmx|svm)' /proc/cpuinfo如果此命令返回值为
one or greater,您的计算节点支持硬件加速,这通常不需要额外的配置。如果此命令返回值为
zero,您的计算节点不支持硬件加速,您必须配置libvirt使用QEMU而不是KVM。-
编辑
[libvirt]部分/etc/nova/nova.conf档案如下:[libvirt] # ... virt_type = qemu
-
-
启动Compute服务,包括其依赖项,并将其配置为在系统启动时自动启动:
# systemctl enable libvirtd.service openstack-nova-compute.service # systemctl start libvirtd.service openstack-nova-compute.service
注
如果nova-compute服务启动失败,请检查/var/log/nova/nova-compute.log。错误信息AMQP server on controller:5672 isunreachable可能表示控制器节点上的防火墙正在阻止对端口5672的访问。将防火墙配置为在控制器节点上打开端口5672并重新启动nova-compute计算节点上的服务。
将计算节点添加到单元数据库中
重要
上运行以下命令控制器节点。
-
获取管理凭据以启用只管理的CLI命令,然后确认数据库中有计算主机:
$ . admin-openrc $ openstack hypervisor list (一开始没有执行下面的语句后就有了) 或者 nova service-list +----+---------------------+-----------------+-----------+-------+ | ID | Hypervisor Hostname | Hypervisor Type | Host IP | State | +----+---------------------+-----------------+-----------+-------+ | 1 | compute1 | QEMU | 10.0.0.31 | up | +----+---------------------+-----------------+-----------+-------+ -
发现计算主机:
# 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 compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3 Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3注
添加新的计算节点时,必须运行
nova-manage cell_v2 discover_hosts在控制器节点上注册这些新的计算节点。或者,您可以在/etc/nova/nova.conf:[scheduler] discover_hosts_in_cells_interval = 300
在计算节点查看日志
tail -f /var/log/nova/nova-compute.log
注意时间要同步,如果你重新传到快照时间会同步不了
要打以下代码
systemctl enable chronyd.service
systemctl restart chronyd.service
chronyc sources

浙公网安备 33010602011771号