[openstack-dev] [Nova] Does Nova really need an SQL database?
clint at fewbar.com
Tue Nov 19 18:35:27 UTC 2013
Excerpts from Chris Friesen's message of 2013-11-19 09:29:00 -0800:
> On 11/18/2013 06:47 PM, Joshua Harlow wrote:
> > An idea related to this, what would need to be done to make the DB have
> > the exact state that a compute node is going through (and therefore the
> > scheduler would not make unreliable/racey decisions, even when there are
> > multiple schedulers). It's not like we are dealing with a system which
> > can not know the exact state (as long as the compute nodes are connected
> > to the network, and a network partition does not occur).
> How would you synchronize the various schedulers with each other?
> Suppose you have multiple scheduler nodes all trying to boot multiple
> instances each.
> Even if each at the start of the process each scheduler has a perfect
> view of the system, each scheduler would need to have a view of what
> every other scheduler is doing in order to not make racy decisions.
Your question assumes they need to be "in sync" at a granular level.
Each scheduler process can own a different set of resources. If they
each grab instance requests in a round-robin fashion, then they will
fill their resources up in a relatively well balanced way until one
scheduler's resources are exhausted. At that time it should bow out of
taking new instances. If it can't fit a request in, it should kick the
request out for retry on another scheduler.
In this way, they only need to be in sync in that they need a way to
agree on who owns which resources. A distributed hash table that gets
refreshed whenever schedulers come and go would be fine for that.
More information about the OpenStack-dev