У меня есть веб-сайт, который получает около 7 тыс. Запросов в секунду на сервере nginx. Этот сервер обрабатывает перезаписи на сервер Apache, а также напрямую обслуживает статические файлы, изображения и т. Д. Статические файлы - самая большая часть там с около 5 000 запросов.
При обновлении архитектуры я думаю об использовании центрального файлового сервера, который экспортирует каталог, содержащий эти статические файлы, через NFS. У этих файлов не будет доступа для записи, поэтому каталог можно монтировать только для чтения на машине nginx. Моя главная забота:
NFS достаточно быстр для этого? Существует ли ограничение на количество запросов NFS? Есть ли какие-то обязательные опции при этом?
Бонус: есть ли другие варианты для этой настройки, кроме NFS?
Спасибо!
Ответы:
Установив центральный сервер NFS, вы привносите единственную точку отказа в свой проект. Это само по себе должно быть решающим фактором. Если нет, NFS может быть достаточно быстрым для такой нагрузки. Критическими факторами будут наличие достаточного объема ОЗУ для кэширования файлов, межсоединений с низкой задержкой (Gig-E или лучше) и настройки (меньше, чем в предыдущем).
Вам также следует рассмотреть возможность использования rsync или аналогичного инструмента для хранения локальных копий обновлений статических файлов на каждом отдельном веб-сервере. Другим вариантом может быть решение SAN или резервный сервер NFS (оба варианта будут намного сложнее и дороже, чем идея rsync).
источник
Я использую cachefilesd (и последнее ядро linux с cachefs) для кеширования файлов NFS на локальный жесткий диск. Таким образом, каждое чтение в nfs копирует файл в каталог / var / cache / fs, и оттуда будут доставляться следующие чтения, а ядро проверяет в nfs, является ли содержимое все еще действительным.
Таким образом, вы можете иметь центральную NFS, но без потери производительности локальных файлов
Cachefilesd позаботится об очистке старых файлов, когда свободный размер / inode достигнет настроенного уровня, так что вы сможете обслуживать необычные данные из NFS и общие запросы с HD
Конечно, также используйте лак для кеширования наиболее распространенных запросов и затем сохраните nginx / NFS.
Вот небольшая инструкция
источник
Скорость зависит от многих факторов:
Ограничение открытых файлов через NFS является ограничением операционной системы хоста. FreeBSD имеет, например, множество различных опций настройки для поддержки большого количества открытых файлов, но это зависит от объема оперативной памяти на вашем сервере.
Альтернативой центральному файловому серверу является использование синхронизации / репликации между вашими веб-серверами (как предлагает Крис С.). rsync или DRBD могут быть отличным и экономически эффективным выбором.
источник
Я бы посоветовал против NFS, если вы не поместите туда некоторое кэширование. Кеш nginx лучше, чем ничего, но Varnish лучше.
С учетом вышесказанного, если ваша нагрузка изменится на более динамический контент, чем статический, станет важнее обслуживать файлы приложений с локального диска.
Если вы включили NFS, убедитесь, что у вас есть резервирование.
источник