计算服务Nova
使用OpenStack Compute来托管和管理云计算系统。 OpenStack Compute是基础架构即服务(IaaS)系统的主要部分。 主要模块用Python实现。
OpenStack Compute与OpenStack Identity交互以进行身份验证; 用于磁盘和服务器映像的OpenStack映像服务; 和OpenStack Dashboard用于用户和管理界面。
图像访问受项目和用户的限制; 配额是按项目限制的(例如,实例数)。 OpenStack Compute可以在标准硬件上水平扩展,并将图像下载到启动实例。

节点配置信息说明:

控制节点:controller: 
IP:192.168.164.128 
hostname&hosts:likeadmin

计算加点:Nova:

IP:192.168.164.129 
hostname&hosts:likenode

块存储节点:cinder:

IP:192.168.164.136 
hostname&hosts:likeblock

1. OpenStack计算服务由下列组件所构成:
``nova-api``服务
接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
``NOVA-API-metadata``服务
接受来自实例的元数据请求。 当您在具有nova-network安装的多主机模式下运行时,通常会使用nova-api-metadata服务。 有关详细信息,请参阅“OpenStack管理员指南”中的元数据服务。
``NOVA-API-metadata``服务
接受来自实例的元数据请求。 当您在具有nova-network安装的多主机模式下运行时,通常会使用nova-api-metadata服务。 有关详细信息,请参阅“OpenStack管理员指南”中的元数据服务。
``nova-compute``服务
一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。例如:
XenServer/XCP 的 XenAPI
KVM 或 QEMU 的 libvirt
VMware 的 VMwareAPI
过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。
nova-placement-api服务
跟踪每个提供商的库存和使用情况。
``NOVA-scheduler``服务
拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
``NOVA-conductor``模块
调解nova-compute服务与数据库之间的交互。它消除了nova-compute服务对云数据库的直接访问。 nova-conductor模块水平缩放。但是,请勿将其部署在运行nova-compute服务的节点上。有关更多信息,请参阅“配置参考指南”
nova-cert模块
服务器守护进程向Nova Cert服务提供X509证书。用来为``euca-bundle-image``生成证书。仅仅是在EC2 API的请求中使用
nova-consoleauth模块
为控制台代理提供的用户授权令牌。请参阅nova-novncproxy和nova-xvpvncproxy。必须运行此服务才能使控制台代理生效。您可以针对群集配置中的单个nova-consoleauth服务运行任一类型的代理。有关信息,请参阅关于nova-consoleauth。
nova-novncproxy模块
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
``NOVA-spicehtml5proxy``守护进程
提供一个代理,用于访问正在运行的实例,通过SPICE协议,支持基于浏览器的HTML5客户端。
nova-xvpvncproxy守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack的特定的Java的客户端。
队列
用于在守护进程之间传递消息的中央集线器。通常用RabbitMQ实现,也可以用另一个AMQP消息队列实现,比如ZeroMQ。
SQL数据库
存储构建时和运行时的状态,为云基础设施,包括有:
可用实例类型
使用中的实例
可用网络
项目
从理论上讲,OpenStack Compute可以支持SQLAlchemy支持的任何数据库。常见的数据库是用于测试和开发工作的SQLite3,MySQL,MariaDB和PostgreSQL。

2.安装并配置控制节点
注:这个部分将描述如何在控制节点上安装和配置 Compute 服务,即 nova
在安装和配置 Compute 服务前,你必须创建数据库服务的凭据以及 API endpoints。

为了创建数据库,必须完成这些步骤:

用数据库连接客户端以 root 用户连接到数据库服务器:
$ mysql -u root -p

1)创建计算服务器的nova_api, nova, and nova_cell0 数据库:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;

2)对数据库进行正确的授权:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'djl18001';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'djl18001';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'djl18001';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'djl18001';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'djl18001';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'djl18001';
用合适的密码代替 NOVA_DBPASS。此试验环境选用的是:djl18001作为密码,生成环境,请使用密文作为密码。

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| glance |
| information_schema |
| keystone |
| mysql |
| nova |
| nova_api |
| nova_cell0 |
| performance_schema |
+--------------------+
8 rows in set (0.00 sec)

2)获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
[root@likeadmin ~]# source /root/.admin-openrc

3)创建Compute服务凭据:
创建 nova 用户:
[root@likeadmin ~]# openstack user create --domain default --password-prompt nova
User Password: djl18001
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 42c406d7a7ed4784a08a6f2696c2db6c |
| name | nova |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
[root@likeadmin ~]#
给 nova 用户添加 admin 角色:
[root@likeadmin ~]# openstack role add --project service --user nova admin
创建 nova 服务实体:
[root@likeadmin ~]# openstack service create --name nova \
> --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 4378f37a2c6a4f14b0123f2c9b46a9ec |
| name | nova |
| type | compute |
+-------------+----------------------------------+
[root@likeadmin ~]#

4)创建Compute API服务端点:
[root@likeadmin ~]# openstack endpoint create --region RegionOne \
> compute public http://likeadmin:8774/v2.1/%\(tenant_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | ea27f64912a3468f9c77df9298ae6fd7 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 4378f37a2c6a4f14b0123f2c9b46a9ec |
| service_name | nova |
| service_type | compute |
| url | http://likeadmin:8774/v2.1/%(tenant_id)s |
+--------------+------------------------------------------+
[root@likeadmin ~]# openstack endpoint create --region RegionOne \
> compute internal http://likeadmin:8774/v2.1/%\(tenant_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 829019c5bfe94637af4876725213690e |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 4378f37a2c6a4f14b0123f2c9b46a9ec |
| service_name | nova |
| service_type | compute |
| url | http://likeadmin:8774/v2.1/%(tenant_id)s |
+--------------+------------------------------------------+
[root@likeadmin ~]# openstack endpoint create --region RegionOne \
> compute admin http://likeadmin:8774/v2.1/%\(tenant_id\)s
+--------------+------------------------------------------+
| Field | Value |
+--------------+------------------------------------------+
| enabled | True |
| id | 2d3ee70a3c4c4cb399ba3a689a7fdf82 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 4378f37a2c6a4f14b0123f2c9b46a9ec |
| service_name | nova |
| service_type | compute |
| url | http://likeadmin:8774/v2.1/%(tenant_id)s |
+--------------+------------------------------------------+
[root@likeadmin ~]#
[root@likeadmin ~]# openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------------------+
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------------------+
| 0f5af5f9e444442eb07ad78fe1314705 | RegionOne | keystone | identity | True | internal | http://likeadmin:5000/v3/ |
| 2d3ee70a3c4c4cb399ba3a689a7fdf82 | RegionOne | nova | compute | True | admin | http://likeadmin:8774/v2.1/%(tenant_id)s |
| 36495ec2b54a4a07a8cd83745a3a19b8 | RegionOne | glance | image | True | public | http://likeadmin:9292 |
| 59ee7ce4b50d4142b5a66c8ab3c8e01a | RegionOne | glance | image | True | admin | http://likeadmin:9292 |
| 829019c5bfe94637af4876725213690e | RegionOne | nova | compute | True | internal | http://likeadmin:8774/v2.1/%(tenant_id)s |
| 8a1893ba8035440f8e4a7bdc440ffef8 | RegionOne | glance | image | True | internal | http://likeadmin:9292 |
| b572d79c6f5c47a789b258ec7474599c | RegionOne | keystone | identity | True | public | http://likeadmin:5000/v3/ |
| ea27f64912a3468f9c77df9298ae6fd7 | RegionOne | nova | compute | True | public | http://likeadmin:8774/v2.1/%(tenant_id)s |
| ed967ed76c6141cba66f6f20b9b9c5f2 | RegionOne | keystone | identity | True | admin | http://likeadmin:35357/v3/ |
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------------------+
[root@likeadmin ~]#

5)使用您选择的PLACEMENT_PASS创建一个Placement服务用户:
[root@likeadmin ~]# openstack user create --domain default --password-prompt placement
User Password: djl18001
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 4025c84b6bfe4470bcb8d66d530fce62 |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
[root@likeadmin ~]#
使用admin角色将Placement用户添加到服务项目:
[root@likeadmin ~]# openstack role add --project service --user placement admin

6)在服务目录中创建Placement API条目:
[root@likeadmin ~]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | a9d8071fc5024ea7a160ffdf2b2629cd |
| name | placement |
| type | placement |
+-------------+----------------------------------+
[root@likeadmin ~]#

7)创建Placement API服务端点:
[root@likeadmin ~]# openstack endpoint create --region RegionOne placement public http://likeadmin:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 5e5a460effe3446bbad3d434a0c128c4 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a9d8071fc5024ea7a160ffdf2b2629cd |
| service_name | placement |
| service_type | placement |
| url | http://likeadmin:8778 |
+--------------+----------------------------------+
[root@likeadmin ~]# openstack endpoint create --region RegionOne placement internal http://likeadmin:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 94c895aac78141f8a397a1c0f80f8ea1 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a9d8071fc5024ea7a160ffdf2b2629cd |
| service_name | placement |
| service_type | placement |
| url | http://likeadmin:8778 |
+--------------+----------------------------------+
[root@likeadmin ~]# openstack endpoint create --region RegionOne placement admin http://likeadmin:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | e54a008fe46741588458cf66fd67c31f |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a9d8071fc5024ea7a160ffdf2b2629cd |
| service_name | placement |
| service_type | placement |
| url | http://likeadmin:8778 |
+--------------+----------------------------------+
[root@likeadmin ~]#

3。安全并配置组件
1)安装软件包:
#yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
2)编辑``/etc/nova/nova.conf``文件并完成下面的操作:
在``[DEFAULT]``部分,只启用计算和元数据API:
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

在``[api_database]``和``[database]``部分,配置数据库的连接:
[api_database]
# ...
connection = mysql+pymysql://nova:djl18001@likeadmin/nova_api

[database]
# ...
connection = mysql+pymysql://nova:djl18001@likeadmin/nova
用你为 Compute 数据库选择的密码来代替 NOVA_DBPASS。

在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
[DEFAULT]
# ...
transport_url = rabbit://openstack:djl18001@likeadmin
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

In the [api] and [keystone_authtoken] sections, configure Identity service access:
[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_uri = http://likeadmin:5000
auth_url = http://likeadmin:35357
memcached_servers = likeadmin:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = djl18001
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。

在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
[DEFAULT]
# ...
my_ip = 192.168.164.128

在 ``[DEFAULT]``部分,启用网络服务支持:
[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
注解:默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务

在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :
[vnc]
enabled = true
# ...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

在 [glance] 区域,配置镜像服务 API 的位置:
[glance]
# ...
api_servers = http://likeadmin:9292

在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

在[placement]部分中,配置Placement API:
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://likeadmin:35357/v3
username = placement
password = djl18001
将PLACEMENT_PASS替换为您在Identity服务中为放置用户选择的密码。 注释掉[placement]部分中的任何其他选项。

由于 packaging bug,您必须通过将以下配置添加到/etc/httpd/conf.d/00-nova-placement-api.conf来启用对Placement API的访问:
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>

Restart the httpd service:
# systemctl restart httpd

3)填充nova-api数据库:
# su -s /bin/sh -c "nova-manage api_db sync" nova

4)注册cell0数据库:
[root@likeadmin ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
5)创建cell1小区:
[root@likeadmin ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
1a73b8c8-e82f-4378-9323-a34fe771904b
6)Populate the nova database:
[root@likeadmin ~]# su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
result = self._query(query)
[root@likeadmin ~]#

7)验证nova cell0和cell1是否正确注册:
[root@likeadmin ~]# nova-manage cell_v2 list_cells
+-------+--------------------------------------+
| Name | UUID |
+-------+--------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 |
| cell1 | 1a73b8c8-e82f-4378-9323-a34fe771904b |
+-------+--------------------------------------+
[root@likeadmin ~]#

4.完成安装
启动 Compute 服务并将其设置为随系统启动:

# systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service

注:至此在控制节点上部署计算服务Nova已完成

OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 5.在控制节点上部署计算服务Nova的更多相关文章

  1. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 3.安装配置OpenStack认证服务(keystone)

    节点配置信息说明: 控制节点:controller: IP:192.168.164.128 hostname&hosts:likeadmin 计算加点:Nova: IP:192.168.164 ...

  2. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 1.操作系统环境配置

    1.OpenStack示例的架构介绍 1.1 各节点介绍 (1)控制节点(controller)控制节点(controller)上运行身份服务,镜像服务,计算节点管理,网络管理,各种网络代理和仪表板. ...

  3. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 8.仪表盘 Dashboard(horizon)安装配置

    仪表盘Dashboard(horizon)是一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务.这个部署示例使用的是 Apache Web 服务器. 节点配置信息说明 ...

  4. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —9.块存储服务(cinder)部署配置

    块存储服务部署相关块存储服务(cinder)为实例提供块存储.存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的.还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等.典型 ...

  5. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —7.网络服务Neutron配置

    网络服务Neutron本章节结束如何安装并配置网络服务(neutron)采用:ref:`provider networks <network1>`或:ref:`self-service n ...

  6. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 6.在计算节点上安装并配置计算服务Nova

    安装和配置计算节点这个章节描述如何在计算节点上安装和配置计算服务. 计算服务支持几种不同的 hypervisors.为了简单起见,这个配置在计算节点上使用 :KVM <kernel-based ...

  7. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 4.镜像服务(glance)

    节点配置信息说明: 控制节点:controller: IP:192.168.164.128 hostname&hosts:likeadmin 计算加点:Nova: IP:192.168.164 ...

  8. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 2.安装配置OpenStack基础服务

    节点配置情况说明: 控制节点:controller: IP:192.168.164.128 hostname&hosts:likeadmin 计算加点:Nova: IP:192.168.164 ...

  9. OpenStack Train版-12.创建虚拟网络并启动实例(控制节点)

    使用VMware虚拟机创建网络可能会有不可预测到的故障,可以通过dashboard界面,管理员创建admin用户的网络环境 1.第一种: 建立公共提供商网络在admin管理员用户下创建 source ...

随机推荐

  1. GDI+_Png图片浏览器

    '昨天看见有人问VB6支不支持PNG,刚好我正在研究GDI+,于是做了这个演示程序.'演示下载地址:百度网盘|'下面为设计界面和运行效果截图 ' 千万别喷界面丑. /无奈 .

  2. R语言-增加图例

    legend()函数 > plot(rain$Tokyo,type="l",col="red", + ylim=c(0,300), + main=&quo ...

  3. C++ 11 创建和使用 unique_ptr

    unique_ptr 不共享它的指针.它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法.只能移动unique_ptr.这意味着,内存资 ...

  4. 安全运维之:Linux后门入侵检测工具的使用

    安全运维之:Linux后门入侵检测工具的使用 https://blog.csdn.net/exitgogo/article/details/39547113

  5. Chrome浏览器 调试工具 vue-devtools 的安装和使用

    https://www.cnblogs.com/yuqing6/p/7440549.html

  6. JS数组存储(两个数组相等,一个改变,另一个跟着改变)

    数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的实际的数组元素被存储在堆(heap)内存中:数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中. ...

  7. HDU6030 Happy Necklace(递推+矩阵快速幂)

    传送门:点我 Little Q wants to buy a necklace for his girlfriend. Necklaces are single strings composed of ...

  8. TZOJ 4244 Sum(单调栈区间极差)

    描述 Given a sequence, we define the seqence's value equals the difference between the largest element ...

  9. stark组件开发之列表页面应用示例

    已经解决的,自定义的扩展函数,功能.但是 不可能返回. 一个 固定的页面把!  应该是,点击那条 记录之后的编辑, 就会跳转到相应的,编辑页面.所以 这个标签的  <a href="/ ...

  10. Jmeter获取redis数据

    背景:jmeter写注册登录接口时,需要获取验短信验证码,一般都是存在数据库,但我们的开发把验证码存到redis里面了 步骤:1.写个redis工具类 2.打成jar包,导入jmeter lib\ex ...