snake_l 发表于 2017-6-24 23:12:47

openstack-ocata-计算服务4

一、计算服务概览
      使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。
    OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

    OpenStack计算服务由下列组件所构成:
      nova-api 服务
            接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
      nova-api-metadata 服务
            接受来自虚拟机发送的元数据请求。nova-api-metadata服务一般在安装nova-network服务的多主机模式下使用。更详细的信息,请参考OpenStack管理员手册中的链接`Metadata service <http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service>`__ in the OpenStack Administrator Guide。
      nova-compute服务
            一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。
            例如:
            XenServer/XCP 的 XenAPI
            KVM 或 QEMU 的 libvirt
            VMware 的 VMwareAPI
            过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。
      nova-placement-api 服务
            跟踪每个提供者的库存和使用情况。see Placement API。
      nova-scheduler服务
            拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
      nova-conductor模块
            媒介作用于nova-compute服务与数据库之间。它排除了由nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute服务的主机节点上。参考Configuration Reference Guide <http://docs.openstack.org/mitaka/config-reference/compute/conductor.html> 。
      nova-cert模块
            服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。仅仅是在EC2 API的请求中使用
      nova-consoleauth 守护进程
            授权控制台代理所提供的用户令牌。详情可查看``nova-novncproxy``和 nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。在集群配置中你可以运行二者中任一代理服务而非仅运行一个nova-consoleauth服务。更多关于nova-consoleauth的信息,请查看`About nova-consoleauth <http://docs.openstack.org/admin-guide/compute-remote-console-access.html#about-nova-consoleauth>。
      nova-novncproxy 守护进程
            提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
      nova-spicehtml5proxy 守护进程
            提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
      nova-xvpvncproxy 守护进程
            提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。
      The queue队列
             守护进程间传递信息的中心。通常用RabbitMQ实现,也可以使用另一个AMQP消息队列来实现,比如ZeroMQ。
      SQL database (SQL数据库)
            存储构建时和运行时的状态,为云基础设施,包括有:
                可用实例类型
                使用中的实例
                可用网络
                项目
            理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。
二、 安装并配置控制节点
    这个部分将描述如何在控制节点上安装和配置 Compute 服务,即 nova。
    1. 先决条件
    在安装和配置 Compute 服务前,你必须创建数据库服务的凭据以及 API endpoints。
      ①为了创建数据库,必须完成这些步骤:
      mysql -u root -p
      create database nova_api;
      create database nova;
      create database nova_cell0;
      grant all privileges on nova_api.* to 'nova'@'localhost' identified by 'nova';
      grant all privileges on nova_api.* to 'nova'@'%' identified by 'nova';
      grant all privileges on nova.* to 'nova'@'localhost' identified by 'nova';
      grant all privileges on nova.* to 'nova'@'%' identified by 'nova';
      grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by 'nova';
      grant all privileges on nova_cell0.* to 'nova'@'%' identified by 'nova';
      flush privileges ;
      exit


      ②获得admin凭证来获取只有管理员能执行的命令的访问权限
      . admin-openrc
      ③创建计算服务凭证
      创建nova用户:
      openstack user create --domain default --password-prompt nova


      给nova用户添加 admin 角色:
      openstack role add --project service --user nova admin
      创建nova服务实体
      openstack service create --name nova --description "OpenStack Computr" compute


      ④创建计算API服务端点
      openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1


      openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1


      openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1


      ⑤创建placement service的一个用户placement
      openstack user create --domain default --password-prompt placement


      ⑥增加placement用户到service project和admin角色
      openstack role add --project service --user placement admin
      ⑦创建placement API服务目录
      openstack service create --name placement --description "Placement API" placement


      ⑧创建placement API 服务端点
      openstack endpoint create --region RegionOne placement public http://http://controller:8778
      openstack endpoint create --region RegionOne placement internal http://controller:8778
      openstack endpoint create --region RegionOne placement admin http://controller:8778
   
  2. 安装并配置组件

      ①安装数据包
            yum install openstack-nova-api openstack-nova-conductor   openstack-nova-console openstack-nova-novncproxy   openstack-nova-scheduler openstack-nova-placement-api
      ②编辑/etc/nova/nova.conf文件完成以下操作。
            在部分下,只激活compute和metadata API
            
            enabled_apis = osapi_compute,metadata
            在和部分下,配置数据库连接
            
            connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
            
            connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
            在 “”部分,配置 “RabbitMQ” 消息队列访问:
            
            transport_url = rabbit://openstack:RABBIT_PASS@controller
            #RABBIT_PASS:也就是安装rabbitmq时候创建的openstack的用户名和密码

            在 “” 和 “” 部分,配置认证服务访问:
            
            auth_strategy = keystone
            
            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 部分,配置my_ip来使用控制节点的管理接口的IP 地址。
            
            my_ip = 10.0.0.11
            在 部分,激活支持Networking 服务:
            
            use_neutron = True
            firewall_driver = nova.virt.firewall.NoopFirewallDriver
            注意:
            默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用nova.virt.firewall.NoopFirewallDriver防火墙服务来禁用掉计算服务内置的防火墙服务。

            在部分,配置VNC代理使用控制节点的管理接口IP地址 :
            
            enabled = true
            vncserver_listen = $my_ip
            vncserver_proxyclient_address = $my_ip
            在 区域,配置镜像服务 API 的位置:
            
            api_servers = http://controller:9292
            在 部分,配置锁路径:
            
            lock_path = /var/lib/nova/tmp
            在部分,配置placement API:
               
            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
            由于数据包bug,必须启用访问位置API通过添加以下配置/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>
      ③填充nova-api数据库(同步compute数据库)
            su -s /bin/sh -c "nova-manage api_db sync" nova
      ④注册cell0数据库
            su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
      ⑤创建cell1 cell
            su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova 109e1d4b-536a-40d0-83c6-5f121b82b650
      ⑥填充nova数据库
             su -s /bin/sh -c "nova-manage db sync" nova



      ⑦核查nova cell0和cell1 是否注册成功
            nova-manage cell_v2 list_cells


    3. 完成安装
      启动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
三、 安装和配置一个计算节点
    本节描述如何安装和配置在一个计算节点的计算服务。服务支持多种虚拟机监控程序或vm部署实例。为简单起见,这个配置使用QEMU虚拟机监控程序在计算节点上通过KVM扩展,支持虚拟机的硬件加速。在传统硬件,这个配置使用通用QEMU虚拟机监控程序。您可以遵循这些指令和少量修改与额外的计算节点横向扩展您的环境。
    这部分假设您遵循本指南中的说明一步一步配置第一个计算节点。如果你想配置额外的计算节点,他们准备以类似的方式对第一个计算节点在示例架构部分。每个额外的计算节点需要一个唯一的IP地址。
    接下来操作在计算节点上操作
    1. 安装和配置组件
      ①安装数据包
             yum install openstack-nova-compute -y
      ②编辑/etc/nova/nova.conf文件完成以下操作。
            在部分,仅仅激活compute和metadata APIS:
            
            enabled_apis = osapi_compute,metadata
            在部分,配置RabbitMQ信息队列接入:
            
            transport_url = rabbit://openstack:RABBIT_PASS@controller
            在和部分,配置身份服务接入:
               
            auth_strategy = keystone
            
            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

            在部分,配置my_ip选项:(ip是计算节点的管理段ip:10.0.0.31)
               
            my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
            在部分,激活支持networking服务:
               
            use_neutron = True
            firewall_driver = nova.virt.firewall.NoopFirewallDriver
                  通知:
                  默认情况下,计算使用内部防火墙服务。因为网络包含防火墙服务,您必须使用nova.virt.firewall禁用防火墙计算服务 通过nova.virt.firewall.NoopFirewallDriver firewall driver

            在部分,激活和配置远程console接入:
            
            enabled = True
            vncserver_listen = 0.0.0.0
            vncserver_proxyclient_address = $my_ip
            novncproxy_base_url = http://controller:6080/vnc_auto.html
                  服务器组件监听所有IP地址和代理组件只监听管理界面计算节点的IP地址。基URL显示的位置你可以使用一个web浏览器来访问远程主机的实例计算节点。

            在部分,配置镜像服务的API位置:
            
            api_servers = http://controller:9292
            在部分,配置锁定路径:
            
            lock_path = /var/lib/nova/tmp
            在部分,配置placement API:
            
            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
    2. 完成安装
      ①确定您的计算节点支持虚拟机的硬件加速:
            egrep -c '(vmx|svm)' /proc/cpuinfo
            如果这个命令的返回值是1或者更大,则代表支持虚拟化。
            如果这个命令的返回值为零,计算节点不支持硬件加速,您必须配置libvirt KVM使用QEMU。
                  编辑/etc/nova/nova.conf,在部分,virt_type = qemu
      ②启动计算服务包括依赖项和开机自动启动
            systemctl enable libvirtd.service openstack-nova-compute.service
            systemctl start libvirtd.service openstack-nova-compute.service
            注意:
                  如果nova-compute服务启动失败,检查/var/log/nova/nova-compute.log。错误消息:The error message AMQP server on controller:5672 is unreachable likely indicates that the firewall on the controller node is preventing access to port 5672,表明控制器节点上的防火墙阻止访问端口5672。在控制节点配置防火墙打开5672端口控制器节点和计算节点重启nova-compute服务。
    3. 增加一个计算节点到cell数据库
      接下来操作在控制节点上操作
      1. 获得 admin 凭证来获取只有管理员能执行的命令的访问权限,并确认1个计算节点是在主机列表中:
          . admin-openrc
        openstack hypervisor list


      2. 发现compute主机列表:
      su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova


      注意:
                当你添加新的计算节点,您必须运行nova-manage cell_v2discover_hosts控制器节点上注册新计算节点
四、 验证操作
    接下来操作在控制节点上操作
    1. 获得 admin 凭证来获取只有管理员能执行的命令的访问权限,
         . admin-openrc
    2. 列出服务组件:


      该输出显示三个服务组件在控制节点上启用,一个服务组件在计算节点上启用。
    3. 在标识服务API端点列表与身份验证连接服务:
      注意:下面端点列表可能不同,这取决于OpenStack的安装组件。在这个输出忽略任何警告。
      openstack catalog list


    4. 验证镜像服务和镜像列表:
      openstack image list



计算服务安装完成!
页: [1]
查看完整版本: openstack-ocata-计算服务4