• OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 5.在控制节点上部署计算服务Nova


    计算服务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已完成

  • 相关阅读:
    面向对象(Object Oriented)
    文件操作
    函数
    dict--字典
    list--列表
    Ubuntu_18.04安装网易云音乐
    初识数据类型
    css控制内容显示,自动加"..."
    css固定元素位置(fixed)
    解决IE下iframe默认有白色背景的bug
  • 原文地址:https://www.cnblogs.com/likezn/p/10789201.html
Copyright © 2020-2023  润新知