OpenStack之计算服务(Nova)

您所在的位置:网站首页 openstack云计算基础架构平台技术与应用 OpenStack之计算服务(Nova)

OpenStack之计算服务(Nova)

2023-06-25 21:53| 来源: 网络整理| 查看: 265

一、Nova的基本概念

Nova负责管理OpenStack中云主机实例的创建、删除、启动、停止等。Nova位于OpenStack架构的中心,其他服务或者组件(如Glance、Placement、Cinder、Neutron等)对它提供支持。Nova自身并没有任何虚拟化能力,它通过虚拟机管理器(Hypervisor)来创建和管理云主机。Hypervisor为多种虚拟化程序(如KVM、Xen、VMware ESX、QEMU)提供统一接口服务。

1、Nova的组件架构——Nova的模块构成

Nova这一组件功能强大且结构复杂,由多种模块组成,这些模块分属若干单元(Cell)。每个单元又是若干计算节点的集合。

| **模块 ** | 功能介绍 | | — | — | | nova-scheduler | 该模块负责虚拟机调度服务,与Placement合作,负责从计算机集群中选择某一主机创建虚拟机 | | nova-api | 该模块用于接收和响应外部请求,也是外部可用于管理Nova的唯一入口 |

image.png

2、Nova的组件架构——Nova的单元管理模式

OpenStack中的计算节点被分成若干小单元进行管理,除了顶层管理单元“cell0”外,每个单元都有自己的消息队列和数据库,“cell0”只有数据库。其中单元“cell0”包含接口模块(nova-api)和调度模块(nova-scheduler)。而其余的单元如“cell1”“cell2”负责具体的云主机实例的创建与管理。 为Nova各个单元服务的数据库一共有3个,分别是“nova_api”“nova_cell0”“nova”。顶层管理单元“cell0”使用了“nova_api”“nova_cell0”数据库。“nova_api”数据库存放的是全局信息,如单元的信息、实例类型(创建云主机的模板)信息等。“nova _cell0”数据库的作用是当某台云主机调度失败时,此时云主机的信息将不属于任何一个单元,而只能存放到“nova_cell0”数据库中,因此“nova_cell0”数据库用于存放云主机调度失败的数据以集中管理。而“nova”数据库为其他所有单元服务,存储单元中云主机的相关信息。 image.png

3、Nova的基本工作流程

image.png

第1步,nova-api接收到用户通过管理界面或命令行发起的云主机创建请求,并将其发送到消息队列中。第2步,nova-conductor从消息队列获得请求,从数据库获得如Cell单元的相关信息,再将请求和获得的数据放入消息队列。第3步,nova-scheduler从消息队列获得请求和数据以后,与Placement组件配合选择创建云主机的物理机,选择完成后,请求转入消息队列等待nova-compute处理。第4步,nova-compute从消息队列获得请求后,分别与Glance、Neutron和Cinder交互以获取镜像资源、网络资源和云存储资源。一切资源准备就绪后,nova-compute通过Hypervisor调用具体的虚拟化程序,如KVM、QEMU、Xen等,来创建虚拟机。 二、项目实施 1、在控制节点安装与配置Nova 安装Nova软件包 yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-scheduler openstack-nova-novncproxy “openstack-nova-api”:Nova与外部的接口模块。“openstack-nova-conductor”:Nova传导服务模块,提供数据库访问。“nova-scheduler”:Nova调度服务模块,用以选择某台主机进行云主机创建。“openstack-nova-novncproxy”:Nova的虚拟网络控制台( Virtual Network Console,VNC)代理模块,支持用户通过VNC访问云主机。 创建Nova的数据库并授权 #第1步,用下面的方法进入MariaDB数据库服务器。 mysql -uroot -p123456 #第2步,新建“nova_api”“nova_cell0”“nova”数据库。 CREATE DATABASE nova_api; CREATE DATABASE nova_cell0; CREATE DATABASE nova; #第3步,给用户授权使用新建数据库。 GRANT ALL PRIVILEGES ON 数据库名.* TO 'nova'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON 数据库名.* TO 'nova'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'controller' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'controller' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456'; #注意:这里数据库名分别是“nova_api”“nova_cell0”“nova”,即6条语句。 #退出数据 quit; 修改Nova配置文件

将配置文件去掉注释和空行 第1步,备份配置文件。

cp /etc/nova/nova.conf /etc/nova/nova.bak

第2步,去掉所有注释和空行,生成新的配置文件。

grep -Ev '^$|#' /etc/nova/nova.bak >/etc/nova/nova.conf

编辑新的配置文件 第1步,打开配置文件进行编辑。

vi /etc/nova/nova.conf

第2步,修改“[api_database]”和“[database]”部分,实现与数据库“nova_api”“nova”的连接。

[api_database] connection = mysql+pymysql://nova:123456@controller/nova_api [database] connection = mysql+pymysql://nova:123456@controller/nova

第3步,修改“[api]”与“[keystone_authtoken]”部分,实现与Keystone交互。

[api] auth_strategy = keystone project_domain_name = Default user_domain_name = Default project_name = project username = nova password = 123456 [keystone_authtoken] auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = project username = nova password = 123456

第4步,修改“[placement]”部分,实现与Placement交互。

[placement] auth_url = http://controller:5000 auth_type = password project_domain_name = Default user_domain_name = Default project_name = project username = placement password = 123456 region_name = RegionOne project_domain_name = Default user_domain_name = Default project_name = project username = nova password = 123456

第5步,修改“[glance]”部分,实现与Glance交互。

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

第6步,修改“[oslo_concurrency]”,配置锁路径。

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

第7步,修改“[DEFAULT]”部分,配置使用消息队列及防火墙等信息

[DEFAULT] enabled_apis = osapi_compute,metadata transport_url = rabbit://rabbitmq:123456@controller:5672 my_ip = 192.168.10.10 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver

第8步,修改“[vnc]”部分,配置VNC连接模式。

[vnc] enabled = true server_listen = $my_ip server_proxyclient_address = $my_ip 初始化Nova的数据库

初始化“nova_api”数据库。 第1步,初始化“nova_api”数据库。

su nova -s /bin/sh -c "nova-manage api_db sync"

第2步,创建“cell1”单元,该单元将使用“nova”数据库。

su nova -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1"

第3步,映射“nova”到“cell0”数据库,使“cell0”的表结构和“nova”的保持一致。

su nova -s /bin/sh -c "nova-manage cell_v2 map_cell0"

第4步,初始化“nova”数据库,由于映射的存在,在“cell0”中同时创建相同数据表。

su nova -s /bin/sh -c "nova-manage db sync" 2、在控制节点安装与配置Nova

检查单元注册情况

nova-manage cell_v2 list_cells 3、Nova组件初始化 创建Nova用户并分配角色

第1步,导入环境变量模拟登录。

. admin-login

第2步,在OpenStack云计算平台中创建用户“nova”。

openstack user create --domain default --password 123456 nova

第3步,给用户“nova”分配“admin”角色

openstack role add --project project --user nova admin 创建Nova服务及端点

(1)创建服务 创建名为“nova”、类型为“compute”的服务。

openstack service create --name nova compute

(2)创建计算服务端点 OpenStack组件的服务端点有3种,分别对应Admin用户(admin)、内部组件(internal)、公众用户(public)服务 的地址。

第1步,创建公众用户访问的服务端点。

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

第2步,创建内部组件访问的服务端点。

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

第3步,创建Admin用户访问端点。

openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1 启动Nova服务

设置开机启动

systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy

立即启动

systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy 检测控制节点的Nova服务

查看端口占用情况8774和8775

netstat -nutpl|grep 8774 netstat -nutpl|grep 8775

查看计算服务列表

openstack compute service list 4、安装与配置Nova

在计算节点只需要安装Nova的计算模块“nova-compute”,按照以下方法进行安装

安装Nova软件包 yum -y install openstack-nova-compute 修改Nova配置文件

(1) 将配置文件去掉注释和空行 第1步,备份配置文件。

cp /etc/nova/nova.conf /etc/nova/nova.bak

第2步,去掉所有注释和空行,生成新的配置文件。

grep -Ev '^$|#' /etc/nova/nova.bak >/etc/nova/nova.conf

(2) 编辑新的配置文件 第1步,打开配置文件进行编辑。

vi /etc/nova/nova.conf

第2步,修改“[api]”与“[keystone_authtoken]”部分,实现与Keystone交互。

[api] auth_strategy = keystone [keystone_authtoken] auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = project username = nova password = 123456

第3步,修改“[placement]”部分,实现与Placement交互。

auth_url = http://controller:5000 auth_type = password project_domain_name = Default user_domain_name = Default project_name = project username = placement password = 123456 region_name = RegionOne

第4步,修改“[glance]”部分,实现与Glance交互。

api_servers = http://controller:9292

第5步,修改“[oslo_concurrency]”,配置锁路径。

lock_path = /var/lib/nova/tmp

第6步,修改“[DEFAULT]”部分,配置使用消息队列及防火墙等信息。

enabled_apis = osapi_compute,metadata transport_url = rabbit://rabbitmq:123456@controller:5672 my_ip = 192.168.10.20 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver

第7步,修改“[vnc]”部分,配置VNC连接模式。

[vnc] enabled = true server_listen = 0.0.0.0 server_proxyclient_address = $my_ip novncproxy_base_url = http://192.168.10.10:6080/vnc_auto.html

第8步,配置“[libvirt]”部分,设置虚拟化类型为QEMU。

[libvirt] virt_type = qemu 启动计算节点Nova服务

首先,设置开机启动服务。

systemctl enable libvirtd openstack-nova-compute

立即启动服务。

systemctl start libvirtd openstack-nova-compute 发现计算节点并检验服务

控制节点检查 (1)导入环境变量模拟登录

. admin-login

(2)发现新的计算节点

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

设置自动发现 第1步,打开配置文件,修改“[scheduler]”,设置每隔60s自动执行发现一次

vi /etc/nova/nova.conf [scheduler] discover_hosts_in_cells_interval = 60

第2步,重启“nova-api”服务,使修改过的配置文件生效。

systemctl restart openstack-nova-api 验证Nova服务(控制节点)

(1)查看计算服务列表

openstack compute service list

(2)查看所有OpenStack服务及端点列表

openstack catalog list

(3)用Nova状态检测工具检查

nova-status upgrade check


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3