У меня следующая настройка хранилища на основе NFS:
Вычислительные узлы - это Linux. Серверы NFS - это Solaris.
Не очень важный пользователь запускает кучу заданий с интенсивным чтением на подмножестве вычислительных узлов. В результате вся группа вычислительных узлов становится очень медленной (ls
блоки на 30 секунд). Мне удалось отследить, что выделенный сервер NFS достигает предела пропускной способности чтения san.
Как реализовать качество обслуживания (QoS), ограничивая пропускную способность NFS узлами, процессами или пользователями?
Я не уверен, что NFS можно «укрепить» против DDOS из кластера. Если вам это действительно нужно, использовать что-то еще для доступа к постоянному хранилищу будет проще.
Учитывая вашу настройку, я бы предложил выполнять «QoS» на уровне кластерного механизма.
Сконфигурируйте ресурс «io_heavy» с ограничением «10» и пусть ваши пользователи запрашивают «1» для заданий с интенсивным вводом-выводом. Таким образом, одновременно будет выполняться не более 10 заданий, связанных с вводом-выводом. Ваша NFS не разрушится, а остальная часть кластера останется свободной для задач, связанных с процессором.
Вы также должны добавить к узлам рабочие диски. Они могут содержать временные данные, которые на самом деле не нужно передавать в NFS. Это также помогает предоставить «справочные данные», которые здесь обычно используются.
Я предполагаю, что ваши серверы NFS Solaris используют ZFS. Заполните серверы как можно большим объемом оперативной памяти. Добавьте твердотельные накопители к серверам, которые будут использоваться в качестве дисков ZFS Cache. Обе эти вещи уменьшают трафик в вашей SAN.
QOS обычно используется для предоставления приоритета определенным типам сетевых потоков. Не можете ли вы изолировать и ограничить порт пользователя на сетевом коммутаторе? Или поместить его в отдельный VLAN? Или ограничить скорость передачи данных порта 100 Мбит / с?
Кроме этого, мне неизвестны какие-либо ограничения пропускной способности NFS по имени пользователя или MAC-адресу. Может быть, у вашего сервера NFS есть опции, обеспечивающие более распределенный способ обслуживания файловых запросов?
Думаете нестандартно: переместите файлы с интенсивным чтением ближе к пользователю и запустите процесс резервного копирования / rsync, чтобы записать обновленные данные обратно в NAS?
Что это за задания с интенсивным чтением?