Nova module Call Flowchart
Nova establishes virtual machine detailed process Basic Status
Horizon sends commands to Keystone authentication
The user sends a validation request through horizon to Keystone, sending an HTTP request through the RESTful API to Keystone,keytone, which is returned to the Horizon user token token after user authentication, for validation of the remaining process.
Nova-api receiving API requests
Horizon will set the parameters needed for the VM to pass through the RESTful API request to Nova-api
NOVA-API with token request Keystone authentication
after validation, NOVA-API initializes the DB
After validation, NOVA-API creates and initializes the Nova database for the new VM, which is done through Nova-conductor.
NOVA-API messages to nova-schedule through Message Queuing
Through the way of Rpc.call, request instance dispatch, give Nova-schedule to select the host that can build virtual machine according to dispatch strategy.
Nova-schedule Select the appropriate host in DB based on the filter and scheduling strategy
Nova-schedule The parameter to the nova-compute of the compute node for virtual machine creation
Nova-schedule The host ID is selected, the actual VM creation operation is performed by Rpc.cast to Nova-compute.
nova-compute–> queue–> nova-network
Nova-compute will assign network information to the virtual machine through Message Queuing Rpc.call request nova-network. If neutron is used here, there is no Message Queuing communication between Nova and neutron, so you need to communicate through the API
nova-compute–> hypervisor
Nova-compute will go to the Nova database to get the virtual machine information (that is, what was defined in the horizon at the beginning) and then send it to hypervisor via API or Libvirt.
hypervisor Creating a virtual machine hypervisor–> Glance or Image Store (Swift)
Hypervisor gets the image from the glance, or swift, depending on what is used by the backend of glance. The virtual machine is then created, and the information is returned after a successful creation.
Horizon Confirmation
Horizon uses the polling API to periodically get VM information, see if the VM is up, and then start the VM and then update the Nova DB database via NOVA-API. Here, a new virtual machine is set up to complete.
some information communication rules between components and within components
When communicating within a project using Message Queuing (communication of multiple processes within the Nova, such as Nova-api and Nova-compute), the Project and project (between Nova and neutron) use RESTful API communication, Within each project, there is a message queue for passing information. RPC Communication Rules
Nova implements two RPC calls based on RABBITMQ: Rpc.call and Rpc.cast, where Rpc.call is based on request and response, Rpc.cast only provides one-way requests, and two RPC invocation modes have different scenarios in Nova.
Reference blog:
RABBITMQ parsing in Nova source analysis--nova
Nova Module call Flowchart Nova Establish virtual machine detailed process basic state Horizon Send command to Keystone Verify NOVA-API receive API request NOVA-API with token request Keystone authentication After validation, NOVA-API initializes the DB Nova-api message queue to Nova-schedule Nova-schedule Select the appropriate host in DB based on the filter and scheduling policy Nova-schedule the parameter to the nova-compute of the compute node for VM creation Nova-compute queue nova-network Nova-compute hypervisor hypervisor Create a virtual machine hypervisor Glance or Image Store Swift Horizon confirms the communication rules between and within the components of an information component RPC communication rules