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

DRBD и NFS: есть ли эффективный способ сделать переключение при отказе прозрачным для NFS

Мы внедряем контрольный сигнал DRDB + с двумя серверами, чтобы файловая система имела возможность переключения при отказе. Эти серверы предоставляют службу NFS для других серверов.

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

Есть ли какой-нибудь прозрачный способ выполнить эту отработку отказа? Сделать его прозрачным для NFS или нам нужно повторно смонтировать эти папки, подключенные к nfs?

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

Придерживайтесь Heartbeat или Corosync для обнаружения сбоев и аварийного переключения - обычно они работают правильно (tm) при настройке с Кворум. Другие методы аварийного переключения могут быть слишком сосредоточены на предоставлении виртуального IP-адреса (например, VRRP) и не будут соответствовать вашим потребностям. Увидеть http://linux-ha.org для получения дополнительных сведений и дополнительных компонентов для настройки кластера.

Я рекомендую вам прочитать этот HOWTO о высокодоступной NFS с использованием NFSv4, DRBD и Pacemaker. Он содержит подробные инструкции и объяснения, а также важные сведения о том, как обеспечить высокодоступную службу NFS. Сейчас мы запустили в производство несколько таких установок HA-NFS, и они работают очень хорошо.

Частью такой настройки высокой доступности является отход от старой системы Heartbeat (той, которая использует /etc/ha.d/haresources и /etc/ha.d/ha.cf) и используйте много более мощный и надежный стек Pacemaker. Это своего рода переход от старого Heartbeat и довольно сложная кривая обучения, но в конечном итоге это означает, что у вас есть работающий кластер, достойный своего названия.

HOWTO написано Linbit, компанией, которая создала и поддерживает DRBD и внесла большой вклад в работу всего стека высокой доступности Linux. К сожалению, для доступа к техническим руководствам требуется (бесплатная) регистрация на их веб-сайте, но они хорошо написаны и очень полезны.

Лучший способ, который я могу придумать, чтобы сделать это прозрачным, - это использовать виртуальный IP-адрес и виртуальный MAC-адрес, а также переключатели, которые знают, что этот переход может произойти / поступают правильно, когда есть бесплатный ARP (так что вам не нужно подождите, пока очистится кеш ARP, что может занять достаточно много времени, чтобы ваши монтирования NFS устарели).

Что-то вроде Карп это, вероятно, путь для переключения при отказе IP - это доступно на всех * BSD, и, насколько мне известно, оно есть и в ядре Linux. Очевидно, протестируйте его, чтобы убедиться, что он работает так, как вы хотите (похоже, вы сейчас проводите тестирование, так что вы находитесь в хорошем месте).

Убедитесь, что файловые системы расположены на одном и том же старшем / младшем номере устройства (если вы используете одно и то же drbd-устройство с обеих сторон, это должно быть правдой) и используйте виртуальный IP-адрес для вашей службы NFS.

В Heartbeat используйте такой порядок действий:

  1. DRBD-Устройство
  2. локальная точка монтирования
  3. все службы, связанные с nfs, в надлежащем порядке
  4. Последний: VIP

Важно поставить VIP последним, иначе ваши клиенты потеряют свое NFS-соединение вместо того, чтобы постоянно его повторять.

Кстати: включение IP-адреса в качестве ресурса в такт пульса также приведет к бесплатному прерыванию работы при отказе, поэтому вам не нужно об этом заботиться (обычно).