zoukankan      html  css  js  c++  java
  • [转]Request Flow for Provisioning Instance in Openstack

    request-flow1

     

    One of the most important use-case in any cloud is provisioning a VM . In this article we shall do a walk through about an instance(VM) being provisioned in a Openstack based cloud. This article deals with the request flow and the component interaction of various projects under Openstack. The end result will be booting up a VM.

    Provisioning a new instance involves the interaction between multiple components inside OpenStack :

    • CLI Command Line Interpreter for submitting commands to OpenStack Compute.
    • Dashboard (“Horizon”) provides the interface for all the OpenStack services.
    • Compute (“Nova”) retrieves virtual disks images(“Glance”) , attach flavor and associated metadata and transforms end user API requests into running instances.
    • Network (“Quantum”) provides virtual networking for Compute which allows users to create their own networks and then link them to the instances.
    • Block Storage (“Cinder”) provides persistent storage volumes for Compute instances.
    • Image (“Glance”) can store the actual virtual disk files in the Image Store.
    • Identity (“Keystone”) provides authentication and authorization for all OpenStack services.
    • Message Queue(“RabbitMQ”) handles the internal communication within Openstack components such as Nova , Quantum and Cinder.

    The request flow for provisioning an Instance goes like this:

    1. Dashboard or CLI gets the user credential and does the REST call to Keystone for authentication.
    2. Keystone authenticate the credentials and generate & send back auth-token which will be used for sending request to other Components through REST-call.
    3. Dashboard or CLI convert the new instance request specified in  ‘launch instance’ or ‘nova-boot’ form to REST API request and send it to nova-api.
    4. nova-api receive the request and sends the request for validation auth-token and access permission to keystone.
    5. Keystone validates the token and sends updated auth headers with roles and permissions.
    6. nova-api interacts with nova-database.
    7. Creates initial db entry for new instance.
    8. nova-api sends the rpc.call request to nova-scheduler excepting to get  updated instance entry with host ID specified.
    9. nova-scheduler picks the request from the queue.
    10. nova-scheduler interacts with nova-database to find an appropriate host via filtering and weighing.
    11. Returns the updated instance entry with appropriate host ID after filtering and weighing.
    12. nova-scheduler sends the rpc.cast request to nova-compute for ‘launching instance’ on appropriate host .
    13. nova-compute picks the request from the queue.
    14. nova-compute send the rpc.call request to nova-conductor to fetch the instance information such as host ID and flavor( Ram , CPU ,Disk).
    15. nova-conductor picks the request from the queue.
    16. nova-conductor interacts with nova-database.
    17. Return the instance information.
    18. nova-compute picks the instance information from the queue.
    19. nova-compute does the REST call by passing auth-token to glance-api  to get the Image URI by Image ID from glance and upload image from image storage.
    20. glance-api validates the auth-token with keystone.
    21. nova-compute get the image metadata.
    22. nova-compute does the REST-call by passing auth-token to Network API to allocate and configure the network such that instance gets the IP address.
    23. quantum-server validates the auth-token with keystone.
    24. nova-compute get the network info.
    25. nova-compute does the REST call by passing auth-token to Volume API to attach volumes to instance.
    26. cinder-api validates the auth-token with keystone.
    27. nova-compute gets the block storage info.
    28. nova-compute generates data for hypervisor driver and executes request on Hypervisor( via libvirt or api).

    The table represents the Instance state at various steps during the provisioning :

    image

  • 相关阅读:
    什么是JAVA内容仓库(Java Content Repository)(3)
    Documentum 中 Type定义与存储
    洛谷 P1421 小玉买文具
    校内 第一届ACM校赛——热身赛
    洛谷 P1307 数字反转
    洛谷P1579 哥德巴赫猜想(升级版)
    51单片机 第三节 独立按键
    51单片机 第四节 数码管
    校内 第一届ACM校赛——正赛
    51单片机 第二节 点亮LED
  • 原文地址:https://www.cnblogs.com/popsuper1982/p/3800426.html
Copyright © 2011-2022 走看看