[Openstack] Instance IDs and Multiple Zones

Justin Santa Barbara justin at fathomdb.com
Tue Mar 22 19:51:23 UTC 2011


EC2 uses xsd:string for their instance id.  I can't find any additional
guarantees.

Here's a (second hand) quote from Amazon:

http://serverfault.com/questions/58401/is-the-amazon-ec2-instance-id-unique-forever
"Instance ids are unique. You'll never receive a duplicate id. However, the
current format of the instance id is an implementation detail that is
subject to change. If you use the instance id as a string, you should be
fine."

So, strings it is then? :-)



On Tue, Mar 22, 2011 at 12:44 PM, Vishvananda Ishaya
<vishvananda at gmail.com>wrote:

> The main issue that drove integers is backwards compatibility to the
> ec2_api and existing ec2 toolsets.  People seemed very opposed to the idea
> of having two separate ids in the database, one for ec2 and one for the
> underlying system.  If we want to move to another id scheme that doesn't fit
> in a 32 bit integer we have to provide a way for ec2 style ids to be
> assigned to instances, perhaps through a central authority that hands out
> unique ids.
>
> Vish
>
> On Mar 22, 2011, at 12:30 PM, Justin Santa Barbara wrote:
>
> The API spec doesn't seem to preclude us from doing a fully-synchronous
> method if we want to (it just reserves the option to do an async
> implementation).  Obviously we should make scheduling fast, but I think
> we're fine doing synchronous scheduling.  It's still probably going to be
> much faster than CloudServers on a bad day anyway :-)
>
> Anyone have a link to where we chose to go with integer IDs?  I'd like to
> understand why, because presumably we had a good reason.
>
> However, if we don't have documentation of the decision, then I vote that
> it never happened, and instance ids are strings.  We've always been at war
> with Eastasia, and all ids have always been strings.
>
> Justin
>
>
>
>
> On Tue, Mar 22, 2011 at 12:20 PM, Paul Voccio <paul.voccio at rackspace.com>wrote:
>
>> I agree with the sentiment that integers aren't the way to go long term.
>> The current spec of the api does introduce some interesting problems to
>> this discussion. All can be solved. The spec calls for the api to return
>> an id and a password upon instance creation. This means the api isn't
>> asynchronous if it has to wait for the zone to create the id. From page 46
>> of the API Spec states the following:
>>
>> "Note that when creating a server only the server ID and the admin
>> password are guaranteed to be returned in the request object. Additional
>> attributes may be retrieved by performing subsequent GETs on the server."
>>
>>
>>
>> This creates a problem with the bursting if Z1 calls to Z2, which is a
>> public cloud, which has to wait for Z3-X to find out where it is going be
>> placed. How would this work?
>>
>> pvo
>>
>> On 3/22/11 1:39 PM, "Chris Behrens" <chris.behrens at rackspace.com> wrote:
>>
>> >
>> >I think Dragon got it right.  We need a zone identifier prefix on the
>> >IDs.  I think we need to get away from numbers.  I don't see any reason
>> >why they need to be numbers.  But, even if they did, you can pick very
>> >large numbers and reserve some bits for zone ID.
>> >
>> >- Chris
>> >
>> >
>> >On Mar 22, 2011, at 10:48 AM, Justin Santa Barbara wrote:
>> >
>> >> I think _if_ we want to stick with straight numbers, the following are
>> >>the 'traditional' choices:
>> >>
>> >> 1) "Skipping" - so zone1 would allocate numbers 1,3,5, zone2 numbers
>> >>2,4,6.  Requires that you know in advance how many zones there are.
>> >> 2) Prefixing - so zone0 would get 0xxxxxxx, zone1 1xxxxxx.
>> >> 3) Central allocation - each zone would request an ID from a central
>> >>pool.  This might not be a bad thing, if you do want to have a quick
>> >>lookup table of ID -> zone.  Doesn't work if the zones aren't under the
>> >>same administrative control.
>> >> 4) Block allocation - a refinement of #3, where you get a bunch of IDs.
>> >> Effectively amortizes the cost of the RPC.  Probably not worth the
>> >>effort here.
>> >>
>> >> (If you want central allocation without a shared database, that's also
>> >>possible, but requires some trickier protocols.)
>> >>
>> >> However, I agree with Monsyne: numeric IDs have got to go.  Suppose I'm
>> >>a customer of Rackspace CloudServers once it is running on OpenStack,
>> >>and I also have a private cloud that the new Rackspace Cloud Business
>> >>unit has built for me.  I like both, and then I want to do cloud
>> >>bursting in between them, by putting an aggregating zone in front of
>> >>them.  I think at that stage, we're screwed unless we figure this out
>> >>now.  And this scenario only has one provider (Rackspace) involved!
>> >>
>> >> We can square the circle however - if we want numbers, let's use UUIDs
>> >>- they're 128 bit numbers, and won't in practice collide.  I'd still
>> >>prefer strings though...
>> >>
>> >> Justin
>> >>
>> >>
>> >>
>> >> On Tue, Mar 22, 2011 at 9:40 AM, Ed Leafe <ed at leafe.com> wrote:
>> >>        I want to get some input from all of you on what you think is
>> >>the best way to approach this problem: the RS API requires that every
>> >>instance have a unique ID, and we are currently creating these IDs by
>> >>use of an auto-increment field in the instances table. The introduction
>> >>of zones complicates this, as each zone has its own database.
>> >>
>> >>        The two obvious solutions are a) a single, shared database and
>> >>b) using a UUID instead of an integer for the ID. Both of these
>> >>approaches have been discussed and rejected, so let's not bring them
>> >>back up now.
>> >>
>> >>        Given integer IDs and separate databases, the only obvious
>> >>choice is partitioning the numeric space so that each zone starts its
>> >>auto-incrementing at a different point, with enough room between
>> >>starting ranges to ensure that they would never overlap. This would
>> >>require some assumptions be made about the maximum number of instances
>> >>that would ever be created in a single zone in order to determine how
>> >>much numeric space that zone would need. I'm looking to get some
>> >>feedback on what would seem to be reasonable guesses to these partition
>> >>sizes.
>> >>
>> >>        The other concern is more aesthetic than technical: we can make
>> >>the numeric spaces big enough to avoid overlap, but then we'll have very
>> >>large ID values; e.g., 10 or more digits for an instance. Computers
>> >>won't care, but people might, so I thought I'd at least bring up this
>> >>potential objection.
>> >>
>> >>
>> >>
>> >> -- Ed Leafe
>> >>
>> >>
>> >>
>> >>
>> >> _______________________________________________
>> >> Mailing list: https://launchpad.net/~openstack
>> >> Post to     : openstack at lists.launchpad.net
>> >> Unsubscribe : https://launchpad.net/~openstack
>> >> More help   : https://help.launchpad.net/ListHelp
>> >>
>> >> _______________________________________________
>> >> Mailing list: https://launchpad.net/~openstack
>> >> Post to     : openstack at lists.launchpad.net
>> >> Unsubscribe : https://launchpad.net/~openstack
>> >> More help   : https://help.launchpad.net/ListHelp
>> >
>> >
>> >_______________________________________________
>> >Mailing list: https://launchpad.net/~openstack
>> >Post to     : openstack at lists.launchpad.net
>> >Unsubscribe : https://launchpad.net/~openstack
>> >More help   : https://help.launchpad.net/ListHelp
>>
>>
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack at lists.launchpad.net
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20110322/668c1ba6/attachment.html>


More information about the Openstack mailing list