[openstack-dev] Optionally force instances to "stay put" on resize

Michael J Fork mjfork at us.ibm.com
Fri Feb 15 15:59:46 UTC 2013



The patch for the configurable-resize-placement blueprint (
https://blueprints.launchpad.net/nova/+spec/configurable-resize-placement)
has generated a discussion on the review boards and needed to be brought to
the mailing list for broader feedback.

tl;dr would others find useful the addition of a new config option
"resize_to_same_host" with values "allow", "require", "forbid" that
deprecates "allow_resize_to_same_host" (functionality equivalent to "allow"
and "forbid" in "resize_to_same_host")?  Existing use cases and default
behaviors are retained unchanged.  The new use case is "resize_to_same_host
= require" retains the exact same external API sematics and would make it
such that no user actions can cause a VM migration (and the network traffic
with it).  An administrator can still perform a manual migration that would
allow a subsequent resize to succeed.  This patch would be most useful in
environments with 1GbE or with large ephemeral disks.

Blueprint  Description

> Currently OpenStack has a boolean "allow_resize_to_same_host" config
option that constrains
> placement during resize. When this value is false, the ignore_hosts
option is passed to the scheduler.
> When this value is true, no options are passed to the scheduler and the
current host can be
> considered. In some use cases - e.g. PowerVM - a third option of "require
same host' is desirable.

> This blueprint will deprecate the "allow_resize_to_same_host" config
option and replace it with
> "resize_to_same_host" that supports 3 values - allow, forbid, require.
Allow is equivalent to true in the
> current use case (i.e. not scheduler hint, current host is considered),
forbid to false in current use case
> (i.e. the ignore_hosts scheduler hint is set), and require forces the
same host through the use of the
> force_hosts scheduler hint.

To avoid incorrectly paraphrasing others, the review comments against the
change are below in their entirety followed by my comments to those
concerns.  The question we are looking to answer - would others find this
function useful and / or believe that OpenStack should have this option?

Comments from https://review.openstack.org/#/c/21139/:

> I still think this is a bad idea. The only reason the flag was there in
the first place was so we could
> run tempest on devstack in the gate and test resize. Semantically this
changes the meaning of resize
> in a way that I don't think should be done.

> I understand what the patch does, and I even think it appears to be
functionally correct based on
> what the intention appears to be. However, I'm not convinced that the
option is a useful addition.
>
> First, it really just doesn't seem in the spirit of OpenStack or "cloud"
to care this much about where
> the instance goes like this. The existing option was only a hack for
testing, not something expected
> for admins to care about.
>
> If this really *is* something admins need to care about, I'd like to
better understand why. Further, if
> that's the case, I'm not sure a global config option is the right way to
go about it. I think it may make
> more sense to have this be API driven. I'd like to see some thoughts from
others on this point."

> "I completely agree with the "spirit of cloud" argument. I further think
that exposing anything via the
> API that would support this (i.e. giving the users control or even
indication of where their instance lands)
> is a dangerous precedent to set.
>
> I tend to think that this use case is so small and specialized, that it
belongs in some other sort of policy
> implementation, and definitely not as yet-another-config-option to be
exposed to the admins. That, or in
> some other project entirely :)"

and my response to those concerns:

> I agree this is not an 80% use case, or probably even that popular in the
other 20%, but resize today
> is the only user facing API that can trigger the migration of a VM to a
new machine. In some environments,
> this network traffic is undesirable - especially 1GBe - and may want to
be explicitly controlled by an
> Administrator. In this implementation, an Admin can still invoke a
migration manually to allow the resize to
> succeed. I would point to the Island work by Sina as an example, they
wrote an entire Cinder driver
> designed to minimize network traffic.
>
> I agree with the point above that exposing this on an end-user API is not
correct, users should not know
> or care where this goes. However, as the cloud operator, I should be able
to have that level of control
> and this puts it in their hands.
>
> Obviously this option would need documented to allow administrators to
decide if they need to change it,
> but it certainly wouldn't be default. Expectation is that it would of use
in smaller installations or enterprise
> uses cases more often than service providers.
>
> Additionally, it continues to honor the existing resize API contract.

An additional use case - beyond 1GbE - is if an environment uses large
ephemeral disks.

Would others find this function useful and / or believe that OpenStack
should have this option?  Again, the API contract is unchanged and it gives
a cloud operator an additional level of control over the movement of
instances.  It would not be the default behavior, but rather enabled by an
administrator depending on their specific use cases and requirements and
the environment they are in.

Thanks.

Michael

-------------------------------------------------
Michael Fork
OpenStack Architect, Cloud Solutions and OpenStack Development
IBM Systems & Technology Group
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130215/170f8b10/attachment.html>


More information about the OpenStack-dev mailing list