У меня есть стек приложений, который развертывается с формированием облака. Он содержит две группы автоматического масштабирования и отдельный экземпляр EC2.
Как мне настроить экземпляр EC2 или формирование облака для развертывания на IP-адрес старого экземпляра?
Наше текущее решение - выпустить update-stack
команду дважды. Один раз с частным IP-адресом экземпляра EC2 на что-то случайное в той же подсети, а затем снова с исходным IP-адресом.
Есть ли лучшее решение для этого?
Зачем нужно сохранять IP? Для входящего трафика лучше полагаться на DNS-имена, а не на какие-либо конкретные IP-адреса (например, управляемые в Route53 с Cloud Formation). Или, если у вас есть IP-адрес в белом списке в некоторых группах безопасности, вы можете использовать Источник SG вместо IP. Очень редко сервису требуется сохранить свой IP-адрес по истинным причинам.
В любом случае одно решение, которое я развернул в прошлом для настраиваемого стека DNS (одна из немногих служб, которые относятся к IP-адресам, а не к именам доменов), создавало отдельный Эластичный сетевой интерфейс (ENI) с требуемый IP-адрес и передать это по мере запуска и остановки экземпляров в группе AutoScaling. Это было сделано с помощью сценария запуска экземпляра EC2, в котором экземпляр отделяет интерфейс от старого экземпляра и присоединяет его к себе, по сути воровство ENI из старого экземпляра в ASG.
Это был грязный прием, но он сработал. Однако, если это вообще возможно, спланируйте развертывание таким образом, чтобы оно не зависело от каких-либо конкретных IP-адресов. Или опишите подробнее, зачем это нужно.
Надеюсь, это поможет :)