使用 OpenStack Compute 托管和管理云计算系统。OpenStack Compute 是基础架构即服务 (IaaS) 系统的重要组成部分。主要模块是用Python实现的。

安装并配置控制节点

这个部分将描述如何在控制节点上安装和配置 Compute 服务,即 nova。

在安装和配置 Compute 服务前,你必须创建数据库服务的凭据以及 API endpoints。

为了创建数据库,必须完成这些步骤:

用数据库连接客户端以 root 用户连接到数据库服务器:

mysql -u root -p

创建nova_api、nova 和 nova_cell0 数据库:

CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

对数据库进行正确的授权:

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
用合适的密码代替 NOVA_DBPASS

退出数据库客户端。

获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

. admin-openrc

创建计算服务凭据:

  • 创建 nova 用户:
openstack user create --domain default --password NOVA_PASS nova

  • nova 用户添加 admin 角色:
openstack role add --project service --user nova admin
这个命令执行后没有输出。
  • 创建 nova 服务实体:
openstack service create --name nova --description "OpenStack Compute" compute

创建计算 API 服务终结点:

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

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

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

创建放置服务用户:

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

将 Placement 用户添加到具有管理员角色的服务项目中:

openstack role add --project service --user placement admin
这个命令执行后没有输出。

在服务目录中创建放置 API 条目:

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

创建放置 API 服务终端节点:

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

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

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

安全并配置组件

默认配置文件在各发行版本中可能不同。你可能需要添加这些部分,选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。

安装软件包:

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文件并完成下面的操作:

vim /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
用你为 Compute 数据库选择的密码来代替 NOVA_DBPASS

[DEFAULT]部分,配置RabbitMQ消息队列访问权限:

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

在 [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 用户的密码替换NOVA_PASS

[DEFAULT 部分,配置my_ip 来使用控制节点的管理接口的IP 地址。

[DEFAULT]
# ...
my_ip = 控制节点IP

[DEFAULT]部分,启用网络服务支持:

[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用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]部分中,配置放置 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替换为您在身份服务中为放置用户选择的密码。

由于BUG错误,您必须通过将以下配置添加到 /etc/httpd/conf.d/00-nova-placement-api.conf 来启用对 Placement API 的访问:

vim /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 cell0 和cell1是否已正确注册:

nova-manage cell_v2 list_cells

完成安装

启动 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

安装和配置计算节点

安全并配置组件

默认配置文件在各发行版本中可能不同。你可能需要添加这些部分,选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。

在计算节点操作

安装软件包:

yum install -y openstack-nova-compute

编辑/etc/nova/nova.conf文件并完成下面的操作:

vim /etc/nova/nova.conf

[DEFAULT]部分,只启用计算和元数据API:

[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

[DEFAULT]部分,配置RabbitMQ消息队列访问权限:

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

在 [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 用户的密码替换NOVA_PASS

[DEFAULT] 部分,配置 my_ip 选项:

[DEFAULT]
# ...
my_ip = 计算节点IP地址

[DEFAULT]部分,启用网络服务支持:

[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
缺省情况下,Compute 使用内置的防火墙服务。由于 Networking 包含了防火墙服务,所以你必须通过使用 nova.virt.firewall.NoopFirewallDriver 来去除 Compute 内置的防火墙服务。

[vnc]部分,启用并配置远程控制台访问:

[vnc]
# ...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://控制节点IP:6080/vnc_auto.html

服务器组件监听所有的 IP 地址,而代理组件仅仅监听计算节点管理网络接口的 IP 地址。基本的 URL 指示您可以使用 web 浏览器访问位于该计算节点上实例的远程控制台的位置。

如果你运行浏览器的主机无法解析controller 主机名,你可以将controller替换为你控制节点管理网络的IP地址。

[glance] 区域,配置镜像服务 API 的位置:

[glance]
# ...
api_servers = http://controller:9292

[oslo_concurrency] 部分,配置锁路径:

[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

[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

完成安装

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

egrep -c '(vmx|svm)' /proc/cpuinfo

如果这个命令返回了 非0 or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。

如果这个命令返回了 0 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM

/etc/nova/nova.conf 文件的 [libvirt] 区域做出如下的编辑:

[libvirt]
# ...
virt_type = qemu

启动计算服务及其依赖,并将其配置为随系统自动启动:

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

在控制器节点上将计算节点添加到单元数据库

获取管理员凭据以启用仅限管理员的 CLI 命令,然后确认数据库中存在计算主机:

. admin-openrc
openstack hypervisor list

发现计算主机:

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

添加新的计算节点时,必须在控制器节点上运行以注册这些新的计算节点。或者,您可以在/etc/nova/nova.conf中设置适当的间隔:

vim /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300

验证操作

在控制节点上执行这些命令。

获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

. admin-openrc

列出服务组件,以验证是否成功启动并注册了每个进程:

openstack compute service list

该输出应该显示三个服务组件在控制节点上启用,一个服务组件在计算节点上启用。

列出身份认证服务中的 API 端点来验证身份认证服务的连通性:

‎下面的端点列表可能会有所不同,具体取决于 OpenStack 组件的安装。‎
openstack catalog list

openstack image list

‎检查单元格和放置 API 是否成功工作:

nova-status upgrade check

如果觉得我的文章对你有用,请随意赞赏