安装配置并验证Nova
Nova管理OpenStack项目中虚拟机实例计算资源的全部生命周期,包括创建、调度和结束。
创建Nova数据库
在控制节点执行以下操作。
- 使用root用户连接数据库。
1
mysql -u root -p
- 创建nova,nova_api,nova_cell0数据库。
1 2 3 4
CREATE DATABASE nova_api; CREATE DATABASE nova; CREATE DATABASE nova_cell0; CREATE DATABASE placement;
- 授予对数据库的适当访问权限。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '<PASSWORD>';
- 退出数据库。
1
exit
创建角色和用户
在控制节点执行以下操作。
- 使用admin用户登录openstack命令行。
1
source /etc/keystone/admin-openrc
- 创建nova用户。
1
openstack user create --domain default --password-prompt nova
- 为nova用户创建密码。
- 将admin角色添加到nova用户。
1
openstack role add --project service --user nova admin
- 创建nova实体。
1
openstack service create --name nova --description "OpenStack Compute" compute
- 创建compute API服务端点。
1 2 3
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
- 创建用户placement并设置密码。
1
openstack user create --domain default --password-prompt placement
- 添加角色。
1
openstack role add --project service --user placement admin
- 创建Placement API用户和服务端点。
1 2 3 4
openstack service create --name placement --description "Placement API" placement 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
安装和配置Nova(控制节点)
在控制节点执行以下操作。
- 安装组件。
1
yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
- 配置Nova,编辑“/etc/nova/nova.conf”文件。
- 启用计算和元数据API,配置RabbitMQ消息队列访问以及启用网络服务的支持。
1 2 3 4 5 6 7
[DEFAULT] enabled_apis = osapi_compute,metadata transport_url = rabbit://openstack:<PASSWORD>@controller my_ip = 172.168.201.11 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver allow_resize_to_same_host = true
my_ip为控制节点的管理IP地址,<PASSWORD>为RabbitMQ服务为用户openstack设置的密码。
- 配置数据库访问。
1 2 3 4
[api_database] connection = mysql+pymysql://nova:<PASSWORD>@controller/nova_api [database] connection = mysql+pymysql://nova:<PASSWORD>@controller/nova
- 配置身份服务访问。
1 2 3 4 5 6 7 8 9 10 11
[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 = <PASSWORD>
- 配置“/etc/nova/nova.conf”的[neutron]部分,启用元数据代理并配置密码。
1 2 3 4 5 6 7 8 9 10 11 12
[neutron] url = http://controller:9696 auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = <PASSWORD> service_metadata_proxy = true metadata_proxy_shared_secret = <PASSWORD>
- 配置VNC代理以使用控制器节点的管理接口IP地址。
1 2 3 4 5 6 7
[vnc] enabled = true server_listen = $my_ip server_proxyclient_address = $my_ip novncproxy_host=0.0.0.0 novncproxy_port=6080 novncproxy_base_url=http://172.168.201.11:6080/vnc_auto.html
实际操作过程中,请将172.168.201.11替换成相应的控制节点管理IP地址。
- 配置Image服务API的位置。
1 2
[glance] api_servers = http://controller:9292
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/nova/tmp
- 配置对Placement服务的访问。
1 2 3 4 5 6 7 8 9
[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 = <PASSWORD>
- 在[placement_database]部分中,配置数据库访问,<PASSWPRD>修改为数据库设置的密码。
1 2
[placement_database] connection = mysql+pymysql://placement:<PASSWORD>@controller/placement
- 修改配置文件“/etc/httpd/conf.d/00-nova-placement-api.conf”。
1
vim /etc/httpd/conf.d/00-nova-placement-api.conf
在ErrorLog /var/log/placement/placement-api.log下面添加:
1 2 3 4 5 6 7 8 9
<Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory>
- 重启httpd服务。
1
systemctl restart httpd
- 填充nova-api数据库。
1 2 3 4
su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova su -s /bin/sh -c "nova-manage db sync" nova
- 验证cell0和cell1是否正确注册。
1
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
- 启动compute服务并设置为系统引导时启动。
1 2 3 4
systemctl enable openstack-nova-api.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service systemctl start openstack-nova-api.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
- 启用计算和元数据API,配置RabbitMQ消息队列访问以及启用网络服务的支持。
安装和配置Nova(计算节点)
在计算节点执行以下操作。
- 安装组件。
1
yum -y install openstack-nova-compute edk2-aarch64
- 编辑文件“/etc/nova/nova.conf”。
- 启用计算和元数据API。
1 2 3 4 5 6 7
[DEFAULT] enabled_apis = osapi_compute,metadata transport_url = rabbit://openstack:<PASSWORD>@controller my_ip = 172.168.201.12 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver compute_driver=libvirt.LibvirtDriver
此处的my_ip设置为计算节点的管理IP地址。
- 配置身份服务访问。
1 2 3 4 5 6 7 8 9 10 11
[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 = <PASSWORD>
- 配置“/etc/nova/nova.conf”的[neutron]部分,在[neutron]部分,添加如下信息。
1 2 3 4 5 6 7 8 9 10
[neutron] url = http://controller:9696 auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = <PASSWORD>
- 启用并配置远程控制台访问。
1 2 3 4 5 6
[vnc] enabled = true server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://controller:6080/vnc_auto.html vncserver_proxyclient_address = $my_ip
- 配置Image服务API的位置。
1 2
[glance] api_servers = http://controller:9292
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/nova/tmp
- 配置Placement API。
1 2 3 4 5 6 7 8 9
[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 = <PASSWORD>
- 在[libvirt]模块添加如下信息。
1
virt_type = kvm
上述配置文件nova.conf默认创建的虚拟机pci为6,若要修改虚拟机的pci数量,可在计算节点修改配置文件nova.conf,更改num_pcie_ports参数,最多支持设置15个。
1
vim /etc/nova/nova.conf
打开注释并修改以下参数:
1
num_pcie_ports=15
重启虚拟机后进入虚拟机执行lspci可查看。
- 启用计算和元数据API。
- 创建AAVMF文件和链接。
mkdir -p /usr/share/AAVMF chown nova:nova /usr/share/AAVMF ln -s /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw /usr/share/AAVMF/AAVMF_CODE.fd ln -s /usr/share/edk2/aarch64/vars-template-pflash.raw /usr/share/AAVMF/AAVMF_VARS.fd
- 修改“/etc/libvirt/qemu.conf”文件。
- 打开文件。
vi /etc/libvirt/qemu.conf
- 按“i”进入编辑模式,添加如下内容。
nvram = ["/usr/share/AAVMF/AAVMF_CODE.fd:/usr/share/AAVMF/AAVMF_VARS.fd", "/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2/aarch64/vars-template-pflash.raw"]
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开文件。
- 启动Compute服务及其依赖项,并将它们配置为在系统引导时自动启动。
1 2
systemctl enable libvirtd.service openstack-nova-compute.service systemctl start libvirtd.service openstack-nova-compute.service
将计算节点添加到单元数据库
在控制节点执行以下操作。
- 使用admin用户登录openstack命令行。
1
source /etc/keystone/admin-openrc
- 查看数据库的主机。
1
openstack compute service list --service nova-compute
- 发现主机。
1
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
注意添加新计算节点时,需要在控制器节点执行以下命令,以注册这些新计算节点。
1
nova-manage cell_v2 discover_hosts
或者,在以下位置设置适当的间隔,让控制节点周期性发现计算节点。
1
vim /etc/nova/nova.conf
1 2
[scheduler] discover_hosts_in_cells_interval = 300
验证Nova
在控制节点执行以下操作。
- 使用admin用户登录openstack命令行。
1
source /etc/keystone/admin-openrc
- 列出服务组件。
1
openstack compute service list
- 列出Identity服务中的API端点以验证与Identity服务的连接。
1
openstack catalog list
- 列出Glance服务中的Image。
1
openstack image list
- 检查单元格和放置API是否正常运行以及其他必要的先决条件是否到位。
1
nova-status upgrade check
Nova常用命令
命令行 |
功能描述 |
---|---|
openstack flavor create <flavor-name> --vcpus 4 --ram 8192 --disk 20 |
创建指定规格的flavor |
openstack server create --flavor m1.nano --image cirros \ --nic net-id=provider --security-group default \ --key-name mykey provider-vm |
创建虚拟机实例 |
openstack server start provider-vm |
启动实例 |
openstack server list |
查看所有实例 |
openstack server stop vm1 |
关闭实例 |
openstack server delete vm1 |
删除所选的实例 |