Синий / Зеленый развертывание с Nuxt - PullRequest
0 голосов
/ 17 января 2019

У меня есть сине-зеленая настройка развертывания в нашей инфраструктуре (краткая информация - новый сервер / контейнер запускается с новой сборкой; трафик перемещается на эти новые серверы в порядке очереди; 1 - из старого набора, 1 - из нового один). Проблема в том, что в какой-то момент может возникнуть сценарий, что трафик обслуживается из обоих (старых / новых) развертываний. JS для одного развертывания может быть недоступен для другого.

На вкладке запроса консоли я вижу, что запросы на чанк имеют вид domain.com/_nuxt/<component>/<part><hash>.js. Находясь в папке сборки nuxt, компонент существует в виде <component>_<part><hash>.js.

Будет ли безопасно синхронизировать сгенерированные js-файлы с s3 и обслуживать их через статический хостинг (например, AWS-S3), а также создать прокси-сервер на Nginx для перенаправления части. Я не мог найти никакого существующего решения для этого.

Большинство решений описывают, как выполнить развертывание с нулевым временем простоя, и предлагают подходы к изменению каталога с помощью программных ссылок, чтобы справиться с нулевым временем простоя. Это не решает проблему, когда пользователь уже может быть на сайте и не обязательно просматривал все страницы веб-приложения (поэтому загружаются все файлы js).

1 Ответ

0 голосов
/ 26 марта 2019

Это безопасно для файлов JS и ресурсов, если на вашем S3 есть все файлы для всего развертывания. Однако вы должны убедиться, что все файлы находятся внутри S3, прежде чем произойдет переключение.

Единственное, что вас беспокоит, это ваш API, сервис, бизнес-логика. Во время переключения нельзя развертывать конфликтующие версии API.

  • Зеленый: example.com/v1.0/data, возвращает массив
  • Синий: example.com/v1.0/data, возвращает объект

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

Вы можете уменьшить это, правильно обновив свои версии API.

иметь несколько версий API example.com/v1.0/data и example.com/v1.1/data. Во время развертывания ваш Blue / Green будет перенаправлен на соответствующие API. Это довольно утомительно.

Я кратко говорил об этом с помощью обновлений AWS Rolling: Время простоя AWS Nuxt Zero

...