So, I am looking at doing large scale OpenStack deployments, one of the concerns with that is a naming format. Initially I was thinking something like “nn” for nova node and “nc” for nova controller etc. My large scale enterprise experience told me that would quickly become a horrible idea, especially considering the various ways that people are going to deploy this. With some thought and help from various colleagues I have come up with the following naming format… let me know your thoughts…
Naming format XXXXXXXYYYYZZZZ
All Base36 – XXXXXXX=Coded service list, YYYY=Cluster#, ZZZZ=Unit#
This gives 31 service bits, 1 Million cluster #s, and 1 Million unit #s
This creates a 15char unit name, the maximum allowed for MS NetBIOS names (although primarily *nix right now, we have to account for future growth into the Windows space)
From Right to left, binary to based36
000000000000000000000000000000000000 = 7char base36 XXXX from above.
|||||||||||||||||||||||||||||||||||'-Nova-API
||||||||||||||||||||||||||||||||||'-Nova-Compute
|||||||||||||||||||||||||||||||||'-Nova-Network
||||||||||||||||||||||||||||||||'-Nova-ObjectStore
|||||||||||||||||||||||||||||||'-Nova-Scheduler
||||||||||||||||||||||||||||||'-Nova-Volume
|||||||||||||||||||||||||||||'-Swift-Account
||||||||||||||||||||||||||||'-Swift-Auth
|||||||||||||||||||||||||||'-Swift-Container
||||||||||||||||||||||||||'-Swift-Object
|||||||||||||||||||||||||'-Swift-Proxy
||||||||||||||||||||||||'-Glance-API
|||||||||||||||||||||||'-Glance-Registry
||||||||||||||||||||||'-Future-Use
|||||||||||||||||||||'-Future-Use
||||||||||||||||||||'-Future-Use
|||||||||||||||||||'-Future-Use
||||||||||||||||||'-Future-Use
|||||||||||||||||'-Future-Use
||||||||||||||||'-Future-Use
|||||||||||||||'-Future-Use
||||||||||||||'-Future-Use
|||||||||||||'-Future-Use
||||||||||||'-Future-Use
|||||||||||'-Future-Use
||||||||||'-Future-Use
|||||||||'-Future-Use
||||||||'-Future-Use
|||||||'-Future-Use
||||||'-Future-Use
|||||'-Future-Use
||||'-Future-Use
|||'-Future-Use
||'-Future-Use
|'-Future-Use
'-Future-Use
Common Examples:
All Nova = 000001R
All Swift = 00001J4
All Glance = 00004QO
Nova+Swift = 00001KV
Swift+Glance = 000069S
All current = 00006BJ
All current & future = VKHSVLR
A full example of a machine running Nova and Swift, in the 1,002 cluster, unit number 12,643 (assuming this is the biggest cluster ever heh) would be...
00001KV00RU09R7
There are some variations possible, we could do XX
In theory this naming scheme would not need to be changed for a number of years. It also allows you to at a glance understand a servers original purpose or analyze a large scale implementation without requiring auditing or configuration databases. The obvious downside is that changing the services on a box would require a name change although in large systems usually service changes would use a migration box and the naming could be done there. The size of the name is a concern for ops people as well but I would expect copy/paste to be utilized from alerting/tickets etc. This is just an idea now that I will most likely start building installation process/automation around so any thoughts?
Note: These unit names should be auto generated through various setup utilities, anyone doing an install by hand probably wouldn’t need a naming scheme with large scale design, although I would highly recommend it if possible.
If you would like to comment please visit my blog directly http://www.jordanrinke.com/2011/01/05/based36-naming-scheme-for-openstack-servers/ ping me on twitter http://www.twitter.com/JordanRinke or find me on IRC on #OpenStack
I like it. I have a couple tweaks that might make it better.
1. Reorder to parts to be cluster, unit, services. To make a sortable name, that tools can easily alpha sort.
2. Change the cluster bits to always have the upper bit on or change it to be an alpha character and 3 characters of bits. This way the name will always start with a alpha character and be a valid dns hostname.
Otherwise, I think it would be quite usable. Thanks for writing this up.