EC2: публичный DNS-инстанс стабилен? Могу ли я рассчитывать на то, что он не изменится?

41

Я запустил свой первый экземпляр и использую его как веб-сервер. Я вижу, что у него есть публичный DNS (публичный URL), например:

ec2-123-45-6-789.compute-1.amazonaws.com

Я могу успешно зайти на этот сервер в своем браузере, нажать его через cURL и т. Д.

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

Но когда я вручную останавливаю и перезапускаю свой экземпляр, я вижу, что публичный DNS меняется! Я читал, что это происходит, когда вы явно останавливаетесь и перезапускаетесь, но не происходит, если вы просто «перезагружаетесь».

Я не планирую явно останавливать и перезапускать этот сервер когда-либо, но мой вопрос: изменится ли когда-нибудь этот публичный DNS самостоятельно по какой-либо причине? Например, если машина ненормально дает сбой или что-то еще.

Другими словами, безопасно ли отправлять приложение, привязанное к этому URL?

Асем Кишоре
источник

Ответы:

67

Публичное имя DNS всегда совпадает с публичным IP-адресом.

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

Если экземпляр EC2 находится в VPC, он будет сохранять один и тот же общедоступный IP-адрес при остановке и запуске.

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

Экземпляры могут потерпеть неудачу. Когда вы запускаете новый экземпляр для замены отказавшего или прерванного экземпляра, он, вероятно, получит другой публичный IP-адрес.

Поскольку экземпляры могут давать сбой, и, возможно, вы захотите изменить размер экземпляра (с остановкой / запуском), не рекомендуется «отправлять приложение, подключенное к [общедоступному IP-адресу]» (или DNS-имени). Как только ваш экземпляр будет остановлен / завершен / потерпел неудачу, другой пользователь может получить этот IP-адрес, назначенный его экземпляру, и весь ваш трафик пойдет к ним.

Рекомендуется использовать эластичные IP-адреса для привязки общедоступных сервисов к вашему экземпляру. Вы можете сохранить Elastic IP-адрес и со временем можете назначить его любому экземпляру, который хотите, даже если это тот же экземпляр после остановки / запуска.

Каждый Elastic IP-адрес поставляется с общедоступным DNS-именем, но вам, вероятно, лучше сопоставить собственное имя хоста с Elastic IP-адресом, чтобы это имя имело больше смысла для людей.

Вот руководство по эластичным IP-адресам:

http://aws.amazon.com/articles/1346

Вот статья, которую я написал, в которой говорится о различиях между перезагрузкой и остановкой / запуском экземпляра:

Перезагрузка против остановки / запуска инстанса Amazon EC2
http://alestic.com/2011/09/ec2-reboot-stop-start

Вот статья, которую я написал, которая дает причину, по которой вы можете захотеть остановить / запустить экземпляр, даже если вы не думаете, что будете делать это сегодня:

Перемещение экземпляра EC2 в больший размер
http://alestic.com/2011/02/ec2-change-type

Эрик Хаммонд
источник
Ну, по информации, я перезагрузил свой экземпляр ec2 и обнаружил, что общедоступный DNS изменился на новый ip. Может быть, между ними произошел сбой, но я не уверен в этом.
Николас Манзини
Amazon только рекомендует использовать эластичные IP-адреса для балансировщиков нагрузки. Так что если у вас есть личный сервис на экземпляре ec2, вам придется вручную обновить ips. docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Джесси
@Jesse ELB (Elastic Load Balancers) не используют Elastic IP-адреса. Фактически, ELB постоянно меняют IP-адреса и не могут быть сделаны постоянными вообще. Эластичные IP-адреса применяются к экземплярам EC2 и являются именно тем, что необходимо для первоначального вопроса.
Эрик Хаммонд