Как управлять и подключаться к динамическим IP-адресам экземпляров EC2? - PullRequest
2 голосов
/ 18 мая 2011

При написании веб-приложения с использованием Django или чего-либо еще, как лучше всего подключаться к динамическим экземплярам EC2, таким как кластер Redis или экземпляры memcache? IP-адреса меняются между перезагрузками и т. Д. Эластичные IP-адреса по умолчанию ограничены 5 - каковы другие варианты автоматического обнаружения / автоматического обновления, какие машины доступны?

Ответы [ 5 ]

2 голосов
/ 12 января 2012

Поздний ответ, но используйте Boto: http://boto.cloudhackers.com/en/latest/index.html

Вы можете использовать группы безопасности, теги и другие средства, чтобы поразить API EC2 и выбрать экземпляры / IP для каждой вещи (сервер БД, сервер кэшированияи т. д.) во время загрузки.Мы делаем это с большим успехом в развертывании, и также движемся в этом направлении с помощью нашего Django settings.py.

1 голос
/ 01 июля 2011

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

Для вашей проблемы есть две хорошие альтернативы:

Если вы не используете микроэкземпляры EC2 или балансировщики нагрузки, вам определенно следует использовать Amazon Virtual Private Cloud, поскольку он позволяет вам контролировать IP-адреса экземпляров и таблицы маршрутизации ( проверить все ограничения перед использованием этой службы ).

Если вы используете только экземпляры EC2, вы можете написать скрипт, который использует инструменты API EC2 для запуска команды ec2-description-instances , чтобы найти все экземпляры и их публичные / частные IP-адреса. Затем скрипт может параметризировать имена экземпляров для хостов и обновлять / etc / hosts. Наконец, вы должны поместить скрипт в crontab каждого компьютера / экземпляра, которому требуется доступ к экземплярам EC2 (см. ec2-description-instances ).

1 голос
/ 18 мая 2011

Один метод, который я недавно упоминал на вебинаре AWS, заключался в том, чтобы хранить такую ​​информацию в SimpleDB. По сути, вы будете использовать SimpleDB в качестве места центральной конфигурации, и каждый запускаемый вами экземпляр будет регистрировать свой IP и т. Д. С этой конфигурацией, поэтому у вас всегда будет полное описание всех ваших экземпляров в одном месте. Я не видел этого на практике, поэтому я не знаю, какие именно методы будут, но идея звучит разумно. Я полагаю, что вы можете использовать SNS или что-то еще, чтобы сигнализировать обо всех других экземплярах всякий раз, когда изменяется конфигурация, чтобы каждый мог обновить свой кэш конфигурации в памяти.

Я пока не знаю административных API-интерфейсов AWS, но, вероятно, есть вызов API, чтобы вывести список ваших экземпляров EC2, и в этот момент вы можете использовать какой-то собственный протокол для проверки связи с каждым из них и спросить, что это такое - - часть кластера memcache, Redis и т. д.

0 голосов
/ 01 июля 2011

Делайте это традиционным способом: с DNS.Это то, для чего он был построен, так что используйте его!Когда машина загружается, попросите ее указать доменные имена, связанные с ее функцией, и используйте ее для своей конфигурации.Если он перестает отвечать, повторно разрешите DNS (или все равно делайте это периодически).

Я думаю, что для этого можно использовать route53 и систему эластичной балансировки нагрузки, если вы хотите придерживаться решений Amazon.

0 голосов
/ 07 июня 2011

Если вы хотите остаться с экземплярами EC2 (я в той же лодке, я читал, что вы можете делать такие вещи с их VPC или использовать ведро S3 или что-то в этом роде), но с EC2 я Я нахожусь в процессе написания таких вещей, как это ... все очень просто до той части, где вам нужно связаться с сервером с сервером из вашего центра обработки данных или чем-то еще. В настоящее время я делаю это с помощью API для создания экземпляра и его запуска ... затем, когда он будет готов, я обращаюсь к серверу для выполнения скрипта powershell, который у меня есть на сервере .... powershell переименовывает компьютер и перезагружает его ... который заботится о необходимости имени хоста и MAC для брандмауэров нашего центра обработки данных. Я еще не нашел способ удаленно переименовать компьютер.

Что касается знания IP, то гибкие IP - это путь. Они говорят, что вам разрешено только 5, и нам нужно подать заявку на большее, но мы регулярно просим больше, и они дают нам их… нам сейчас около 15, и они еще не жаловались.

Другой вариант, если вы не хотите переименовывать весь компьютер и тому подобное ... вы можете использовать DHCP и настроить свой компьютер, чтобы при загрузке он получал имя компьютера и все от DHCP .... Я не знаю, как именно это сделать, я сталкивался с очень умными людьми, которые говорили мне, как это можно сделать во время моего исследования для Amazon.

Я бы определенно порекомендовал вам войти в API Amazon ... Я работаю с ним менее месяца и могу делать самые разные безумные вещи. Мой код может обнаружить области нашей системы, которые испытывают стресс, раскрутить 10 серверов amazon, все настроены на то, чтобы действовать как требуется для снятия стресса, и быть готовым отправить задания всем менее чем за 7 минут. Приносит слезы на мой глаз.

Документация очень полная ... Сам API - это произведение искусства и программировать с радостью ... Мне очень понравилось работать с ним. (и нет, я не работаю на них, смеется)

...