Наилучшая практика для маршрутизации запросов на правильную версию сервера приложений в EC2
Я следую этой процедуре для развертывания новых версий приложений в EC2. Когда новая версия окажется стабильной, я обновлю запись A записи DNS, чтобы направить трафик на IP-адрес нового сервера.
Я полагаю, что это не лучшая практика, особенно потому, что вы не можете быть уверены, что DNS-кэши всех ваших посетителей обновили запись, чтобы вы могли перевести старую версию в автономный режим.
Есть ли лучшие практики для этого? Нужно ли создавать собственный сервер с собственным IP-адресом, на котором я могу настроить маршрутизацию (дорого)? Или я могу воспользоваться услугами моего хостинг-провайдера для этого? Или есть решение для AWS?
2 ответа
Существует множество различных способов беспрепятственного развертывания новой версии приложения.
Чтобы использовать существующий метод, вы должны просто убедиться, что у вас есть сниженные значения TTL для ваших записей DNS перед выполнением перехода.
- Изменить TTL на 5 минут
- Подождите общий период исходного значения TTL
- Внести изменения DNS
- Изменения должны быть обновлены для большинства распознавателей после истечения 5-минутного TTL
Не совсем гладко, но довольно часто.
Хорошо, это довольно старый вопрос, который я впервые вижу сейчас...
Я обновляю запись A записи DNS для маршрутизации трафика на IP-адрес нового сервера.
Вы правы, это приведет к тому, что неизвестный процент ваших пользователей все еще перейдет на старую версию приложения из-за кеширования DNS. Если вы последуете твердому предложению phoebus, вероятно, пользователей будет очень мало, но, тем не менее, в AWS есть лучший способ.
Или есть решение для AWS?
Да, и я упомянул об этом в своем первоначальном ответе, с которым вы связались. Эластичные IP-адреса Amazon, если вы используете только один IP-адрес для каждой услуги; или Elastic Load Balancing, если вы используете парк серверов.
Эластичные IP-адреса обычно переключаются через пару секунд, по моему опыту менее чем за 10 секунд.