zoukankan      html  css  js  c++  java
  • Centos7安装部署openstack--nova计算服务(控制节点)

    一、概述

      使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。

      OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack

    组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

      OpenStack计算服务由下列组件所构成:

        nova-api 服务:接受并响应所有计算服务请求,管理虚拟机(云主机)生命周期。

        nova-api-metadata 服务:接受来自虚拟机发送的元数据请求。

                  nova-compute服务(多个):真正管理虚拟机(nova-compute调用libvirt)。

                  nova-scheduler服务:nova调度器(挑选出最合适的nova-compute来创建虚拟机)。

                  nova-conductor模块:帮助nova-compute代理修改数据库中虚拟机的状态。

          nova-cert模块:服务器守护进程向Nova Cert服务提供X509证书。用来为``euca-bundle-image``生成证书。仅仅是在EC2 API的请求中使用

        nova-network worker 守护进程:与``nova-compute``服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。

        nova-consoleauth 守护进程和nova-novncproxy 守护进程:web版的vnc来直接操作云主机。

        nova-spicehtml5proxy 守护进程:提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。

        nova-xvpvncproxy 守护进程:提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。

        nova-cert 守护进程:X509 证书。

                  nova客户端:用于用户作为租户管理员或最终用户来提交命令。

        队列:一个在守护进程间传递消息的中央集线器。

    二、安装并配置控制节点

      1、创建数据库

    mysql -u root -p                                                    登录数据库
    CREATE DATABASE nova_api;                                           创建数据库
    CREATE DATABASE nova;          
    GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost'           授权
      IDENTIFIED BY 'NOVA_DBPASS';
    GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' 
      IDENTIFIED BY 'NOVA_DBPASS';
    GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' 
      IDENTIFIED BY 'NOVA_DBPASS';
    GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' 
      IDENTIFIED BY 'NOVA_DBPASS';

      2、创建 nova 用户,给 nova 用户添加 admin 角色。

    [root@controller ~]# openstack user create --domain default --password NOVA_PASS nova
    [root@controller ~]# openstack role add --project service --user nova admin

      3、创建 nova 服务实体

    [root@controller ~]# openstack service create --name nova   --description "OpenStack Compute" compute
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | OpenStack Compute                |
    | enabled     | True                             |
    | id          | dd98c56c7ea948a7bfee86ed3a48bcdf |
    | name        | nova                             |
    | type        | compute                          |
    +-------------+----------------------------------+

      4、创建 Compute 服务 API 端点

    [root@controller ~]# openstack endpoint create --region RegionOne  compute public http://controller:8774/v2.1/%(tenant_id)s
    +--------------+-------------------------------------------+
    | Field        | Value                                     |
    +--------------+-------------------------------------------+
    | enabled      | True                                      |
    | id           | 8dc955bdeb554ecbbc4fead51ad77dee          |
    | interface    | public                                    |
    | region       | RegionOne                                 |
    | region_id    | RegionOne                                 |
    | service_id   | dd98c56c7ea948a7bfee86ed3a48bcdf          |
    | service_name | nova                                      |
    | service_type | compute                                   |
    | url          | http://controller:8774/v2.1/%(tenant_id)s |
    +--------------+-------------------------------------------+
    [root@controller ~]# openstack endpoint create --region RegionOne   compute internal http://controller:8774/v2.1/%(tenant_id)s
    +--------------+-------------------------------------------+
    | Field        | Value                                     |
    +--------------+-------------------------------------------+
    | enabled      | True                                      |
    | id           | 19d8e664c4b1434eafdb83fc5f72deec          |
    | interface    | internal                                  |
    | region       | RegionOne                                 |
    | region_id    | RegionOne                                 |
    | service_id   | dd98c56c7ea948a7bfee86ed3a48bcdf          |
    | service_name | nova                                      |
    | service_type | compute                                   |
    | url          | http://controller:8774/v2.1/%(tenant_id)s |
    +--------------+-------------------------------------------+
    [root@controller ~]# openstack endpoint create --region RegionOne  compute admin http://controller:8774/v2.1/%(tenant_id)s
    +--------------+-------------------------------------------+
    | Field        | Value                                     |
    +--------------+-------------------------------------------+
    | enabled      | True                                      |
    | id           | 8b301d9fe68c4486b1482a5e6d542da7          |
    | interface    | admin                                     |
    | region       | RegionOne                                 |
    | region_id    | RegionOne                                 |
    | service_id   | dd98c56c7ea948a7bfee86ed3a48bcdf          |
    | service_name | nova                                      |
    | service_type | compute                                   |
    | url          | http://controller:8774/v2.1/%(tenant_id)s |
    +--------------+-------------------------------------------+

      5、安装并配置组件

    yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler -y

      6、备份配置文件

    cp /etc/nova/nova.conf{,.bak}
    grep '^[a-z[]' /etc/nova/nova.conf.bak >/etc/nova/nova.conf

      7、编辑``/etc/nova/nova.conf``文件并完成下面的操作

    vim /etc/nova/nova.conf
    [DEFAULT]          
    ...
    enabled_apis = osapi_compute,metadata                                   在``[DEFAULT]``部分,只启用计算和元数据API
    
    [api_database]
    ...
    connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api       在``[api_database]``和``[database]``部分,配置数据库的连接
    
    [database]
    ...
    connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
    
    [DEFAULT]
    ...
    rpc_backend = rabbit
    
    [oslo_messaging_rabbit]
    ...
    rabbit_host = controller
    rabbit_userid = openstack
    rabbit_password = RABBIT_PASS                                             在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问,用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
    
    [DEFAULT]
    ...
    auth_strategy = keystone
    
    [keystone_authtoken]
    ...
    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    memcached_servers = controller:11211
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    project_name = service
    username = nova
    password = NOVA_PASS                                                       在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问,使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。
    
    [DEFAULT]
    ...
    my_ip = 10.0.0.11                                                          在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
    
    [DEFAULT]
    ...
    use_neutron = True
    firewall_driver = nova.virt.firewall.NoopFirewallDriver                    在 [DEFAULT] 部分,使能 Networking 服务,默认情况下,计算服务使用内置的防火墙服务。
    由于网络服务包含了防火墙服务,你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务 [vnc] ... vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip 在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 [glance] ... api_servers = http://controller:9292 在 [glance] 区域,配置镜像服务 API 的位置 [oslo_concurrency] ... lock_path = /var/run/nova 在 [oslo_concurrency] 部分,配置锁路径

      8、同步数据库

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

      9、启动服务

    # 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                         批量启动服务

      10、验证,用nova service-list命令查看,表里面为空,nova数据库中的service中也有数据的。

       注解:openstack在高版本里修复了网络传输包的一个bug,同时更低版本的也进行了改动,所以在配置过程中需要加一些额外的操作(改配置文件单位源码),其他都照旧,最后就可以配置nova成功。

    不论新旧版本都强制增加了cell和placement实例的应用,所以在问题中提及的报错其实是一个提示,配置过程中确实需要创建和实例化cell用户以及placement服务配置才能正常继续。

    三、解决遗留问题

      1、创建nova_cell0数据库

    [root@controller ~]# mysql -u root -p
    MariaDB [(none)]> CREATE DATABASE nova_cell0;
    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';

      2、创建 placement用户,给 placement用户添加 admin 角色。

    openstack user create --domain default --password PLACEMENT_PASS placement
    openstack role add --project service --user placement admin

      3、创建 placement 服务实体

    openstack service create --name placement --description "Placement API" placement
    openstack endpoint create --region RegionOne placement public http://controller:8778
    openstack endpoint create --region RegionOne placement internal http://controller:8778
    openstack endpoint create --region RegionOne placement admin http://controller:8778

      4、安装openstack-nova-placement-api服务

    yum install openstack-nova-placement-api -y

      5、修改配置文件/etc/nova/nova.conf

    [DEFAULT]
    # ...
    transport_url = rabbit://openstack:RABBIT_PASS@controller
    
    [placement]
    # ...
    os_region_name = RegionOne
    project_domain_name = Default
    project_name = service
    auth_type = password
    user_domain_name = Default
    auth_url = http://controller:35357/v3
    username = placement
    password = PLACEMENT_PASS

      6、创建配置文件/etc/httpd/conf.d/00-nova-placement-api.conf

    <Directory /usr/bin>
       <IfVersion >= 2.4>
          Require all granted
       </IfVersion>
       <IfVersion < 2.4>
          Order allow,deny
          Allow from all
       </IfVersion>
    </Directory>

      7、重启服务

     systemctl restart httpd

      8、同步数据库

    su -s /bin/sh -c "nova-manage api_db sync" nova
    
    su
    -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
    su
    -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova 109e1d4b-536a-40d0-83c6-5f121b82b650 su -s /bin/sh -c "nova-manage db sync" nova

    nova-manage cell_v2 list_cells
    +-------+--------------------------------------+
    | Name  | UUID                                 |
    +-------+--------------------------------------+
    | cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
    | cell0 | 00000000-0000-0000-0000-000000000000 |
    +-------+--------------------------------------+

      9、重启服务

    systemctl restart openstack-nova-api.service 
      openstack-nova-consoleauth.service openstack-nova-scheduler.service 
      openstack-nova-conductor.service openstack-nova-novncproxy.service

      10、再次查看

       终于成功!!!

      11、openstack-nova-api提供命令行服务,openstack-nova-novncproxy提供web版得vnc服务。

  • 相关阅读:
    Jmter组件执行顺序
    Win7X64位Seleniume+Eclipse+Pydev环境搭建
    软件测试自学指南---从入门到精通(转载)
    Python开发【第四篇】:Python基础之函数
    Python开发【第三篇】:Python基本数据类型
    Python开发【第二篇】:初识Python
    Python开发【第一篇】:目录
    个人作业3——个人总结(Alpha阶段)
    结对编程2——单元测试(201421123040,60,61)
    个人作业2——英语学习APP案例分析
  • 原文地址:https://www.cnblogs.com/aqicheng/p/13210108.html
Copyright © 2011-2022 走看看