650) this.width=650; "Title=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203186502053041.png "src=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203230053069158.jpg "style=" border:0px;float:none; "/>
Nova Physical Deployment Scenario
We've seen that Nova is made up of a lot of sub-services, and we know that OpenStack is a distributed system that can be deployed to several nodes, and then you might ask: How do Nova's services physically be deployed?
For Nova, these services are deployed on two types of nodes: compute nodes and control nodes. The Hypervisor is installed on the compute node, which runs the virtual machine. So: 1. Only nova-compute need to be placed on the compute nodes. 2. Other sub-services are placed on the control node.
Below we can look at the specific deployment of the experimental environment. View running Nova sub-services by running Ps-elf|grep Nova on compute nodes and control nodes
COMPUTE Nodes
650) this.width=650; "Title=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203186578068648.png "src=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203230379077302.jpg "style=" border:0px;white-space:normal;float:none; "/>
The Nova-compute child service is only running on the compute node devstack-compute1
Control Node
650) this.width=650; "Title=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203186649055234.png "src=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203230549029001.jpg "style=" border:0px;white-space:normal;float:none; "/>
Several nova-* sub-services are running on the control node Devstack-controller
650) this.width=650; "Title=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203186719087554.png "src=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203230653089296.jpg "style=" border:0px;white-space:normal;float:none; "/>
RabbitMQ and MySQL are also placed on the control node.
Perhaps the attentive classmate has found that our control node is also running on the Nova-compute. This actually means that the Devstack-controller is both a control node, a compute node, and a virtual machine running on it.
This also shows us the flexibility of the distributed architecture deployment of OpenStack: All services can be placed on a single physical machine as a all-in-one test environment, and services can be deployed on multiple physical machines for better performance and high availability.
Alternatively, you can use Nova service-list to see which nodes the nova-* sub-service is distributed on
650) this.width=650; "Title=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203186791094319.png "src=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203230751048096.jpg "style=" border:0px;white-space:normal;float:none; "/>
how nova-* Sub-services work together from the virtual machine creation process
From the point of view of learning Nova, virtual machine creation is a very good scene, involving the nova-* sub-service is full, the following is a flowchart.
650) this.width=650; "Title=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203186865091358.png "src=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203230258079700.jpg "style=" border:0px;white-space:normal;float:none; "/>
The customer (which can be an OpenStack end-user or other program) sends a request to the API (NOVA-API): "Create a virtual machine for me"
After the API has made some necessary processing of the request, a message is sent to Messaging (RabbitMQ): "Let Scheduler create a virtual machine"
Scheduler (Nova-scheduler) Gets the message from Messaging to the API, then executes the scheduling algorithm and selects node A from several compute nodes
Scheduler sent a message to Messaging: "Create this virtual machine on compute node A"
The Compute (nova-compute) of compute node A obtains the message Scheduler sent to it from Messaging, and then starts the virtual machine on the Hypervisor of this node.
In the process of virtual machine creation, Compute sends a message to conductor (nova-conductor) via Messaging If the database information needs to be queried or updated, conductor is responsible for database access.
The above is a few steps to create the core of the virtual machine, of course, also omitted a lot of details, we will discuss in detail in later chapters. These steps show us the way the collaboration between the nova-* sub-services is, and the distributed design of the entire OpenStack system, which is very helpful for us to gain an in-depth understanding of OpenStack.
In the next section we will detail the general design ideas for OpenStack components.
650) this.width=650; "title=" "src=" http://7xo6kd.com1.z0.glb.clouddn.com/ Upload-ueditor-image-20160421-1461203230922079455.jpg "style=" Border:0px;vertical-align:middle;color:rgb ( 63,63,63); font-family: ' Microsoft Yahei '; Font-size:15px;line-height:21.75px;text-align:justify;background-color: RGB (246,246,246); "/>
How Nova components work together-5 minutes a day to play with OpenStack (24)