2012-05-24 2 views
24

Amazon предоставляет только определенное количество статических IP-адресов, а локальные (частные) ips каждого экземпляра EC2 могут меняться при перезапуске машины. Это позволяет создать стабильную платформу, где экземпляры EC2 зависят друг от друга, как ни странно, трудно использовать.Решение для локальных IP-изменений экземпляров AWS EC2

Я много раз искал в Интернете много разных решений и до сих пор не нашел ничего разумного вне назначения эластичного ip-адреса на EC2, даже если он не был публичным. У кого-нибудь есть другие хорошие идеи, которые на самом деле легко выполнить?

Спасибо!

См ответ команды AWS на вопрос Static local IP:

Внутренний IP-адрес экземпляров EC2 выделяется через DHCP. При завершении экземпляра экземпляра или при истечении срока аренды DHCP IP-адрес равен , возвращенному в общий пул DHCP DHCP, доступный для других экземпляров .

Невозможно гарантировать, что вы получите тот же адрес DHCP при перезагрузках.

Редактировать: Ответ заключается в использовании Amazon VPC. Нет недостатка, кроме тривиальной дополнительной настройки, потому что теперь вы управляете маршрутизатором. Это мир, кроме простого старого экземпляра EC2 на AWS. Это настолько необходимо, что VPC будет включен для всех будущих установок AWS по умолчанию. См. Это сообщение для получения дополнительной информации: http://www.reddit.com/r/aws/comments/1a3n0r/ec2_update_virtual_private_clouds_for_everyone/

+1

Есть ли учебник по точности, как настроить Amazon VPC? Я ничего об этом не знаю. – Miranda

+0

Миранда: прочитайте их. http://blog.engineering.kiip.me/post/12288961849/ec2-to-vpc-transition-worth-doing http://nineofclouds.blogspot.com/2013/01/vpc-migration-planning.html https: //forums.aws.amazon.com/thread.jspa?threadID=126976 – Maziyar

+0

@Mauvis, Сколько стоит VPC? – Pacerier

ответ

16

Маточных ответы:

  1. Используйте AWS VPC так что вы имеете полный контроль над экземпляром адресацией
  2. Используйте Elastic IP-адрес, который будет решать местного адреса экземпляра (а не общественности, как вы» d) при использовании для связи между экземплярами EC2
+0

Спасибо gabrtv. Просто обратите внимание, что AWS VPC не работает с микро-экземплярами. Я использую Kue для создания очереди pub/sub worker и покупки всех небольших экземпляров (при 4x стоимости) не поддается управлению. Глядя на другие решения. –

+0

Кроме того, вы ограничены тем, сколько у вас эластичных IP-адресов. Наш лимит, кажется, равен 10. –

+1

@MauvisLedford Я считаю, что предел начинается с 5. Однако вы можете запросить дополнительные Упругие IP-адреса здесь: http: //aws.amazon.com/contact-us/eip_limit_request/ – gabrtv

1

Я был в той же ситуации один раз. У меня все еще нет опыта, чтобы решить его должным образом. Мое уродливое решение состояло в том, чтобы использовать локти не для балансировки нагрузки, а только для конечной точки.

Но я думаю, что хорошее решение можно получить, используя aws vpc.

+0

Это может составлять $ 18,60 месяц минимально + $ 0,008 за Гб. Обработанные данные. Спасибо, что обсудили этот вариант. Будет исследовать виртуальное частное облако Amazon. –

12

Я наткнулся на третий вариант. Есть ec2-ssh от людей Instragram. Это сценарий оболочки python, который вы устанавливаете глобально, и позволяет вам запрашивать общедоступные dns ваших экземпляров ec2 по имени тега, а также ssh через имя тега.

Документация для него практически отсутствует. Я записал шаги для установки ниже:

Чтобы установить EC2-SSH:

  1. sudo yum install python-boto (Python обертку для ec2 API)
  2. GIT клон
  3. В файле ~ /.bash_profile установить ключ доступа AWS и секрет, как так:

    экспорт AWS_ACCESS_KEY_ID = XYZ123

    экспорт AWS_SECRET_ACCESS_KEY = XYZ123

  4. cd в bin папку репо, будет два файла:

    ec2-host и ec2-ssh

скопируйте их на ваш /usr/bin или /usr/local/bin.

Теперь вы можете сделать удивительный материал, как:

$ ec2-host ZenWorker 
ec2-999-xy-999-99.compute-1.amazonaws.com 

и

$ ec2-ssh ZenWorker 
Connecting to ec2-999-xy-999-99.compute-1.amazonaws.com. 

Обратите внимание, что в ваших обычных сценариях оболочки можно использовать кавычку называть эти глобальные инструменты. Я приурочил эти вызовы, и они берут между 0,25 и 0,5 секунды, используя экземпляр EC2, так что это действительно единственный недостаток. Возможно, вы можете жить с задержкой или использовать тот факт, что публичный DNS изменяется только для экземпляра при перезагрузке для решения проблемы.

Обратите внимание, что эти две программы являются сценариями командной строки, и вам не нужны никакие знания Python для их использования. Для поклонников PHP или тех, которые также хотят легко найти файлы scp, не зная об изменении общедоступного DNS, вы можете проверить ec2dns.

0

Вот еще одно решение для Ruby для Updating Route 53 DNS from instance on AWS. Вы не должны ссылаться на исходные IP-адреса сторонних систем в ваших приложениях или конфигурациях серверов.

0

вы можете изменить IP-адрес с помощью Elastic Ip: вы можете сделать с помощью C# Код:

var associateRequest = new AssociateAddressRequest 
      { 
       PublicIp = your Elastic Ip, 
       InstanceId = Your Instance Id Which You Assign 
      };  
     amazonEc2Client.AssociateAddress(associateRequest); 

после этого DeAssociate It.

 var disAssociateRequest = new isassociateAddressRequest(publicIp.ElasticIpAddress1); 
    AmazonEc2Client.DisassociateAddress(your Elastic Ip); 

ваш Public Ip Изменит

Смежные вопросы