Archive for January, 2012
Hostname Conventions
This concept is something I’ve carried around with me for my last 3 jobs, and since I’m writing it up for my current employer, I figured I should document it here as well. I’ve mainly worked in Linux/Windows environments, so you may sense a bit of bias away from older systems. It’s not intentional, just a result of my experience. Thanks to Mick for introducing me to this schema.
Purpose
The purpose of this documentation is to provide a clean-cut and straight-forward convention for naming servers. The goal is to look towards the future and not be shackled by our past. This document should be read through once for a basic understanding, and used as a reference when new hosts and services are set up.It should provide a general convention, and may be modified in the future for clarity. All changes should be made by the owner of this document to ensure consistency.
Basic Domain Structure
The domain example.corp we be our designated placeholder for this discussion.
Naming Conventions
Host names are broken into two classifications: Physical Host Name and Service Host Name.
- Physical host names can be compared to the DNA of a server and are by necessity somewhat cryptic.
- Used when managing the physical server inventory
- Used exclusively by the operations team
- Used for resource monitors such as IO, CPU and Memory.
- Service host names are more dynamic, user friendly, and may jump between physical servers as applications are migrated.
- Used exclusively when discussing specific functionality of the server.
- Used for managing cluster or application functionality e.g. “pushing out a new attributes.xml file to all shopcart jboss app servers”
- Used for functional service monitoring.
Physical Host Name
Physical host names represent a unique way to refer to each and every physical server, however unlike the machine’s serial number, it has the flexibility to change. Each character of it’s name must have meaning or provide clarity. If the purpose of a host is changed, the host name may be changed to suit the new purpose, although this will happen infrequently (and make sure to define a procedure for changing a Physical Host Name). Names are broken into 6 key pieces of information:
[Location] [Service Level] [OS] [OS Major Version] [Purpose] [Identification Number]
Location
Location refers to the datacenter in which the hardware is physically present. Each entry will consist of a unique 2 character code representing the city where the datacenter is located. The following is a definitive list of locations currently allowed. If a new entry is needed, please contact the owner of this document.
Designation | City |
---|---|
ax | Alexandria, VA |
gr | Grand Rapids, MI |
mh | Madison Hills, MI |
Service Level
Service level is loosely defined by the importance of the applications running on it, and what our perceived response should be. We currently have 3 designations:
Designation | Urgency | Purpose |
---|---|---|
1 | Top Priority | This machine should be treated as a customer facing production host. |
2 | Medium Priority | Downtime on this server has a significant impact on productivity. |
3 | Low Priority | Downtime on this server has minimal impact. |
Note that no server should be completely ignored if it is in distress, this just provides a general guideline as to the urgency of the problem.
Operating System / OS Major Version
Automating system updates and configuration roll-outs is a key responsibility of the operations team. Embedding OS identification into the host name not only allows convention-based automation, but provides context for alerts during a production event. OS Identification is broken into two categories; Operating System and the Major Version number of that OS.
Designation | Operating System |
---|---|
C | CentOS |
O | Oracle Solaris |
P | Proprietary One-Off/ appliance |
R | RedHat |
S | Suse |
V | Vmware ESXi |
W | Windows |
Z | Solaris Zone |
Designation | Major OS Version |
---|---|
0 | 10 |
1 | 1 or 11 |
2 | 2 or 12 |
etc. |
Purpose
Purpose refers to the overall usage of the server; whether it’s a database server, application server, etc. definitions are purposefully loose to allow for similar services to share the same host. This list will grow as we better define our environment. Purpose designations should refer to generic uses rather than implementation specific (db rather than Oracle or Sybase).
Designation | Purpose | Example |
---|---|---|
as | Application Server | Servers that run Web Applications; JBoss Application Server, Tomcat, IIS |
ws | Web Server | Servers that host static or semi-static content; Apache, Nginx |
db | Database | Servers that host Databases; Oracle, Sybase, MySQL |
ci | Continuous Integration | Servers that host continuous integration; Hudson, TeamCity, CruiseControl |
ut | Utility server | Servers used for by Operations; bind, ldap, pdsh, ssl cert creation |
ts | Terminal Server | Terminal Server for Serial Access (not to be confused with MS Terminal Services) |
vh | Virtual Host Server | Virtual Machine Host Server |
Numeric ID
The last segment of the physical host name is a simple three digit numeric ID. The Numeric ID can be used in several contexts:
- The numeric ID can increment when the rest of the host name is the same (mh1c6ci001, mh1c6ci002, etc).
- The numeric ID can be used to designate clustered servers (gr2c6as013,gr2c6as023, gr2c6as033, gr2c6as043).
Samples
The follow is a list of sample host names:
- mh2c6as011 – Madison Heights, Second Priority CentOS 6 Application Server 11 (App server hosting foo.com qa running on tomcat)
- gr1r5db002 – Grand Rapids, Top Priority Red Hat 5 Database Server 2 (Production Oracle RAC server)
- ax1c5ci001 – Alexandria, Top Priority CentOS 5 Continuous Integration Server 1 (Master node of Hudson)
Service Host Name
Service Host Names are convenient alias that is associated with functionality rather than physical servers. Names are segmented into the following format:
(application)-(purpose)(id).(subdomain).example.corp
Application
Application represents the specific functionality associated with a service.
Type | Example |
---|---|
In-House Application | register,webservices,shopcart |
Application Server | oracle, mysql, sybase |
Purpose
The purpose designation will usually align with the purpose of the physical host name. See the reference list above for details.
Numeric ID
Numeric ID is a two-digit incrementing ID based on the uniqueness of the rest of the hostname. e.g. register-as01.dev.example.corp,register-as02.dev.example.corp,register-as01.qa.example.corp
Subdomain
Subdomain refers to either an environment, or a specialized infrastructure subdomain.
- dev.example.corp – Environment used for Active Development
- qa.example.corp – Environment used for Quality Assurance
- stage.example.corp – Environment used for loadtesting and User Acceptance Testing
- prod.example.corp – Environment used for Production
- sn.example.corp – Storage network used for Backups and NAS
- mgt.example.corp – Management network, used for ILO.
Caveats
There are some exceptions to the Service Host Name conventions. The following is a list of examples.
Exception | Example | Reason |
---|---|---|
No Subdomain | nagios.example.corp | Some Infrastructure Services are not tied to a given subdomain. |
No Purpose and ID | register.stage.example.corp | Load-balanced Service Hostnames point directly to the Load Balancer and do not require these fields |
Samples
Common Service Host Names
- register-as01.dev.example.corp
- shopcart-as06.prod.example.corp
- mysql-db01.qa.example.corp
- sybase-db02.stage.example.corp
Load Balances Service Host Names
- webservices.stage.example.corp
- register.dev.example.corp
- shopcart.qa.example.corp
Utility Service Host Names
- nagios.example.corp
- svn.example.corp
- hudson.example.corp
FAQ
- Why are we limiting Physical Host Names to only 10 characters?
- Because it’s about as long as it can be and still be phonetically memorable: “mh1 c5 as 001”
- rfc 1178 suggests keeping hostnames short.
- I’m not sure what to call the new host I’m building?
- Speak with the owner of this document if you have any doubts. Everyone on your team should be confident and competent enough to select a new name, but at the same time a centralized person will help ensure consistency.
- I’m building a ______ and it doesn’t fit into any of the purposes listed- what do I call it?
- Are you sure it doesn’t fit? We don’t want you arbitrarily shoe-horning servers into bad names, but we need to balance that with preventing an over-abundance of entries. If it truly doesn’t fit, work with the team to designate a new entry on this page.
- I’m building a ______ and it has multiple purposes, what do I call it?
- First ask yourself why it has multiple purposes; would one of those purposes be better suited elsewhere? Provided one does not have a better home elsewhere, use the one that is most appropriate; if a machine is running mysql as a backend for a JBoss application, it’s the JBoss application that people will be most interested in, so you’d label it as rather than db. It’s really a judgment call, and by all means, ask the owner of the doc if you need guidance.
- What about VMS/HP-UX/whatever that only allows 6 character names?
- You can’t win them all. At some point you have to draw a line on how much legacy you need to support. In this case, it doesn’t make sense to shackle systems made in the last 15 years because incredibly ancient machines have limitations.
- You’re missing ____ on your list.
- If there is a heinous omission of a location, purpose, application or operating system, by all means let us know. This isn’t set in set in stone, and can be modified if needed.
I’m always looking for feedback and new ideas; if you have any suggestions, I’d love to hear them.
New Phone
My droid has reached the end of it’s life, so I’ve gotten a replacement- the Samsung Galaxy Nexus.
Pros
- Peppy– My droid was showing it’s age. It lagging pretty badly, regardless of what was installed or how it was configured. The Nexus can run several things without issue.
- ICS -The nexus is the first phone running the newest version of Android, “Ice Cream Sandwich”. A lot of cool new features that I’ve just barely touched.
- Front facing camera – This makes video chats possible. Hopefully I’ll figure out how to use it with google hangouts.
- Face recognition unlocking – Thanks to the front-facing camera, looking at the phone while bringing it out of sleep mode will unlock it. It’s peppy compared to trying to do the pattern unlock, which it fails over to if it can’t match a face.
- Digital menu buttons – the control buttons at the bottom (options, back, etc) are on the screen rather than physical buttons; this allows them to be customized or removed completely.
- Big Screen – massive screen makes reading easy on the eyes.
- Clamshell case – seems more durable than my first one, and it has a built in stand for propping the phone upright.
- Active Wallpaper map – my background is my current location, which also shows traffic conditions. I suspect this may be draining the battery badly, so I’ve turned it back off.
- Traffic widget – shows how long it’ll take to get to a location with the current traffic conditions.
- App/widget menu – apps and widgets are all in the main menu.
Cons
- No Mass Storage Option – MTP is the new protocol used, and normally I would support moving to new tech, but it would have been nice to keep the existing mass storage option available since MTP support isn’t automatically connected like the mass storage option.
- Convoluted process for adding Ringtones and Notifications – On the droid, you drop an MP3 into the ringtones directory and that was it; my Nexus moves them to the music directory automatically, and I had to download a 3rd party app to get it to set it up my custom ringtone and notification.
- Battery Life – My droid wasn’t very good, but it lasted over 24 hours. Waking up at 9 and writing this at 2:20, the Nexus is at 20% already, and this is with the *extended* battery. I was expecting it to be bad, but not this bad. I suspect this is from the maps wallpaper- I’ll test again tomorrow with a static wallpaper.
- Vanilla ICS – You get spoiled using CyanogenMod, which is what I’ve been using on my droid for the last years. As of right now, the Nexus isn’t supported by Cyanogen yet, but we’re hoping to see it real soon now. Currently missing a lot of configurability.
- No Hardware keyboard – This is the biggest adjustment I’ve had to make; it’s a little more awkward, but it results in a much thinner phone. Not sure if it was worth it.
- Big screen – big screen means it’s hard to hold with one hand.
Those are my initial thoughts; I’ll provide more as I find them.
Stabenow’s apparent support of SOPA.
I recently emailed my representatives letting them know that I think SOPA is a horrible piece of legislation and asked them where they stood on the issue. This is the response I received from Debbie Stabenow:
On Fri, Jan 6, 2012 at 3:22 PM, Senator Debbie Stabenow wrote:
January 6, 2012
Dear J.,
Thank you for contacting me about your concerns with legislation designed to fight Internet piracy. I appreciate hearing from you.
I believe that in a globally-competitive environment, it is more important than ever to balance both public and private rights to support innovation and creativity.
As you may know, the Preventing Real Online Threats to Economic Creativity and Theft of Intellectual Property (PROTECT IP) Act was introduced by Senator Patrick Leahy on May 12, 2011. This legislation would penalize Internet sites that engage in the unlawful sharing or sale of counterfeit goods or services, which range from new movie and music releases, to pharmaceuticals and consumer products. I will keep your position on this bill in mind as it moves through the legislative process.
Thank you again for contacting me. Please continue to keep me informed about issues of concern to you and your family.
Sincerely,
Debbie Stabenow
United States Senator
U.S. Senator Debbie Stabenow
The United States Senate • Washington, DC 20510
stabenow.senate.gov
My Response :
Thank you for the non-answer. I will keep your position in mind when I am in the voting booth.
Sincerely,
J. Morgan