Я управляю сервером с NFS v4 с помощью Pacemaker / OpenAIS. NFS настроен на использование TCP. Когда я переношу сервер NFS на другой узел в кластере Pacemaker, даже несмотря на то, что метаданные сохраняются, соединения от клиентов «зависают» и, в конечном итоге, прерываются через 90 секунд. По истечении этих 90 секунд старая точка монтирования становится «устаревшей», и доступ к смонтированным файлам становится невозможным.
90-секундный льготный период, по-видимому, является частью конфигурации сервера, а не конфигурации клиента. Я вижу это сообщение на сервере:
ядро: NFSD: начало 90-секундного льготного периода
Если я перезапускаю клиент 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 / кластеризации