Как узнать внутреннее DNS-имя экземпляра Amazon AWS? - PullRequest
4 голосов
/ 31 марта 2011

У меня есть система с N серверами в облаке Amazon AWS. Они все в одной зоне. Экземпляр A хочет поговорить с экземпляром B, но он, очевидно, не проходит через Интернет. Насколько я понимаю, внутренний IP меняется каждый раз, когда я перезагружаю экземпляр. Существует ли внутреннее постоянное DNS-имя для всех моих экземпляров, благодаря которому они могут взаимодействовать между собой, не беспокоясь о перезапусках?

Ответы [ 4 ]

3 голосов
/ 31 марта 2011
2 голосов
/ 31 марта 2011

Нет, невозможно использовать «фиксированные» IP-адреса или DNS-имена с использованием готовых экземпляров AWS. Даже если вы назначите EIP (Elastic IP) экземпляру, это влияет только на общедоступную ссылку на IP / DNS, а не на внутреннюю.

Мы используем пару DNS-серверов в нашей среде EC2 (это Windows, поэтому они являются первичными / вторичными контроллерами домена AD). Благодаря тому, что все другие экземпляры используют эту пару в качестве своих DNS-серверов, мы можем назначать уникальные имена компьютеров каждому экземпляру по мере их раскрутки и ссылаться на любые / все другие экземпляры по этим именам.

Так, например, наш сервер Subversion на основе EC2 имеет EIP, что означает, что он всегда находится в одном и том же месте, когда мы общаемся с ним вне EC2, но сервер CruiseControl на основе EC2 называет его [ourec2domain] .SVNHOST, потому что он регистрирует это имя в контроллерах домена при запуске.

0 голосов
/ 15 мая 2012

Из экземпляра:

curl http://169.254.169.254/latest/meta-data/local-hostname
0 голосов
/ 23 февраля 2012

У меня были те же проблемы, когда я впервые начал использовать облако.Я также использую настройку двух DNS-серверов и добавляю тег к двум серверам с помощью команды ec2-create-tags <instance> --tag Purpose=DNS

Используя созданную мной службу http://cloudinitnet.codeplex.com, сервер запускает скрипт powershell при запуске.Этот скрипт powershell проверяет amazon на наличие двух серверов DNS и добавляет их в сетевой интерфейс.Предполагая, что у вас есть список серверов DNS на данный момент, вы можете использовать код ниже, чтобы добавить записи на сервер DNS.Чтобы получить список серверов, просто запросите свою учетную запись с помощью AWSSDKnet с powershell.

$connection = "Local Area Connection 2"
$registered = $false;

# Clean up the DNS entries incase there are any settings already
Write-Output "Clearing DNS Entries"
$X = netsh interface ip set dns $connection static none

$index = 1;
foreach ( $server in $servers)
{
    # Set this server's 
    Write-Output "Adding server $server to DNS"
    $X = netsh interface ip add dnsserver $connection $server index=$index

    # Register the server's hostname with the dns server
    if(-not ($registered))
    {
        $computer = hostname
        $address = (netsh interface ip show address $connection | select-string "IP Address") -replace '^[^\d]+'
        $rec = [WmiClass]"\\dns01\root\MicrosoftDNS:MicrosoftDNS_ResourceRecord"
        $rec.CreateInstanceFromTextRepresentation("dns01", "network.cloud", "$($computer).network.cloud IN A $address")
        $registered = $true;
    }
    $index++;
}

Если ваши серверы не являются окнами, вы можете использовать Ubuntu или Amazon Linux «Cloud-Init» для выполнения той же задачи.

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