Sunday, December 07, 2008

Your Blog, Custom Domains, And Righteous Solutions

A Google Custom Domain is reasonably simple to setup, when you understand that custom domain design uses three rigidly defined models. A lot of the trouble, that many blog owners experience, comes from doing it their own way.
You have to start out with properly setup DNS addresses - including attention to domain manager address entry convention, if you want a working custom domain. Start with the "second" "CNAME" - which is essential in verifying domain ownership. The domain ownership verification "CNAME" is neither frivolous nor optional.

Next, I'll show the most commonly used DNS address configurations, illustrated with excerpted Dig logs.

Symmetrical DNS Configuration

The most obvious configuration uses a symmetrical DNS structure - dual "CNAME" referrals.
mydomain.com. 3600 IN CNAME ghs.google.com.
www.mydomain.com. 3600 IN CNAME ghs.google.com.

This is the simplest to explain. Both the domain root, and the "www" alias separately use a "CNAME" referral to "ghs.google.com", which provides a second referral to the current Google server that is available for use.

With a symmetrical configuration, you may publish to either "mydomain.com" or "www.mydomain.com", at your convenience.

Asymmetrical DNS Configuration, aka "Google Apps"

If you have a domain with email, FTP, and other possible auxiliary services, you use an asymmetrical structure, which use Google Apps to let you add auxiliary services, with quadruple DNS server redundancy.
mydomain.com.  3600 IN A 216.239.32.21
mydomain.com.  3600 IN A 216.239.34.21
mydomain.com.  3600 IN A 216.239.36.21
mydomain.com.  3600 IN A 216.239.38.21
www.mydomain.com. 3600 IN CNAME ghs.google.com.

Look carefully at the IP addresses in the 4 "A" records, before concluding that the 4 records are identical.

With an asymmetrical configuration, you may not publish to the domain root. Your only valid choice is to publish to "www.mydomain.com", and select "Redirect mydomain.com to www.mydomain.com". If you publish to "mydomain.com", you will eventually see
Blogs may not be hosted at naked domains.
or maybe a well known monolithic error
Another blog or Google Site is already using this address.


Additional Virtual Host

If you wish to add an additional blog to the domain, maybe to add your Blogger blog to your web site, you setup an additional virtual host. There are several variations on this setup - some righteous, others spurious - that you need to consider, carefully.

Here, you may publish to "blog.mydomain.com", only. Only use a "CNAME" referral to "ghs.google.com" - do not use any "A" referrals to the Google Apps servers.
blog.mydomain.com. 3600 IN CNAME ghs.google.com.


An Actual Example, And An HTTP Trace

Let's look at a real life example, "nitecruzr.net". You will note, perhaps, that I wrote this example before server "64.233.179.121" was removed from service.

Here's an excerpted Dig log, to start.
nitecruzr.net.  3600 IN A 64.233.179.121
nitecruzr.net.  3600 IN A 72.14.207.121
www.nitecruzr.net. 3600 IN CNAME ghs.google.com.
---
ghs.google.com.  435706 IN CNAME ghs.l.google.com.
ghs.l.google.com. 300 IN A 66.249.91.121

And, here's an excerpted HTTP trace.
Sending request:
GET / HTTP/1.1
Host: nitecruzr.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18
Connection: close
• Finding host IP address...
• Host IP address = 64.233.179.121
• Finding TCP protocol...
• Binding to local socket...
• Connecting to host...
• Sending request...
• Waiting for response...
Receiving Header:
HTTP/1.1·302·Moved·Temporarily(CR)(LF)
Location:·http://www.nitecruzr.net(CR)(LF)

Sending request:
GET / HTTP/1.1
Host: www.nitecruzr.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18
Connection: close
• Finding host IP address...
• Host IP address = 209.85.171.121
• Finding TCP protocol...
• Binding to local socket...
• Connecting to host...
• Sending request...
• Waiting for response...
Receiving Header:
HTTP/1.1·200·OK(CR)(LF)

So, what do we see here? Follow me, here, please.


nitecruzr.net.  3600 IN A 64.233.179.121
nitecruzr.net.  3600 IN A 72.14.207.121

The domain root, "nitecruzr.net", is using an "A" referral to a pair of Google Apps servers, shown here as a dually redundant array. This was a triply redundant array until October 2008. Now, you should be using a set of four servers, in a quadruply redundant array.

GET / HTTP/1.1
Host: nitecruzr.net
• Finding host IP address...
• Host IP address = 64.233.179.121

"nitecruzr.net" uses "64.233.179.121", right now. If "64.233.179.121" was offline, it would, hopefully, use "72.14.207.121".

HTTP/1.1·302·Moved·Temporarily(CR)(LF)
Location:·http://www.nitecruzr.net(CR)(LF)

"nitecruzr.net" is currently redirected to "www.nitecruzr.net", within Google Apps. The redirection may, or may not, be a "302 Temporary", as trace utilities like "Rex Swain's HTTP Viewer" are known to confuse "301 Moved Permanently" with "302 Moved Temporarily". A "301 Moved Permanently" is preferred over "302 Moved Temporarily".

www.nitecruzr.net. 3600 IN CNAME ghs.google.com.

"www.nitecruzr.net" is using a "CNAME" referral to "ghs.google.com".

ghs.google.com.  435706 IN CNAME ghs.l.google.com.

"ghs.google.com" is then using a "CNAME" referral to "ghs.l.google.com", which is a load balancing DNS server array. Note the tremendously long TTL for "ghs.google.com", here showing as "435706". "ghs.l.google.com" is robustly engineered, with multiple redundant components.

Both "www.nitecruzr.net" and "ghs.l.google.com" use DNS to convert their names into IP addresses. Google provides DNS servers that resolve "google.com". If any one individual Google server is taken offline, Google changes their DNS to point to another server IP address. You never worry about this detail, and your DNS setup never has to be changed, allowing "ghs.google.com" to "always" resolve to "ghs.l.google.com" .

ghs.l.google.com. 300 IN A 66.249.91.121

"ghs.l.google.com" is currently using the IP address "66.249.91.121". TTL here is "300" seconds or 5 minutes. Tomorrow, or 5 minutes from now, "66.249.91.121" might be offline, and a different IP address would be issued.

GET / HTTP/1.1
Host: www.nitecruzr.net

• Finding host IP address...
• Host IP address = 209.85.171.121

"www.nitecruzr.net" is currently being served from "209.85.171.121", an address issued by "66.249.91.121" aka "ghs.l.google.com". Tomorrow, or 5 minutes from now, "209.85.171.121" might be offline, and another IP address would be issued.

If one individual server in the "ghs.l.google.com" server array goes down, Google changes the DNS address for "ghs.l.google.com" to direct to another server in the array. This results in an outage of a maximum of 5 minutes, as TTL for "ghs.l.google.com", in the cached DNS addresses, all around the Internet, expires.

Since all that "ghs.l.google.com" does is issue an IP address for serving your domain, the only domains affected will be those simultaneously
  • Being accessed during the 5 minute outage period.
  • Without fresh addresses for the domain in cache, on the local DNS server being used by a domain reader.
  • Without a fresh address for "ghs.l.google.com", on the local DNS server being used by a domain reader.
The average down window will be 2.5 minutes, and since TTL for most custom domains is generally 30, 60, or more minutes, the impact of an outage is much smaller than it could be.

If you are currently seeing the well known
Server Not Found

Error 404
display, and you just made changes as advised above, you now need to allow for DNS Latency, and wait patiently. Next, publish your blog back to BlogSpot, then republish to the domain. If you have any problem here, recycle the domain settings in Google Apps, persistently.

Finally, check the "Redirect mydomain.com to www.mydomain.com" option in Settings - Publishing (or your available variation).

For more information:
>> Top

18 comments:

John said...

Nitecruzr,

This is one of the most helpful blogs I've been to in a while because no one else is talking about this topic in a way I can actually understand. But I am still a little confused with this article.

I registered a domain with GoDaddy and would like to host my blog there.

If I understand correctly I should follow the assymetrical dns configuration and therefore I would have two A records and one CNAME as follows:

www.mydomain.com. 3600 IN A 64.233.179.121
www.mydomain.com. 3600 IN A 72.14.207.121

www.mydomain.com. 3600 IN CNAME ghs.google.com

I totally follow you up to this point. Where I get lost if when I go into my DNS setup at GoDaddy.

For the A record, The instruction say to:
"
To create a new A record for this zone file, please enter the Host Name, "Points To" IP Address, and TTL in the fields below; then click "Continue."
"

A little further it says:

"
"Entering "@" will automatically insert your domain name as the host name for the A Record. If the A Record is for the domain "www.domainnamegoeshere.com", the host name should be entered as "www".

Do not enter "www.domainnamegoeshere.com" as the host name for an A Record.
"

For setting up CNAME the instructions say:

"
If you want the CNAME record to point "www" within your domain to "www.domainnamegoeshere," you should enter "www" in the Alias field and "www.domainnamegoeshere.com" in the Points To field.
"

So my question is what would be the correct host name to put in the A record?

This is what I did:

Host Points-to TTL

@ 64.233.179.121 1-hour
@ 72.14.207.121 1-hour

CNAME

www ghs.google.com 1-hour

The thing that is causing confusion is the host names. I get the impression from your article I should put:

www.mydomain.com. with the "." at the end.

If you can clarify this I am sure you will help a lot of people.

Chuck said...

John,

Thanks for the feedback. I think I see the content for another post that I should write, in your comment. ;)

The issue with the "." is part of a policy that varies, from DNS host to DNS host. I'm working on a post that discusses that issue and similar ones, like the redundant domain name problem, which also varies from DNS host to DNS host.

Albert said...

Hi. I have followed these instructions to set up custom domains for several blogspot-hosted sites using (thanks!). I have used the 'asymmetrical DNS' with the root domain (i.e. without www) pointing to Google's IP address, plus the www subdomain pointing to ghs. However, I'm not really comfortable pointing to an IP address that its owner can decide to change anytime. So I would like to test the symmetrical setup, but I can't find a way to create a CNAME for the domain root in the control panels of my assorted domain registrars. Can you explain how that is done?

As an alternative, is it possible to ignore the CNAME for the root domain, creating just a CNAME for the www subdomain, while having blogspot reply both to the root AND the www (if possible, using the root domain in the URLs)?

Thanks for your assistance.
--
Albert

Chuck said...

Albert,

I'd like to explore these issues with you, but we can do that better using GBH: How Do I?. Support community help - use the forums for technical questions.

Wendy said...

Nitecruzr,

I followed your post and things work now. Thanks a lot!

plumfish

malarts said...

Thanks muchly - It's a shame how Apps has changed this process - it was really seamless not long ago

Corl said...

Hi Nightcruzr,

While I have been trying to resolve my custom domain issue, I came across your site. While following your suggestions, I've noticed that while I can enter through your custom domain www.nitecruzr.net all the page URLs within look like http://blogging.nitecruzr.net/2008/12/your-blog-custom-domains-and-righteous.html

Please tell me what I should expect when I finally do resolve my custom domain issue. Will your URL structure be a result I will have, or will it be more like what I was expecting an URL with a custom domain to look like, ex: www.mydomain.com/i-run-fast.html ?

Thanks a bunch,
Corl

Chuck said...

Corl,

You're asking about the normal and unavoidable Blogger directory structure.

Malathy said...

Hello,
You have replied to my problem posted as below:
My Problem: "Oops! The link is broken".
My URL: http://www.newproductsfinder.com

Your reply:
"Your problem is in the DNS addresses. Here's what you have:

www.newproductsfinder.com. 172800 IN CNAME ghs.google.com.

Here's what you need:

newproductsfinder.com. 172800 IN A 216.239.32.21
newproductsfinder.com. 172800 IN A 216.239.34.21
newproductsfinder.com. 172800 IN A 216.239.36.21
newproductsfinder.com. 172800 IN A 216.239.38.21
www.newproductsfinder.com. 172800 IN CNAME ghs.google.com.

That's some wicked TTL, too. Make the above changes, and you'll be waiting for 2 full days, before doing anything else.

Make the above changes, and wait for 2 FULL DAYS.

My question:
My domain never faced this problem since 2007 when it was purchased. Now, do you advise me to create 4 "A" records as you have mentioned?

Thanks.
malathy

Chuck said...

Mala,

Please see the forum thread for discussion. Using 4 x "A" referrals for the domain root is not an eccentricity on Blogger's part.

Goy Gevalt said...

Great article thanks a lot. I set everything up and everything is resolving. The only issue I have now is that my blog isn't showing up in searches anymore... It has been a few days. Is this common? I was getting some great placement before...now nothing.

Chuck said...

Goy,

You'll want to read about the custom domain migration process, and follow the links in the article.

Fiazio said...

Godaddy provides us with a free 1 gb hosting.
What if i want to rediretct a usbdomain for example forums.mysite.com to my godaddy linux hosting.
Thank you

Chuck said...

Fiazio,

You can use your GoDaddy hosting, if you wish. You won't be able to publish a Blogger blog there, but you can use GoDaddy and have a web site.

L.G. said...

This blog is a savior! THANK YOU :D

Marina G said...

Once again you've helped me out tremendously. Thank you for taking the time to pull together this post.

japarus shadiq said...

thank for inro ....

Marie Z. Johansen said...

Just want to thank you for sharing your wisdom with those of us or not quite as tech savvy as we may wish to be ! I wish you hired out - I feel like I'll always about to create un-repairable error when I monkey with some of this stuff!