Commit aef04a87 authored by Klaus Aehlig's avatar Klaus Aehlig

shared storage N+1 design: necessary changes to hail

In the presence of global N+1 redundancy properties, the hack
of just marking non-locked nodes offline in opportunistic locking
does not work any more. Describe an extension to the allocation
protocol allowing for proper planning.
Signed-off-by: default avatarKlaus Aehlig <aehlig@google.com>
Reviewed-by: default avatarPetr Pudlak <pudlak@google.com>
parent e2f2b3e2
......@@ -71,3 +71,31 @@ Modifications to existing tools
While this technically deviates from interatively doing what hail does,
it should still give a reasonable estimate of the cluster capacity without
significantly increasing the algorithmic complexity.
Other modifications related to opportunistic locking
----------------------------------------------------
To allow parallel instance creation, instance creation jobs can be instructed
to run with just whatever node locks currently available. In this case, an
allocation has to be chosen from that restricted set of nodes. Currently, this
is achieved by sending ``hail`` a cluster description where all other nodes
are marked offline; that works as long as only local properties are considered.
With global properties, however, the capacity of the cluster is materially
underestimated, causing spurious global N+1 failures.
Therefore, we conservatively extend the request format of ``hail`` by an
optional parameter ``restrict-to-nodes``. If that parameter is given, only
allocations on those nodes will be considered. This will be an additional
restriction to ones currently considered (e.g., node must be online, a
particular group might have been requested). If opportunistic locking is
enabled, calls to the IAllocator will use this extension to signal which
nodes to restrict to, instead of marking other nodes offline.
It should be noted that this change brings a race. Two concurrent allocations
might bring the cluster over the global N+1 capacity limit. As, however, the
reason for opportunistic locking is an urgent need for instances, this seems
acceptable; Ganeti generally follows the guideline that current problems are
more important than future ones. Also, even with that change allocation is
more careful than the current approach of completely ignoring N+1 redundancy
for shared storage.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment