nova计算服务概述
nova是openstack中的核心组件之一,主要负责与计算相关的服务,如对虚拟机生命周期的管理。nova组件主要包括以下几大服务:
1.nova-api服务:对外提供REST API服务,是nova服务的入口
2.nova-compute服务:提供计算服务,是nova中对虚拟机管理的核心服务,它可以通过调用不同Hypervisor的API来实现对虚拟机生命周期的管理。常见的Hypervisor有KVM,Xen和VMWare等。
3.nova-conductor服务:是nova中各个服务组件与数据库交互的接口。nova架构设计中,因为nova-compute服务经常需要更新数据,因此出于安全性和可扩展性的考虑,nova-compute不会直接访问数据库,而是通过nova-conductor来访问数据库。(其他的nova服务包括nova-api,nova-scheduler可以直接访问数据库)
4.nova-scheduler服务:提供对计算资源的调度,它提供了多种算法来应对不同场景下nova对资源的调度
5.nova-novncproxy服务:提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端
6.nova-placement-api服务:Placement API 在 Newton 版本中被引入 Nova,主要用于跟踪记录 Resource Provider 的 Inventory 和 Usage,并使用不同的 Resource Classes 来标记资源类型。例如:一个 resource provider 可以是一个 compute node,一个 shared storage pool,或者是一个 IP allocation pool。
通常情况下,nova服务会部署于控制节点和计算节点上,其中nova-compute部署在计算节点,其他服务部署在控制节点。为了后续能够进行虚拟机在不同节点之间冷迁移和热迁移的实验,本次部署了两个计算节点1和2,两个计算节点的部署方法完全相同,所以nova的安装部署教程主要分为两个部分,控制节点的安装部署和计算节点的安装部署。
控制节点nova的安装部署
在数据库中创建nova的表
mysql -uroot -pwwwwww
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova';
创建nova和placement的user并绑定role,创建nova和placement服务
nova:
openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
placement:
openstack user create --domain default --password-prompt placement
openstack role add --project service --user placement admin
openstack service create --name placement --description “Placement API” placement
创建nova和placement服务的endpoint
nova:
openstack endpoint create --region RegionOne compute public http://控制节点主机名:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://控制节点主机名:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://控制节点主机名:8774/v2.1
placement
openstack endpoint create --region RegionOne placement public http://控制节点主机名:8778
openstack endpoint create --region RegionOne placement internal http://控制节点主机名:8778
openstack endpoint create --region RegionOne placement admin http://控制节点主机名:8778
安装并配置nova组件
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
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
vim /etc/nova/nova.conf
[DEFAULT]enabled_apis = osapi_compute,metadatatransport_url = rabbit://openstack:wwwwww@控制节点主机名my_ip = 控制节点ipuse_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver[api_database]connection = mysql://nova:nova@控制节点主机名/nova_api[database]connection = mysql://nova:nova@控制节点主机名/nova[api]auth_strategy = keystone[keystone_authtoken]auth_url = http://控制节点主机名:35357/v3
memcached_servers = 控制节点主机名:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova[vnc]enabled = trueserver_listen = $my_ipserver_proxyclient_address = $my_ip[glance]api_servers = http://控制节点主机名:9292[oslo_concurrency]lock_path = /var/lib/nova/tmp[placement]os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://控制节点主机名:35357/v3
username = placement
password = placement
为了实现对placement API的访问,还需要在/etc/httpd/conf.d/00-nova-placement-api.conf添加如下配置并重启httpd服务
<Directory /usr/bin><IfVersion >= 2.4>Require all granted</IfVersion><IfVersion < 2.4>Order allow,denyAllow from all</IfVersion>
</Directory>
systemctl restart httpd
systemctl status httpd
同步nova相关数据库
# 填充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相关数据库验证是否写入成功,此时nova库中应该有110张表,nova-api库中应该有32张表
完成安装并启动服务
systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.servicesystemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.servicesystemctl status openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
计算节点nova-compute的安装部署
该服务支持多个虚拟机管理程序来部署实例或虚拟机(VM)。为简单起见,此配置使用Quick EMUlator(QEMU)虚拟机管理程序和支持虚拟机硬件加速的计算节点上的基于内核的VM(KVM)扩展。在传统硬件上,此配置使用通用QEMU管理程序。您可以通过稍作修改来遵循这些说明,以使用其他计算节点水平扩展您的环境。为了后续实验虚拟机在不同计算节点的冷热迁移,安装部署了两个计算节点,两个节点的安装部署步骤完全相同
安装配置nova-compute服务
yum install openstack-nova-compute
修改/etc/nova/nova.conf的配置
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
vim /etc/nova/nova.conf
[DEFAULT]enabled_apis = osapi_compute,metadatatransport_url = rabbit://openstack:wwwwww@控制节点主机名my_ip = 本计算节点ip地址use_neutron = truefirewall_driver = nova.virt.firewall.NoopFirewallDriver[api]auth_strategy = keystone[keystone_authtoken]www_authenticate_uri = http://控制节点主机名:5000/
auth_url = http://控制节点主机名:35357/
memcached_servers = 控制节点主机名:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova[vnc]enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://控制节点主机名:6080/vnc_auto.html[glance]api_servers = http://控制节点主机名:9292[oslo_concurrency]lock_path = /var/lib/nova/tmp[placement]region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://控制节点主机名:35357/v3
username = placement
password = placement
检查计算节点是否支持虚拟机的硬件加速
egrep -c '(vmx|svm)' /proc/cpuinfo
如果返回值为0,表明计算节点不支持虚拟机的硬件加速,需要在/etc/nova/nova.conf文件中修改如下配置
[libvirt]virt_type = qemu
启动nova-compute服务
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
将计算节点加入nova_cell数据库
完成两个计算节点的安装配置后,在控制节点进行同步数据库操作,将两个节点加入nova_cell数据库中
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
nova官方安装文档:https://docs.openstack.org/nova/train/install/get-started-compute.html