У меня есть приложение PHP, работающее в группе автоматического масштабирования AWS, которая использует липкие сессии за AWS ELB.
При запуске CodeDeploy на этих машинах для выпуска, CodeDeploy сначала удалит файлы перед тем, как заменить их новыми. Однако в течение этого короткого промежутка времени все веб-запросы, попадающие на серверы, получат 404 или 500 ошибок сервера из-за отсутствия всех файлов.
Соединение, истощающее и вытягивающее серверы из пула, не будет работать из-за зависания сеанса, так как мы будем выводить пользователей из системы, когда мы извлекаем сервер из пула.
Я рассматривал развертывание кода в новом каталоге в файловой системе и повторное выполнение команды rsyncing, но я думаю, что это только частично решит проблему, так как rsync также не является мгновенным.
Есть ли возможность для липких сессионных серверов, подобных этому, чтобы увидеть плавное развертывание?
Один из вариантов, который может помочь, — это полагаться на поведение существующего файла и установить опцию RETAIN. Флаг в команде aws deploy create-deploy имеет значение —file-существующие-поведение: https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html
Если вы создаете развертывание через консоль, есть способ выбрать «Параметры содержимого», который позволяет вам указать, должно ли развертывание быть неудачным, перезаписать или сохранить файл.
Но я не уверен на 100%, решит ли это проблему с тех пор, как вы не обновите файлы во время развертывания. Я быстро читаю липкие сессии … но может ли ваше клиентское программное обеспечение просто повторить попытку, если оно потеряет липкую сессию? Я не могу придумать способ обойти это.
Мол, ваш хозяин может исчезнуть в любое время. Во время развертывания вы можете (не подозревая об этом) удалить хост из балансировщика нагрузки. Сценарии остановки вашего приложения могут завершать работу службы вашего хоста. Могу поспорить, что у липких сессий должно быть решение, где вы можете удалить предыдущие сеансы с хоста и не дать новым клиентам попасть на этот хост. Но я не знаю достаточно о том, что ты здесь делаешь.
Я надеюсь, что эта информация поможет вам.
-Asaf
Других решений пока нет …