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

Другие вопросы по тегам