CodeDeploy для приложения PHP с фиксированными сессиями

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

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

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

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

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


person sailboatlie    schedule 18.01.2017    source источник
comment
Вместо использования rsync вы можете рассмотреть его мгновенную версию, lsyncd — демон для постоянной синхронизации деревьев каталогов.   -  person Ijaz Ahmad Khan    schedule 18.01.2017


Ответы (1)


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

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

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

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

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

person Asaf Erlich    schedule 10.07.2017