apache — CodeDeploy для PHP-приложений с липкими сессиями

У меня есть приложение PHP, работающее в группе автоматического масштабирования AWS, которая использует липкие сессии за AWS ELB.

При запуске CodeDeploy на этих машинах для выпуска, CodeDeploy сначала удалит файлы перед тем, как заменить их новыми. Однако в течение этого короткого промежутка времени все веб-запросы, попадающие на серверы, получат 404 или 500 ошибок сервера из-за отсутствия всех файлов.

Соединение, истощающее и вытягивающее серверы из пула, не будет работать из-за зависания сеанса, так как мы будем выводить пользователей из системы, когда мы извлекаем сервер из пула.

Я рассматривал развертывание кода в новом каталоге в файловой системе и повторное выполнение команды rsyncing, но я думаю, что это только частично решит проблему, так как rsync также не является мгновенным.

Есть ли возможность для липких сессионных серверов, подобных этому, чтобы увидеть плавное развертывание?

1

Решение

Один из вариантов, который может помочь, — это полагаться на поведение существующего файла и установить опцию RETAIN. Флаг в команде aws deploy create-deploy имеет значение —file-существующие-поведение: https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html

Если вы создаете развертывание через консоль, есть способ выбрать «Параметры содержимого», который позволяет вам указать, должно ли развертывание быть неудачным, перезаписать или сохранить файл.

Но я не уверен на 100%, решит ли это проблему с тех пор, как вы не обновите файлы во время развертывания. Я быстро читаю липкие сессии … но может ли ваше клиентское программное обеспечение просто повторить попытку, если оно потеряет липкую сессию? Я не могу придумать способ обойти это.

Мол, ваш хозяин может исчезнуть в любое время. Во время развертывания вы можете (не подозревая об этом) удалить хост из балансировщика нагрузки. Сценарии остановки вашего приложения могут завершать работу службы вашего хоста. Могу поспорить, что у липких сессий должно быть решение, где вы можете удалить предыдущие сеансы с хоста и не дать новым клиентам попасть на этот хост. Но я не знаю достаточно о том, что ты здесь делаешь.

Я надеюсь, что эта информация поможет вам.
-Asaf

0

Другие решения

Других решений пока нет …