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

24

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

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

Спасибо!

См. Ответ команды AWS на вопросСтатический локальный IP:

The internal IP address of EC2 instances is allocated via DHCP. On instance shutdown, or when the DHCP lease expires, the IP address is returned to the general EC2 DHCP pool of addresses available for other instances.

There is no way to guarantee that you will obtain the same DHCP address across reboots.

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

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

Ваш Ответ

5   ответов
16

Основные ответы:

  1. Use AWS VPC so you have complete control over instance addressing
  2. Use Elastic IPs, which will resolve to the instance's local address (not the public, as you'd expect) when used to communicate between EC2 instances
@MauvisLedford Я считаю, что лимит начинается с 5. Однако вы можете запросить больше Elastic IPs здесь:aws.amazon.com/contact-us/eip_limit_request
Обновление, что VPC теперь работает с микроэкземплярами, и у меня есть рабочий прототип VPC с двумя экземплярами. Один общедоступный через эластичный ip, а другой - только через локальный ip и общающийся только внутри моей частной сети. Это действительно путь. И лучше всего без дополнительной оплаты для использования. Mauvis Ledford
"Use Elastic IPs, which will resolve to the instance's local address (not the public, as you'd expect) when used to communicate between EC2 instances" Важное предупреждение: оно разрешается таким образом, только если вы используете публичное DNS-имя, а не публичный IP-адрес.
Кроме того, вы ограничены тем, сколько у вас может быть Elastic IP. Наш лимит, кажется, 10. Mauvis Ledford
Спасибо, Габртв. Просто обратите внимание, что AWS VPC не работает с микроэлементами. Я использую Kue для создания очереди в пабе / наемном рабочем месте и покупаю все небольшие экземпляры (в 4 раза дороже) не поддается управлению. Глядя на другие решения. Mauvis Ledford
0

you can change Ip Address using Elastic Ip: You Can Do Using C# Code:

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

after That DeAssociate It.

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

your Public Ip Will Change

1

Вот еще одно решение Ruby дляОбновление DNS маршрута 53 с экземпляра на AWS, Вы не должны ссылаться на необработанные сторонние системные IP-адреса в своих приложениях или конфигурациях сервера.

13

Я наткнулся на третий вариант. Там & APOS; sec2-SSH по Instragram люди. Это скрипт оболочки Python, который вы устанавливаете глобально, и он позволяет вам запрашивать общедоступные DNS ваших экземпляров ec2 по имени тега, а такжеssh а также через имя тега.

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

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

  1. sudo yum install python-boto (python wrapper for ec2 api)
  2. git clone https://github.com/Instagram/ec2-ssh
  3. In your ~/.bash_profile set your AWS access key and secret like so:

    export AWS_ACCESS_KEY_ID=XYZ123

    export AWS_SECRET_ACCESS_KEY=XYZ123

  4. cd into the bin folder of the repo, there will be two files:

    ec2-host and 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.

1

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

Но я думаю, что хорошее решение может быть получено с помощьюAWS VCP.

Это может составить минимум $ 18,60 в месяц + 0,008 долл. США за ГБ Обработанные данные. Спасибо за обсуждение варианта, хотя. Будет расследовать Amazon Virtual Private Cloud. Mauvis Ledford

Похожие вопросы