2010-03-24 6 views
4

저는 오랫동안 개발자 였지만 DNS에 대해서는 경험이 없습니다. 여기에 내 문제가있다 :프로그래밍 방식의 DNS

우리의 애플 리케이션은 클라이언트를 위해 Amazon EC2에서 서버를 시작한다. 한 클라이언트는 AWS에서 제공하는 일반적인 긴 공용 DNS 대신 시작된 모든 서버에 대해 사용자 정의 DNS를 사용하려고합니다. 예를 들어 server-5.demo.ourclient.com, server-6.demo.ourclient.com.

서버를 시작하고 Amazon 공개 DNS를 알고있는 애플리케이션에서이 문제를 해결하는 가장 쉬운 방법은 무엇입니까? 우리는 아마도 demo.ourclient.com을 제어 할 수 있습니다 ....

API가 포함 된 훌륭한 호스팅 솔루션이 있습니까? * .demo.ourclient.com을 위해 DNS 서버를 관리해야합니까?

감사합니다.

차드

답변

2

당신은 dynamic dns 서비스 중 하나를 시도 할 수 있습니다. 이를 통해 machine1.dyndns.org와 같은 자체 호스트 이름을 정의하고이를 IP 주소에 연결할 수 있습니다. EC2에서 제공하는 동적 IP 주소로 dyndns 해결 프로그램을 업데이트하기 위해 실행할 수있는 스크립트가 있습니다.

+0

스티브. 감사합니다. 또한 dnsmadeeasy.com - 달콤한 발견. – Chad

+0

DynDNS.org/Dyn.com에는 inadyn 및 ddclient와 함께 작동하는 구성 파일을 빌드하는 멋진 페이지가있어이를 설정하는 방법을 찾는 데 어려움이 없습니다. EC2 인스턴스 및 ddclient와 함께 사용했으며 문제가 전혀 없습니다. https://account.dyn.com/tools/clientconfig.html (URL에 이미 계정에 로그인해야합니다.) –

3

아마존의 동적 DNS 서비스입니다 Route53, 사용하는 것이 더 나은 : http://aws.amazon.com/documentation/route53/

+0

경로 53은 실제로 동적 DNS 서비스가 아닙니다. 그것은 단지 DNS 서비스입니다. 레코드를 자동으로 업데이트하는 간단한 방법은 없습니다. _are_ 복잡한 방법이 있습니다. – Corrodias

0
클라이언트 중 하나를 여기에 유동 IP를 사용하지 왜 난 정말 이해가 안

, 또는 탄성로드 밸런서를?

Elastic IP을 사용하면 elb API 스크립트를 사용하여 필요할 때마다 공용 DNS 레코드에 일관된 이름을 유지하고 해당 EIP와 관련된 EC2 인스턴스를 수동 또는 프로그래밍 방식으로 업데이트 할 수 있습니다.

Elastic Load Balancer을 사용하면 ELB에 액티브 노드를 하나만 붙이면 프로그래밍 방식으로 노드를 삭제/추가하고 그에 따라 Route53을 업데이트 할 수 있습니다.

내부 시스템의 API를 사용하여 부스트 랩 스크립트에서 이러한 호출에 대한 값 (인스턴스 ID 등)을 얻을 수 있습니다.

0

이 코드는 ip를 얻은 다음 route53에 설정합니다. DOMAIN 및 HOSTED_ZONE_ID 변수를 제공해야합니다. 시작할 때 실행할 수 있습니다. ifconfig.co에 의존하고 싶지 않다면 대신

DOMAIN="desired.domain.com" 
HOSTED_ZONE_ID="..." 

# ANYWHERE, but relies on ifconfig.co 
MYIP=$(curl -s ifconfig.co) 

# ON EC2: 
MYIP=$(curl -s curl 169.254.169.254/latest/meta-data/public-ipv4) 

# create json to send to route53 
cat > /tmp/actual_ip.json <<EOF 
{ 
     "Comment": "Update the A record set", 
     "Changes": [ 
       { 
         "Action": "UPSERT", 
         "ResourceRecordSet": { 
           "Name": "$DOMAIN", 
           "Type": "A", 
           "TTL": 300, 
           "ResourceRecords": [ 
             { 
               "Value": "$MYIP" 
             } 
           ] 
         } 
       } 
     ] 
} 
EOF 

# update the dns entry 
if ! /usr/local/bin/aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --change-batch file:///tmp/actual_ip.json; then 
    echo "error calling aws $?" 
fi 
관련 문제