Зачем нужен 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 и какие опции монтирования рекомендованы в типовой инсталляции Принтум.