← Документация Hope·HopeDFShopedc.ru
HopeDFS · Документация

Отказоустойчивый кластер

1. Как устроено

              клиенты Windows:  \\HOPEFS\Docs  (DNS: HOPEFS → 10.0.0.50)
                                      │
                         плавающий IP 10.0.0.50 (роль HOPEFS)
                    ┌─────────────────┴─────────────────┐
              ┌─────┴─────┐  heartbeat HTTPS :7443 ┌─────┴─────┐
              │  узел FS1 │◄──────────────────────►│  узел FS2 │
              │ (владелец)│   репликация данных    │ (резерв)  │
              └─────┬─────┘                        └─────┬─────┘
                    │        голос кворума               │
                    └──────────►  свидетель  ◄───────────┘
                               (hopedfs witness)

2. Хранение данных шар

Режим Когда использовать
Общий том (shared) SAN (iSCSI/FC) с кластерной ФС, NFS 4.2, CephFS, GlusterFS — один и тот же путь смонтирован на всех узлах. Данные не копируются, переключение мгновенное. ФС должна поддерживать user xattr.
Встроенная репликация (replicated) у каждого узла свой диск с тем же путём (например, /srv/data). Владелец роли ведёт журнал изменений; реплики забирают изменённые файлы вместе с NTFS-метаданными. Синхронный режим: закрытие файла клиентом ждёт подтверждения реплик (до 15 с) — без потери данных при отказе. Асинхронный — быстрее, при отказе возможна потеря последних секунд изменений.
Локальная папка (local) без отказоустойчивости данных (одиночный сервер).

После возвращения отказавшего узла он сверяет дерево с текущим владельцем и догоняет изменения; файлы, изменённые на нём и потерявшие актуальность, сохраняются в <шара>/.hopedfs/conflicts.

3. Создание кластера из двух узлов со свидетелем

Пример: FS1 10.0.0.21, FS2 10.0.0.22, свидетель 10.0.0.29, роль HOPEFS с VIP 10.0.0.50/24.

  1. Лицензии: на FS1 и FS2 примените лицензию Enterprise (раздел «Лицензия», у каждого узла своя). Свидетелю лицензия не нужна.
  2. Установка (раздел 2 «Установки»): на FS1 и FS2 — sudo bash install.sh, на свидетеле 10.0.0.29 — sudo MODE=witness bash install.sh. Для встроенной репликации создайте одинаковые пустые каталоги на FS1 и FS2: mkdir -p /srv/data/Docs.
  3. FS1 → панель → «Кластер» → «Создать кластер»: имя, адрес узла 10.0.0.21:7443.
  4. FS1 → «Пригласить узел» → скопируйте токен.
  5. FS2 → панель → «Кластер» → «Присоединиться»: токен, адрес 10.0.0.22:7443. Конфигурация FS2 заменяется кластерной; войдите в панель заново учёткой кластера.
  6. FS1 → «Параметры и свидетель»: адрес 10.0.0.29:7443, логин/пароль администратора свидетеля (из его /var/lib/hopedfs/initial_admin_password.txt) → «Сохранить». Кворум станет «3 из 3».
  7. «Создать роль»: имя HOPEFS, VIP 10.0.0.50/24, хранение — общий том или репликация, предпочтительные владельцы FS1, FS2.
  8. «Общие папки» → создайте шары и выберите роль HOPEFS.
  9. DNS: A-запись HOPEFS → 10.0.0.50. Если сервер подключён к домену — «Домен» → выполните подключение к домену повторно, чтобы создать учётку HOPEFS$ для Kerberos.

Клиенты подключаются к \\HOPEFS\Docs.

4. Обслуживание

Задача Действие
Плановые работы на узле «Приостановить» узел — роли уйдут на другие; после работ — «Возобновить»
Перенести роль значок «Переместить» у роли → выбрать узел (или «Автоматически» — вернуть под управление кластера)
Остановить роль «Остановить» — IP снимается, шары роли недоступны
Вернуть роль на основной узел после восстановления в свойствах роли включить «Возвращать роль на предпочтительный узел»
Лицензионное соглашение принимается в панели каждого узла отдельно (запись хранится на узле); службы узла работают и до принятия
Обновить версию по одному узлу: «Приостановить» → «Настройки» → «Обновления» (выбрать узел вверху страницы) или install.sh с новым бинарником → «Возобновить»; все узлы — на одну версию (после обновления — Ctrl+F5 в панели)
Вывести узел навсегда на узле «Вывести этот узел»; если узел мёртв — «Исключить» на любом живом
Состояние репликации карточка «Репликация»: эпоха журнала, применённые записи, отставание, ошибки

5. Лицензии в кластере

Отказоустойчивый кластер доступен только в редакции Enterprise, лицензия Enterprise нужна каждому узлу: без неё нельзя создать кластер, пригласить узел или присоединиться (координатор проверяет и лицензию нового узла). Лицензия привязана к узлу и не реплицируется — каждому узлу свой ключ (как в HopeDC). Если у работающего узла кластера лицензия перестала быть Enterprise, кластер продолжает работать, но панель предупреждает об этом и не даёт приглашать новые узлы. Подробно — «Руководство администратора», раздел «Лицензия и редакции».

6. Сеть

7. Кворум — что будет при отказах

Конфигурация Отказ Результат
2 узла + свидетель 1 узел работает (2 из 3 голосов)
2 узла + свидетель свидетель работает (2 из 3)
2 узла + свидетель связь между узлами (свидетель видит обоих) роль остаётся у узла, получившего голос свидетеля
2 узла без свидетеля 1 узел роли поднимает узел с меньшим приоритетом (только если отказал другой); при разрыве связи без свидетеля возможен простой — используйте свидетель
3 узла 1 узел работает (2 из 3)

8. Защита от шифровальщиков в кластере