Мы внедряем контрольный сигнал 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 используйте такой порядок действий:
Важно поставить VIP последним, иначе ваши клиенты потеряют свое NFS-соединение вместо того, чтобы постоянно его повторять.
Кстати: включение IP-адреса в качестве ресурса в такт пульса также приведет к бесплатному прерыванию работы при отказе, поэтому вам не нужно об этом заботиться (обычно).