Назад | Перейти на главную страницу

Как получить статический IP для инстанса EC? Или как использовать

Я просто устанавливаю наше приложение Rails на Amazon AWS. У нас есть 2 экземпляра EC2, один для приложения Rails, второй для Redis. А затем Amazon RDS для MySQL.

Когда я подключаю наше приложение Rails к Redis, мне нужно установить URL-адрес Redis, который содержит IP-адрес. Однако, если я перезапущу экземпляр Redis, его IP-адрес изменится, и URL-адрес Redis URL, который я ввел в приложение Rails для Redis, не будет работать (поскольку после перезапуска экземпляра Redis был сгенерирован новый IP-адрес).

Как справиться с таким поведением? Как избежать "потери" инстанса EC2 при его перезапуске? То же самое, вероятно, относится к Amazon RDS - так я настроил хост в database.yml:

  host: myapp-production.cg4mxcg62ca0.us-west-2.rds.amazonaws.com

Заранее спасибо.

Выпуск 1:

Эластичные IP-адреса не должны использоваться для сохранения адреса «внутреннего» сервера. На то есть 2 причины:

  1. Обычно вы не хотите, чтобы внутренние серверы были доступны в Интернете, а эластичные IP-адреса работают только из Интернета в ваш экземпляр EC2.
  2. Если вы подключаетесь из одного экземпляра EC2 к другому экземпляру EC2 по его эластичному IP-адресу, соединение покидает ваш VPC и повторно входит в VPC. Это усложняет безопасность и требует затрат на передачу данных.

Вместо этого вы должны ссылаться на свой внутренний сервер по его частному IP-адресу. Остановка и перезапуск экземпляра EC2 не приведет к изменению частного IP-адреса. Только после завершения работы экземпляра EC2 внутренний IP-адрес будет освобожден. И когда вы запускаете экземпляр EC2, вы можете при желании выбрать его частный IP-адрес.

Вы можете создать DNS-запись (частные размещенные зоны Route 53) для своего внутреннего сервера.

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

Выпуск 2:

Конечные точки экземпляра RDS не меняются со временем.

Кроме того, экземпляры RDS не могут быть остановлены. Их можно только удалить. Но даже если вы удалите экземпляр RDS и создадите его заново, если у него будет тот же идентификатор экземпляра RDS, его конечная точка останется согласованной.

Так что безопасно и лучше всего ссылаться на экземпляр RDS по имени хоста. myapp-production.cg4mxcg62ca0.us-west-2.rds.amazonaws.com.

Последние мысли:

Поместите свой сервер Redis и экземпляр RDS в частный подсети в вашем VPC. Нет причин, по которым публике нужен доступ к ним. Ваш экземпляр приложения Rails должен находиться в публичной подсети, потому что публика будет получать доступ к вашему приложению через этот экземпляр.