#php #symfony
#php #симфония
Вопрос:
У нас есть кластер с двумя nginx-серверами, на которых запущено наше приложение Symfony3. Оба сервера подключены к хранилищу NFS, обеспечивающему конфигурацию кластера для nginx и php-fpm, а также содержащему код приложения.
Проблема: Поскольку у нас были проблемы с разрешениями с кэшем в NFS, мы обнаружили, что Symfony рекомендует НЕ размещать кэш и журналы в общем доступе NFS из-за проблем с производительностью.
Решение: исходя из этого и поскольку наша версия NFS не поддерживает ACL, мы переместили кэш и журналы в каталоги, которые находятся непосредственно на серверах. Мы добились этого, изменив ядро приложения. После этого мы настроили ACL на обоих серверах для каталогов.
В общем, мы ищем «лучшее решение», которое не требует корректировки конфигурации развертывания каждый раз при добавлении нового сервера.
Комментарии:
1. Почему вы предоставляете общий доступ к приложению на диске NFS? Почему бы вам не создать экземпляр приложения на сервере и не использовать обычные папки cache и logs? (Я действительно не знаю, лучше ли это, просто спрашиваю из любопытства)
2. Мы думали об этом, но было бы проще просто поддерживать один «экземпляр». Допустим, например, мы развертываем на любом узле — развертывание успешно выполняется на node1 и завершается неудачей на node2. У нас нет возможности вернуть node1 к версии node2, а также мы не можем просто исключить node2 из-за производительности.
3. Я понимаю, но кластер также предназначен для реагирования на сбои при развертывании. Если ваше развертывание завершится неудачно на единственном узле, который у вас есть, тогда все приложение не будет работать. Я ошибаюсь?
4. Он развернут на общем ресурсе NFS, который является многоизбыточным, поэтому обеспечивает максимальную безопасность, чтобы избежать простоев.
5. Понятно, спасибо, что нашли время объяснить мне это!