Назад | Перейти на главную страницу

NFS v4, миграция HA и устаревшие дескрипторы на клиентах

Я управляю сервером с NFS v4 с помощью Pacemaker / OpenAIS. NFS настроен на использование TCP. Когда я переношу сервер NFS на другой узел в кластере Pacemaker, даже несмотря на то, что метаданные сохраняются, соединения от клиентов «зависают» и, в конечном итоге, прерываются через 90 секунд. По истечении этих 90 секунд старая точка монтирования становится «устаревшей», и доступ к смонтированным файлам становится невозможным.

90-секундный льготный период, по-видимому, является частью конфигурации сервера, а не конфигурации клиента. Я вижу это сообщение на сервере:

ядро: NFSD: начало 90-секундного льготного периода

Если я перезапускаю клиент NFS на клиентских узлах после миграции (размонтирование, а затем повторное подключение общего ресурса), то у меня не возникает проблемы, но соединения и передача файлов по-прежнему прерываются.

Три вопроса:

  1. Что такое 90-секундный льготный период? Для чего это нужно?
  2. Как я могу предотвратить устаревание файлов на клиентах, не перезагружая их после переноса сервера NFS на другой узел?
  3. Действительно ли возможно перенести сервер NFS без потери загрузки больших файлов?

NFS хранит большую часть состояния клиента на сервере. Pacemaker / OpenAIS не может компенсировать недостатки NFS в этой области. Период отсрочки предназначен для восстановления состояния сервера и клиентов. Это часть протокола.

В любом случае, похоже, что вы не полностью перемещаете состояние клиента (например, содержимое / var / lib / nfs). Видеть этот для идей и того, что необходимо синхронизировать на стороне сервера.

В то время как с NfSv3 вы могли указать транспорт UDP для монтирования, чтобы достичь мгновенного переключения при отказе, и клиент / сервер не был бы мудрее, NFSv4 делает это немного сложнее. Прежде всего потому, что TCP - единственный доступный транспорт, и TCP не в своей природе, когда соединение разрывается из-под его ног и продолжается как обычно.

Вы можете уменьшить время передачи. Особенно, если вы последуете советам по поводу общего каталога состояний сервера и поддержки FSID. Попробуйте вытащить интерфейс прослушивания перед остановкой NFS и убедиться, что монтирования не убраны (exportfs -ua). Но это никогда не будет абсолютно мгновенным.

Вы также должны иметь в виду, что переключаться с одного сервера, а затем сразу обратно, нельзя. Бывший сервер все еще может держать предыдущие соединения открытыми в TIME_WAIT состояние и откажется от новых подключений на срок до 20 минут.

Много подробностей об этом Вики-страница Heartbeat немного устаревшие, но все же актуальны.

Является ли физический диск общим для устройств, например, диск SAN?

Вы экспортируете диск с постоянным fsid

/ share * (rw, синхронизация, fsid = 6667)

в противном случае:

Номер inode-Number, IP, младший и старший номера устройства, обслуживающего NFS, должны быть одинаковыми, чтобы сохранить один и тот же дескриптор файла NFS. Поэтому используйте lvm поверх устройства и синхронизируйте второстепенный / основной lvm.

NFSv4 - это протокол с отслеживанием состояния, что означает, что стороны (клиент, сервер) должны всегда знать друг о друге, если они участвуют в обмене данными. другими словами, если сервер остановлен и перезапущен в другом месте, клиенты должны отключиться перед перемещением, а затем повторно подключиться, когда перемещение будет завершено (я думаю, Pacemaker + NFSd! = любовь :-)

может тебе стоит попробовать Glusterfs для HA / кластеризации