← Back to team overview

openstack team mailing list archive

Re: [Nova] How common is user_data for instances?

 

On 08/13/2012 09:53 AM, Stephen Gran wrote:
> Hi,
> 
> I think user_data is probably reasonably common - most people who use,
> eg, cloud-init will use it (we do).
> 
> As the 64k limit is a MySQL limitation, and not a nova limitation, why
> not just say, "if you want more storage, use postgres" (or similar)?  I
> have no issue with making the size guarded in the application, with a
> configurable limit, but the particular problem that started this off is
> an implementation issue rather than a code issue.

Or just set the column to the LONGTEXT type and both MySQL and
PostgreSQL will be just as happy.

> Storing the user_data in some place like the database is fairly
> important for making things like launch configs for autoscale groups
> work.  I'd like to not make that harder to implement.

Why is storing user_data in the database fairly important? You say above
you don't want an implementation issue to be misconceived as a code
issue -- and then go on to say that an implementation issue (storing
user_data in a database) isn't a code issue. I don't think you can have
it both ways. :)

Now, I totally buy the argument that there is a large existing
cloud-init userbase out there that relies on the EC2 Metadata API
service living on the hard-coded 169.254.169.254 address, and we
shouldn't do anything to mess up that experience. But I totally think
that config-drive or disk-injection is a better way to handle this stuff
-- and certainly doesn't force an implementation that has proven to be a
major performance and scaling bottleneck (the EC2 Metadata service)

Best,
-jay

> Cheers,
> 
> On Mon, 2012-08-13 at 09:12 -0400, Dan Prince wrote:
>>
>> ----- Original Message -----
>>> From: "Michael Still" <michael.still@xxxxxxxxxxxxx>
>>> To: openstack@xxxxxxxxxxxxxxxxxxx, openstack-operators@xxxxxxxxxxxxxxxxxxx
>>> Sent: Saturday, August 11, 2012 5:12:22 AM
>>> Subject: [Openstack] [Nova] How common is user_data for instances?
>>>
>>> Greetings.
>>>
>>> I'm seeking information about how common user_data is for instances
>>> in
>>> nova. Specifically for large deployments (rackspace and HP, here's
>>> looking at you). What sort of costs would be associated with changing
>>> the data type of the user_data column in the nova database?
>>>
>>> Bug 1035055 [1] requests that we allow user_data of more than 65,535
>>> bytes per instance. Note that this size is a base64 encoded version
>>> of
>>> the data, so that's only a bit under 50k of data. This is because the
>>> data is a sqlalchemy Text column.
>>>
>>> We could convert to a LongText column, which allows 2^32 worth of
>>> data,
>>> but I want to understand the cost to operators of that change some
>>> more.
>>> Is user_data really common? Do you think people would start uploading
>>> much bigger user_data? Do you care?
>>
>> Nova has configurable quotas on most things so if we do increase the size of the DB column we should probably guard it in a configurable manner with quotas as well.
>>
>> My preference would actually be that we go the other way though and not have to store user_data in the database at all. That unfortunately may not be possible since some images obtain user_data via the metadata service which needs a way to look it up. Other methods of injecting metadata via disk injection, agents and/or config drive however might not need it to be store in the database right?
>>
>> As a simpler solution:
>>
>> Would setting a reasonable limit (hopefully smaller) and returning a HTTP 400 bad request if incoming requests exceed that limit be good enough to resolve this ticket? That way we don't have to increase the DB column at all and end users would be notified up front that user_data is too large (not silently truncated). They way I see it user_data is really for bootstrapping instances... we probably don't need it to be large enough to write an entire application, etc.
>>
>>
>>>
>>> Mikal
>>>
>>> 1: https://bugs.launchpad.net/nova/+bug/1035055
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openstack
>>> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~openstack
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openstack
>> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp
> 


Follow ups

References