Программный DNS - PullRequest
       21

Программный DNS

4 голосов
/ 24 марта 2010

Я давно работаю разработчиком, но не очень разбираюсь в DNS. Вот моя проблема:

Наше приложение запускает серверы на Amazon EC2 для клиентов. Один клиент хочет использовать собственные DNS для каждого запущенного сервера вместо обычного длинного общедоступного DNS, предоставляемого AWS: например, server-5.demo.ourclient.com, server-6.demo.ourclient.com.

Какой самый простой / чистый / лучший способ решить эту проблему изнутри нашего приложения, которое запускает серверы и знает общедоступный DNS Amazon? Возможно, мы также сможем получить контроль над demo.ourclient.com ....

Есть ли хорошие хостинговые решения с API? Нужно ли нам управлять DNS-сервером для * .demo.ourclient.com?

Спасибо!

Чад

Ответы [ 4 ]

3 голосов
/ 29 марта 2012

Еще лучше было бы использовать Route53, который является сервисом Amazon Dynamic DNS: http://aws.amazon.com/documentation/route53/

2 голосов
/ 24 марта 2010

Вы можете попробовать один из динамических днс сервисов. Они позволяют вам определять свои собственные имена хостов, такие как machine1.dyndns.org, и прикреплять их к IP-адресу. Существуют сценарии, которые можно запустить для обновления преобразователя dyndns с помощью динамического IP-адреса, предоставленного EC2.

0 голосов
/ 26 августа 2017

Этот код получает ваш 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
0 голосов
/ 23 октября 2012

Я не очень понимаю, почему ваш клиент не будет использовать здесь Elastic IP или Elastic Load Balancer?

С Elastic IP вы можете сохранить непротиворечивое имя в вашей общедоступной записи DNS, а затем вручную или программно обновить экземпляр EC2, связанный с этим EIP, при необходимости, используя сценарии API elb.

С Elastic Load Balancer вы можете легко подключить только один активный узел к ELB, а затем программно удалить / добавить узлы и соответственно обновить Route53.

Вы можете использовать API внутреннего компьютера, чтобы получить значения (идентификатор экземпляра и т. Д.) Для этих вызовов в сценарии boostrap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...