关于OpenStack的组件之一Nova
Nova概念
OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。Nova是最核心的,一套虚拟化管理程序,可管理网络和存储。
nova这一组件包含了许多的小组件,其中有API Server (nova-api)、Message Queue (rabbit-mq server)、Compute Workers (nova-compute)、Network Controller (nova-network)、Scheduler (nova-scheduler)、Conductor(nova-conductor)。
nova-api是一个交互接口,管理者可以通过这个接口来管理内部基础设施,也可以通过这个接口向用户提供服务。当然基于web的管理也是通过这个接口,然后向消息队列发送消息,达到资源调度的功能。
Rabbit-mq server是计算资源中的一个消息队列,为各个组件传达消息实现资源调度。
nova-compute是用于处理管理实例生命周期。通过消息队列接收请求,并承担操作工作。
nova-network相当于云计算系统内部的一个路由器,他承担了IP地址的划分以及配置VLAN和安全组的划分。
nova-scheduler是一个拥有把nova-API调用映射为Open Stack功能的组件,会根据诸如CPU构架、可用域的物理距离、内存、负载等作出调度决定。
nova-conductor负责数据库的访问权限控制,避免nova-compute直接访问数据库。
综合对上面组件的介绍,可以看出Nova是一个非常重要的核心组件其功能覆盖了几乎所有的领域比如计算的控制器,用于管理用户的虚拟机实例,根据用户需求来实现对虚拟机的开关机、调配CPU、RAM等操作。
Nova系统架构
架构组成 特性
DB 用于数据存储的sql数据库
API 用于接收HTTP请求、转换命令、通过消息队列(相对于nova组件本身对内)或HTTP(对外)与其他组件通信的nova组件。
Scheduler 用于决定哪台计算节点承载计算实例的nova调度器
Network 管理IP转发、网桥或虚拟局域网的nova网络组件
Compute 管理虚拟机管理器与虚拟机之间通信的nova计算组件
Conductor 处理需要协调(构建虚拟机或调整虚拟机大小)的请求,或者处理对象转换
nova组件部署
ct部署
1.创建nova数据库,并执行授权操作(控制节点):
[root@ct ~]# mysql -uroot -p123456
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';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> show grants for nova;
+-----------------------------------------------------------------------------------------------------+
| Grants for nova@% |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'nova'@'%' IDENTIFIED BY PASSWORD '*B79B482785488AB91D97EAFCAD7BA8839EF65AD3' |
| GRANT ALL PRIVILEGES ON `nova`.* TO 'nova'@'%' |
| GRANT ALL PRIVILEGES ON `nova_api`.* TO 'nova'@'%' |
| GRANT ALL PRIVILEGES ON `nova_cell0`.* TO 'nova'@'%' |
+-----------------------------------------------------------------------------------------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]>
2.管理Nova用户及服务(控制节点):
首先创建nova用户:
[root@ct ~]# openstack user create --domain default --password NOVA_PASS nova
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | a9e183542388474aaf9b82b659654e26 |
| name | nova |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
[root@ct ~]#
然后创建nova服务,关联endpoint:
[root@ct ~]# openstack service