Skip to content
This repository has been archived by the owner on Aug 30, 2024. It is now read-only.

dns 3.4 spec

chris grzegorczyk edited this page Aug 2, 2013 · 19 revisions

Table of Contents

DNS

NOTE: through out this document the following naming assumptions are used:

    • DNSDOMAIN.COM is the public subdomain which is delegated to Eucalyptus
    • ${system.dns.dnsdomain} refers to the system property of the same name
    • ${cloud.vmstate.} refers to the system property of the same name
    • INSTANCESUBDOMAIN is the subdomain used for instance DNS
    • 10.111.1.2 is the example Eucalyptus CLC host

Setup Steps

Enable Experimental

  • Set all the experimental DNS resolvers to be enabled='true'
 clc 17599 > euca-describe-properties experimental.dns
PROPERTY	experimental.dns.enabled	true
PROPERTY	experimental.dns.instancedata.enabled	true
PROPERTY	experimental.dns.ns.enabled	true
PROPERTY	experimental.dns.recursive.enabled	true
PROPERTY	experimental.dns.services.enabled	true
PROPERTY	experimental.dns.split_horizon.enabled	true

nameserveraddress

  • Set the nameserveraddress given out to instances to be the same as the CLC
  • THIS IS NOT RIGHT! The 'nameserveraddress' needs to be dynamic for HA!
euca-modify-property -p system.dns.nameserveraddress=10.111.1.2
PROPERTY	system.dns.nameserveraddress	10.111.1.2 was 127.0.0.1

System and Instance Domains

  • Set the public facing domain name -- the cloud internal domain is always 'internal'
 clc 17595 > euca-modify-property -p system.dns.dnsdomain=DNSDOMAIN.COM
PROPERTY	system.dns.dnsdomain	DNSDOMAIN.COM was localhost
  • Set the sub-domain name used for instances
 clc 17597 > euca-modify-property -p cloud.vmstate.instance_subdomain=.INSTANCESUBDOMAIN
PROPERTY	cloud.vmstate.instance_subdomain	.INSTANCESUBDOMAIN was .eucalyptus

Enable DNS

 clc 17610 > euca-modify-property -p bootstrap.webservices.use_dns_delegation=true
PROPERTY	bootstrap.webservices.use_dns_delegation	true was false

 clc 17610 > euca-modify-property -p bootstrap.webservices.use_instance_dns=true
PROPERTY	bootstrap.webservices.use_instance_dns	true was false

DNS Types

Responds To Description
Service/Component Resolver ${component.name()}.${system.dns.dnsdomain} Resolves the address of the currently ENABLED service indicated by the first label in the request.
Recursive Resolver not *.${system.dns.dnsdomain} Handles resolution of address which are not in domains managed by Eucalyptus.
Split Horizon Resolver euca-(.+{3})-(.+{3})-(.+{3})-(.+{3}).${cloud.vmstate.instance_subdomain}.${system.dns.dnsdomain} euca-(.+{3})-(.+{3})-(.+{3})-(.+{3}).${cloud.vmstate.instance_subdomain}.internal Resolves instance addresses based on the requestor's source address; internal source addresses always get internal ip address responses.
instance-data Resolver instance-data instance-data.internal instance-data.${cloud.vmstate.instance_subdomain}.internal hi

Service/Component Resolver

  • A records for components & services
  • Components:
    • All have a short-name (column 2 of euca-describe-services)
    • May have a partition which deteremines their subdomain (column 3 of euca-describe-services)
    • May be strictly internal (e.g., reporting) and have no DNS name associated as a result

Component Name Resolution

  • Component name lookups are:
    • Global services: ${componentId.name()}.DNSDOMAIN.COM
    • Partitioned services: ${componentId.name()}.${partition}.DNSDOMAIN.COM
euca-describe-services --all  | 
	awk '$3 == "PARTI00" {print $2"."$3".DNSDOMAIN.COM"} $3 != "PARTI00" {print $2".DNSDOMAIN.COM"}' | 
	sort | uniq | 
	xargs -i dig @10.111.1.2 A {} +retries=0 +timeout=1 | 
	sed 's/\t/ /g' | egrep '60\ +.*IN.*A.' | egrep -v '$^|--' 

autoscaling.DNSDOMAIN.COM. 60 IN A 10.111.1.2
cloudwatch.DNSDOMAIN.COM. 60 IN A 10.111.1.2
cluster.PARTI00.DNSDOMAIN.COM. 60 IN A 10.111.1.2
configuration.DNSDOMAIN.COM. 60 IN A 10.111.1.2
db.DNSDOMAIN.COM. 60 IN A 10.111.1.2
dns.DNSDOMAIN.COM. 60 IN A 10.111.1.2
euare.DNSDOMAIN.COM. 60 IN A 10.111.1.2
eucalyptus.DNSDOMAIN.COM. 60 IN A 10.111.1.2
jetty.DNSDOMAIN.COM. 60 IN A 10.111.1.2
ldap.DNSDOMAIN.COM. 60 IN A 10.111.1.2
loadbalancing.DNSDOMAIN.COM. 60 IN A 10.111.1.2
node.PARTI00.DNSDOMAIN.COM. 60 IN A 10.111.1.16
node.PARTI00.DNSDOMAIN.COM. 60 IN A 10.111.1.66
notifications.DNSDOMAIN.COM. 60 IN A 10.111.1.2
storage.PARTI00.DNSDOMAIN.COM. 60 IN A 10.111.1.2
tokens.DNSDOMAIN.COM. 60 IN A 10.111.1.2
walrus.DNSDOMAIN.COM. 60 IN A 10.111.1.2

Recursive Resolver

  • Resolves names outside of the eucalyptus controlled domain names

Split Horizon Resolver

clc 17610 > euca-modify-property -p cloud.vmstate.instance_subdomain=.testing
root@euca-1-106-32-141:~# dig  euca-10-111-101-129.testing.demo.com +short
1.106.32.141

instance-data Resolver

  • Responds to:

A

root@euca-1-106-32-141:~# dig A instance-data
169.254.169.254
Using domain server:
Name: 10.111.1.66
Address: 10.111.1.66#53
Aliases: 

instance-data has address 169.254.169.254

PTR

root@euca-1-106-32-141:~# dig PTR 169.254.169.254
;; Warning: query response not set
Using domain server:
Name: 10.111.1.66
Address: 10.111.1.66#53
Aliases: 

254.169.254.169.in-addr.arpa domain name pointer instance-data.
  • Support for 'instance-data' A record
  • Fix to service name resolution
  • Support for round-robin DNS for active-active services

tag:rls-3.4



Clone this wiki locally