天天看点

OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署

目录

  • 一、概述
  • 二、Nova系统架构
    • 一、API
    • 二、Scheduler
      • 一、选择计算节点
      • 二、调度器类型
      • 三、过滤器
    • 三、compute
    • 四、conductor
    • 五、PlacementAPl
    • 六、cell架构
  • 三、部署
    • 一、Placement
      • 一、创建数据库
      • 二、创建placement用户和API的endpoint
    • 二、Nova
      • 一、创建Nova数据库
      • 二、管理Nova用户和服务(控制节点)
      • 三、配置计算节点Nova服务
      • 四、控制节点

一、概述

1、计算服务是openstack最核心的服务之一,负责维护和管理云环境的计算资源,它在openstack项目中代号是nova。

2、Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理器)进行交互。所有的计算实例(虚拟服务器)由Nova进行生命周期的调度管理(启动、挂起、停止、删除等)。

3、Nova需要keystone、glance、neutron、cinder和swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等。

二、Nova系统架构

1、Nova是有多个服务器进程组成,每个进程执行不同的功能。

2、DB:用于数据存储的sql数据库。

3、API:用于接收HTTP请求、转换命令、通过消息队列或HTTP与其他组件通信的nova组件。

4、Scheduler:用于决定哪台计算节点承载计算实例的nova调度器。

5、Network:管理lP转发、网桥或虚拟局域网的nova网络组件。

6、Compute:管理虚拟机管理器与虚拟机之间通信的nova计算组件。

7、Conductor:处理需要协调(构建虚拟机或调整虚拟机大小)的请求,或者处理对象转换。

一、API

1、接收、响应OpenStack内部请求、还会做为对接OpenStack外部服务的主要接口。

2、nova-api上可查询其他服务的API位置(URL)。

3、Nova-api对接收到的HTTPAPI请求做以下处理:

① 接受请求:检查客户端传入的参数是否合法有效。

② 处理请求分发任务:调用nova其他服务来处理客户端HTTP请求。

③ 回复请求:格式化nova其他子服务返回结果并返回给客户端。

二、Scheduler

一、选择计算节点

1、Scheduler可译为调度器,由nova-scheduler服务实现,主要解决的是如何选择在哪个计算节点上启动实例的问题。

2、Nova-scheduler服务会从队列中接收一个虚拟机实例的请求,通过读取数据库的内容,从可用资源池中选择最合适的计算节点来创建新的虚拟机实例。

3、根据客户的请求Scheduler会通过预选和优选,来选择在最优计算杰斯安上启动实例。

① 预选:过滤不符合客户要求的计算节点

② 优选:预选之后,对剩余的计算节点资源进行函数及权重的运算,得到最适合启动实例的计算节点。

二、调度器类型

随机调度器(chance scheduler):从所有正常运行nova-compute服务的节点中随机选择。

随机调度器(chance scheduler):从所有正常运行nova-compute服务的节点中随机选择。

缓存调度器(caching scheduler):可看作随机调度器的一种特殊类型,在随机调度的基础上将主机资源信息缓存在本地内存中,然后通过后台的定时任务定时从数据库中获取最新的主机资源信息。

三、过滤器

当过滤调度器需要执行调度操作时,会让过滤器对计算节点进行判断,返回True或False。
过滤调度器将按照列表中的顺序一次进行过滤。
           

再审过滤器(RetryFilter)

主要作用是过滤掉之前已经调度过的节点。如A、B、C都通过了过滤,A权重最大被选中执行操作,由于某种原因,操作在A上失败了。Nova-filter将重新执行过滤操作,那么此时A就被会RetryFilter直接排除,以免再次失败。

可用区域过滤器(AvailabilityZoneFilter)

为提高容灾性并提供隔离服务,可以将计算节点划分到不同的可用区域中。Openstack默认有一个命名为nova的可用区域,所有的计算节点初始是放在nova区域中的。用户可以根据需要创建自己的一个可用区域。创建实例时,需要指定将实例部署在哪个可用区域中。Nova-scheduler执行过滤操作时,会使用AvailabilityZoneFilter不属于指定可用区域计算节点过滤掉。

内存过滤器(RamFilter)

根据可用内存来调度虚拟机创建,将不能满足实例类型内存需求的计算节点过滤掉,但为了提高系统资源利用率,Openstack在计算节点的可用内存时允许超过实际内存大小,超过的程度是通过nova.conf配置文件中。

硬盘调度器(DiskFilter)

根据磁盘空间来调度虚拟机创建,将不能满足类型磁盘需求的计算节点过滤掉。磁盘同样允许超量,超量值可修改nova.conf中disk_allocation_ratio参数控制,默认值是1.0。

核心过滤器(CoreFilter)

根据可用CPU核心来调度虚拟机创建,将不能满足实例类型vCPU需求的计算节点过滤掉。vCPU也允许超量,超量值是通过修改nova.conf中cpu_allocation_ratio参数控制,默认值是16。

计算过滤器(ComputeFilter)

保证只有nova-compute服务正常工作的计算节点才能被nova-scheduler调度,它是必选的过滤器。

计算能力过滤器(ComputeCapablilitiesFilter)

根据计算节点的特性来过滤,如x86_64和ARM架构的不同节点,要将实例的不同节点类型进行分配。

镜像属性过滤器(lmagePropertiesFilter)

根据所选镜像的属性来筛选匹配的计算节点。通过元数据来指定其属性。如希望镜像只运行在KVM的Hypervisor上,可以通过Hypervisor Type属性来指定。

三、compute

1、获取虚拟化资源(以不同驱动对接不同虚拟化技术资源。

2、负责具体管理实例的操作,如何获取计算节点资源信息,借助于vmm中libvirt工具来获得宿主机资源的信息,然后返回到自己的数据库中。

3、通过Driver(驱动)架构支持多种Hypervisor虚拟机管理器

① 面对多种Hypervisor,nova-compute为这些Hypervisor定义统一的接口。

② Hypervisor只需要实现这些接口,就可以Driver的形式即插即用到OpenStack系统中。

4、定期向OpenStack报告计算节点的状态

① 每隔一段时间,nova-compute就会报告当前计算节点的资源使用情况和nova-compute服务状态。

② nova-compute是通过Hypervisor的驱动获取这些信息的。5、实现虚拟机实例生命周期的管理

① OpenStack对虚拟机实例最主要的操作都是通过nova-compute实现的。创建、关闭、重启、挂起、恢复、中止、调整大小、迁移、快照。

四、conductor

1、nova-conductor模块实现|旨在为数据库的访问提供一层安全保障Nova-conductor作为nova-compute服务与数据库之间交互的中介,避免了直接访问由nova-compute服务创建对接数据库。

2、Nova-compute访问数据库的全部操作都改到nova-conductor中,nova-conductor作为对数据库操作的一个代理,而且nova-conductor是部署在控制节点上的。

3、Nova-conductor有助于提高数据库的访问性能,nova-compute可以创建多个线程使用远程过程调用(RPC)访问nova-conductor。

4、在一个大规模的openstack部署环境里,管理员可以通过增加nova-conductor的数量来应付日益增长的计算。

五、PlacementAPl

1、以前对资源的管理全部由计算节点承担,在统计资源使用情况时,只是简单的将所有计算节点的资源情况累加起来,但是系统中还存在外部资源,这些资源由外部系统提供。如ceph、nfs等提供的存储资源等。面对多种多样的资源提供者,管理员需要统一的、简单的管理接口来统计系统中资源使用情况。

2、PlacementAPI由nova-placement-api服务来实现,旨在追踪记录资源提供者的目录和资源使用情况。

3、被消费的资源类型是按类进行跟踪的。如计算节点类、共享存储池类、IP地址类等。

六、cell架构

1、Cell可译为单元。为支持更大规模的部署,openstack较大的nova集群分成小的单元,每个单元都有自己的消息队列和数据库,可以解决规模增大时引起的瓶颈问题。在Cell中,Keystone、Neutron、Cinder、Glance等资源是共享的。

2、nova_cell0数据库的模式与nova一样,主要用途就是当实例调度失败时,实例的信息不属于任何一个Cell,因而存放到nova_cellO数据库中。

三、部署

一、Placement

一、创建数据库

[[email protected] ~]# mysql -uroot -pabc123
MariaDB [(none)]> CREATE DATABASE placement; #创建Placement数据库
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'PLACEMENT_DBPASS'; #给本地来源授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'PLACEMENT_DBPASS'; #给远程所有来源授权
MariaDB [(none)]> flush privileges; #刷新权限
MariaDB [(none)]> show grants for placement; #查询权限
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署

二、创建placement用户和API的endpoint

1、创建placement用户
[[email protected] ~]# openstack user create --domain default --password PLACEMENT_PASS placement
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
2、创建一个placement服务,服务类型为placement
[[email protected] ~]# openstack role add --project service --user placement admin
           
3、创建一个placement服务,服务类型为placement
[[email protected] ~]# openstack service create --name placement --description "Placement API" placement
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
4、注册API端口到placement的service中;注册的信息会写入到mysql中
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
5、安装placement服务
[[email protected] ~]# yum -y install openstack-placement-api
           
6、 修改placement配置文件
[[email protected] ~]# cp /etc/placement/placement.conf{,.bak} #备份 
[[email protected] ~]# grep -Ev '^$|#' /etc/placement/placement.conf.bak > /etc/placement/placement.conf #去除以#或$开头的行
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf placement_database connection mysql+pymysql://placement:[email protected]/placement
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf api auth_strategy keystone
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_url  http://ct:5000/v3 #指定keystone地址
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken memcached_servers ct:11211 #session信息是缓存放到了memcached中
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_type password
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken project_name service
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken username placement
[[email protected] ~]# openstack-config --set /etc/placement/placement.conf keystone_authtoken password PLACEMENT_PASS
           

查看配置文件修改情况

OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
7、导入数据库
[[email protected] ~]# su -s /bin/sh -c "placement-manage db sync" placement
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
8、修改Apache配置文件
[[email protected] ~]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# vim 00-placement-api.conf #安装完placement会自动创建此文件
##在配置文件最后添加
<Directory /usr/bin>			#此处是bug,必须添加下面的配置来启用对placement api的访问,否则在访问apache的
<IfVersion >= 2.4>				#api时会报403;添加在文件的最后即可
	Require all granted
</IfVersion>
<IfVersion < 2.4>				#apache版本;允许apache访问/usr/bin目录;否则/usr/bin/placement-api将不允许被访问
	Order allow,deny				
	Allow from all			#允许apache访问
</IfVersion>
</Directory>
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
[[email protected] conf.d]# systemctl restart httpd
[[email protected] conf.d]# netstat -natp | grep 8778
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
9、测试
##curl测试
[[email protected] conf.d]# curl ct:8778
{"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]}

##检查placement状态
[[email protected] conf.d]# placement-status upgrade check
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署

二、Nova

一、创建Nova数据库

[[email protected] ~]# mysql -uroot -pabc123
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;
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署

二、管理Nova用户和服务(控制节点)

1、创建Nova用户
[[email protected] ~]# openstack user create --domain default --password NOVA_PASS nova
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | ddfeb97153a0480680ab5e3b22c33110 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[[email protected] ~]# openstack role add --project service --user nova admin #把nova用户添加到service项目,拥有admin权限
           
2、创建Nova服务
[[email protected] ~]# openstack service create --name nova --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 19125f1b67704ec08e5b800454170de8 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
           
3、给Nova服务关联endpoint(端点)
[[email protected] ~]# openstack endpoint create --region RegionOne compute public http://ct:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 50ffd3338345420295b115fa35d22998 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 19125f1b67704ec08e5b800454170de8 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://ct:8774/v2.1              |
+--------------+----------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne compute internal http://ct:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | c340478420ce49c98562dec7a8a3d2c2 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 19125f1b67704ec08e5b800454170de8 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://ct:8774/v2.1              |
+--------------+----------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne compute admin http://ct:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 6c22653e46a346738917c9e3efee85b7 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 19125f1b67704ec08e5b800454170de8 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://ct:8774/v2.1              |
+--------------+----------------------------------+
           
4、安装Nova组件
[[email protected] ~]# yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
           
5、修改Nova配置文件
[[email protected] ~]# cp -a /etc/nova/nova.conf{,.bak} #备份
[[email protected] ~]# grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf #将以$和#的行过滤
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.211.10
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:[email protected]
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:[email protected]/nova_api
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:[email protected]/nova
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement_database connection mysql+pymysql://placement:[email protected]/placement
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc enabled true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_listen ' $my_ip'
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address ' $my_ip'
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement username placement
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

##查看配置文件
[[email protected] ~]# cat /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata #指定支持的api类型
my_ip = 192.168.211.10 #定义本地IP
use_neutron = true #通过neutron获取IP地址
firewall_driver = nova.virt.firewall.NoopFirewallDriver 
transport_url = rabbit://openstack:[email protected] #指定连接的rabbitmq
[api]
auth_strategy = keystone #指定使用keystone认证
[api_database]
connection = mysql+pymysql://nova:[email protected]/nova_api
[barbican]
[cache]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
connection = mysql+pymysql://nova:[email protected]/nova
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://ct:9292
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken] #配置keystone的认证信息
auth_url = http://ct:5000/v3 #到此url去认证
memcached_servers = ct:11211 #memcache数据库地址:端口
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
[libvirt]
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency] #指定锁路径
lock_path = /var/lib/nova/tmp #锁的作用是创建虚拟机时,在执行某个操作的时候,需要等此步骤执行完后才能执行下一个步骤,不能并行执行,保证操作是一步一步的执行
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://ct:5000/v3
username = placement
password = PLACEMENT_PASS
[powervm]
[privsep]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen =  $my_ip #指定vnc的监听地址
server_proxyclient_address =  $my_ip #server的客户端地址为本机地址;此地址是管理网的地址
[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]


[placement_database]
connection = mysql+pymysql://placement:[email protected]/placement
           
6、初始化数据库
[[email protected] ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[[email protected] ~]# mysql -uroot -pabc123
MariaDB [(none)]> use nova_api
MariaDB [nova_api]> show tables;
+------------------------------+
| Tables_in_nova_api           |
+------------------------------+
| aggregate_hosts              |
| aggregate_metadata           |
| aggregates                   |
| allocations                  |
| build_requests               |
| cell_mappings                |
| consumers                    |
| flavor_extra_specs           |
| flavor_projects              |
| flavors                      |
| host_mappings                |
| instance_group_member        |
| instance_group_policy        |
| instance_groups              |
| instance_mappings            |
| inventories                  |
| key_pairs                    |
| migrate_version              |
| placement_aggregates         |
| project_user_quotas          |
| projects                     |
| quota_classes                |
| quota_usages                 |
| quotas                       |
| request_specs                |
| reservations                 |
| resource_classes             |
| resource_provider_aggregates |
| resource_provider_traits     |
| resource_providers           |
| traits                       |
| users                        |
+------------------------------+
32 rows in set (0.001 sec)
           
7、注册cell0数据库
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova #创建cell1单元格
48dd890c-f940-4e4d-80cd-28a0e4d4e8e6
[[email protected] ~]# su -s /bin/sh -c "nova-manage db sync" nova #初始化nova数据库;可以通过 /var/log/nova/nova-manage.log 日志判断是否初始化成功
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova #验证
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
8、启动服务
[[email protected] ~]# systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service #设置开机自启 
[[email protected] ~]# systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service #启动服务
           
9、验证
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署

三、配置计算节点Nova服务

c1/c2配置一样

1、安装nova-compute组件
[[email protected] ~]# yum -y install openstack-nova-compute
           
2、修改配置文件
[[email protected] ~]# cp -a /etc/nova/nova.conf{,.bak} 
[[email protected] ~]# grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:[email protected]
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.211.20
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc enabled true
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address ' $my_ip'
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://192.168.211.20:6080/vnc_auto.html
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement project_name service
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_type password
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement username placement
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS
[[email protected] ~]# openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu

#查看配置文件
[[email protected] ~]# cat /etc/nova/nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:[email protected]
my_ip = 192.168.211.20
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[api_database]
[barbican]
[cache]
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
[devices]
[ephemeral_storage_encryption]
[filter_scheduler]
[glance]
api_servers = http://ct:9292
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_authtoken]
auth_url = http://ct:5000/v3
memcached_servers = ct:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
[libvirt]
virt_type = qemu
[metrics]
[mks]
[neutron]
[notifications]
[osapi_v21]
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://ct:5000/v3
username = placement
password = PLACEMENT_PASS
[powervm]
[privsep]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_dynamic_auth]
[vmware]
[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address =  $my_ip
novncproxy_base_url = http://192.168.211.20:6080/vnc_auto.html
[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]
           
3、开启服务
[[email protected] ~]# systemctl enable libvirtd.service openstack-nova-compute.service
[[email protected] ~]# systemctl start libvirtd.service openstack-nova-compute.service
           

四、控制节点

1、查看compute节点是否注册到controller上,通过消息队列;需要在controller节点执行
[[email protected] ~]# openstack compute service list --service nova-compute
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
2、扫描当前openstack中有哪些计算节点可用,发现后会把计算节点创建到cell中,后面就可以在cell中创建虚拟机;相当于openstack内部对计算节点进行分组,把计算节点分配到不同的cell中
[[email protected] ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
3、修改控制端nova的主配置文件
[[email protected] ~]# vim /etc/nova/nova.conf
discover_hosts_in_cells_interval = 300 #每300秒扫描一次
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
[[email protected] ~]# systemctl restart openstack-nova-api.service
           
4、验证计算节点
[[email protected] ~]# openstack compute service list #检查 nova 的各个服务是否都是正常,以及 compute 服务是否注册成功
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
[[email protected] ~]# openstack catalog list #查看各个组件的 api 是否正常
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
[[email protected] ~]# openstack image list #查看是否能够拿到镜像
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署
[[email protected] ~]# nova-status upgrade check #查看cell的api和placement的api是否正常,只要其中一个有误,后期无法创建虚拟机
           
OpenStack之Nova(T版)一、概述二、Nova系统架构三、部署