Подтвердить что ты не робот

Решение для локальных IP-изменений экземпляров AWS EC2

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

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

Спасибо!

См. ответ команды AWS на вопрос Статический локальный 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/

4b9b3361

Ответ 1

Ответы на акции:

  • Используйте AWS VPC, чтобы иметь полный контроль над адресацией экземпляров
  • Используйте Elastic IPs, которые будут разрешать локальный адрес экземпляра (а не общедоступный, как и следовало ожидать) при использовании для обмена данными между экземплярами EC2.

Ответ 2

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

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

Чтобы установить ec2-ssh:

  • sudo yum install python-boto (оболочка python для ec2 api)
  • git clone https://github.com/Instagram/ec2-ssh
  • В вашем файле ~/.bash_profile установите ваш ключ доступа и секретный код так:

    export AWS_ACCESS_KEY_ID = XYZ123

    экспорт AWS_SECRET_ACCESS_KEY = XYZ123

  • 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.

Ответ 3

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

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

Ответ 5

вы можете изменить адрес Ip ​​с помощью Elastic Ip:  Вы можете использовать код С#:

 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);

ваш общественный Ip изменится