Skip to main content

Зачем нужен NFS в кластерной конфигурации

Зачем нужен NFS в кластерной конфигурации

Назначение

NFS (Network File System) — сетевой протокол для совместного доступа к файловой системе (RFC 7530 для v4). В кластере Принтум используется как общее хранилище заданий печати.

Версии NFS

Версия Статус Ключевые особенности
NFSv3 Широко используется Stateless, UDP/TCP, порт 2049
NFSv4 Рекомендуется Stateful, только TCP, порт 2049, ACL, Kerberos
NFSv4.1/4.2 Современный pNFS, параллельный доступ, улучшенная производительность

Принцип работы

NFS-сервер экспортирует директорию:
  /exports/printum-jobs

NFS-клиенты (узлы ПринтМенеджера) монтируют её:
  mount -t nfs nfs-server:/exports/printum-jobs /var/printum/jobs

Оба клиента видят одну и ту же файловую систему:
  ПринтМенеджер 1: /var/printum/jobs/  ←─── один каталог ───→  ПринтМенеджер 2

Почему задания нужно хранить централизованно

В Active-Active кластере любой узел может получить запрос от любого пользователя.

Без общего хранилища:

  • Пользователь отправил задание через ПринтМенеджер 1.
  • Он подходит к МФУ и его запрос попадает на ПринтМенеджер 2.
  • ПринтМенеджер 2 не видит задания — release-печать невозможна.

С NFS:

  • Задание сохраняется в общую директорию.
  • Любой узел читает задание и отправляет его на МФУ.

Роль NFS в Active-Active кластере Принтум

┌──────────────────────────────────┐
│           NFS-сервер             │
│  /exports/printum-jobs           │
└──────────────┬───────────────────┘
               │  NFS mount
    ┌──────────┴──────────┐
    ▼                     ▼
ПринтМенеджер 1     ПринтМенеджер 2
/var/printum/jobs   /var/printum/jobs
    (одна и та же физическая директория)
  • Файлы заданий создаются и читаются через единую точку монтирования.
  • HAProxy определяет, какой узел обработает запрос release, но оба могут прочитать задание.
  • NFS-сервер должен быть отказоустойчивым сам по себе (например, HA NFS с DRBD, Pacemaker или Ceph).

Производительность и надёжность

Аспект Рекомендация
Сеть Выделенная сеть хранилищ (10 Гбит/с) или отдельный VLAN
NFS-опции монтирования rsize=1048576,wsize=1048576,hard,intr,timeo=600
Блокировки (locks) NFSv4 использует встроенные блокировки; NFSv3 требует rpc.lockd
Отказ NFS При недоступности NFS (hard mount) операции I/O зависают — критично для ПМ

TODO: уточнить — какая версия NFS и какие опции монтирования рекомендованы в типовой инсталляции Принтум.