NFS сервер · 4 min read · Oct 09, 2025
Настройка высокодоступного NFS-сервера
Это “копировать и вставить” руководство!
Самый простой способ следовать этому руководству — использовать клиент командной строки/SSH-клиент (например,
PuTTY
для Windows) и просто копировать и вставлять команды (за исключением случаев, когда вам нужно предоставить собственную информацию, такую как IP-адреса, имена хостов, пароли и т. д.). Это помогает избежать опечаток.
Настройка высокодоступного NFS-сервера
Версия 1.0
Автор: Фалко Тимме
Последнее редактирование: 03/07/2006
В этом руководстве я опишу, как настроить высокодоступный NFS-сервер, который может использоваться в качестве решения для хранения данных для других сервисов высокой доступности, таких как, например, кластер веб-серверов, которые балансируются по нагрузке. Если у вас есть кластер веб-серверов с двумя или более узлами, которые обслуживают один и тот же веб-сайт(ы), то эти узлы должны иметь доступ к одному и тому же пулу данных, чтобы каждый узел обслуживал одни и те же данные, независимо от того, направляет ли балансировщик нагрузки пользователя на узел 1 или узел n. Это можно реализовать с помощью общего ресурса NFS на NFS-сервере, к которому могут получить доступ все узлы веб-сервера (клиенты NFS).
Поскольку мы не хотим, чтобы NFS-сервер стал еще одной “точкой отказа”, мы должны сделать его высокодоступным. На самом деле, в этом руководстве я создам два NFS-сервера, которые зеркалируют свои данные друг другу в реальном времени с помощью DRBD и которые мониторят друг друга с помощью heartbeat, и если один NFS-сервер выходит из строя, другой тихо принимает на себя его функции. Снаружи (например, узлы веб-сервера) эти два NFS-сервера будут выглядеть как один NFS-сервер.
В этой настройке я буду использовать Debian Sarge (3.1) для двух NFS-серверов, а также для клиента NFS (который представляет собой узел кластера веб-сервера).
Я хочу сначала сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Моя настройка
В этом документе я использую следующие системы:
- NFS-сервер 1: server1.example.com, IP-адрес: 192.168.0.172; я буду называть его server1.
- NFS-сервер 2: server2.example.com, IP-адрес: 192.168.0.173; я буду называть его server2.
- Виртуальный IP-адрес: я использую 192.168.0.174 в качестве виртуального IP-адреса, который представляет кластер NFS снаружи.
- Клиент NFS (например, узел из кластера веб-сервера): client.example.com, IP-адрес: 192.168.0.100; я буду называть клиента NFS client.
- Директория /data будет зеркалироваться с помощью DRBD между server1 и server2. Она будет содержать общий ресурс NFS /data/export.
2 Базовая установка server1 и server2
Сначала мы настраиваем две базовые системы Debian для server1 и server2. Вы можете сделать это, как описано на первых двух страницах этого руководства: https://www.howtoforge.com/perfect_setup_debian_sarge. В качестве имени хоста вы вводите server1 и server2 соответственно, а в качестве домена вы вводите example.com.
Что касается разбиения, я использую следующую схему разбиения:
/dev/sda1 – 100 MB /boot (primary, ext3, Bootable flag: on)
/dev/sda5 – 5000 MB / (logical, ext3)
/dev/sda6 – 1000 MB swap (logical)
/dev/sda7 – 150 MB unmounted (logical, ext3) (будет содержать метаданные DRBD)
/dev/sda8 – 26 GB unmounted (logical, ext3) (будет содержать директорию /data)
Вы можете варьировать размеры разделов в зависимости от размера вашего жесткого диска, и имена ваших разделов также могут варьироваться в зависимости от вашего оборудования (например, у вас может быть /dev/hda1 вместо /dev/sda1 и так далее). Однако важно, чтобы /dev/sda7 имел немного больше 128 MB, потому что мы будем использовать этот раздел для метаданных DRBD, которые занимают 128 MB. Также убедитесь, что /dev/sda7 и /dev/sda8 идентичны по размеру на server1 и server2, и пожалуйста, не монтируйте их (когда установщик спросит вас:
Нет точки монтирования для файловой системы ext3 в разделе #7 SCSI1 (0,0,0) (sda).
Хотите вернуться в меню разбиения?
пожалуйста, ответьте Нет)! /dev/sda8 будет нашим разделом данных (т.е. нашим общим ресурсом NFS).
После базовой установки убедитесь, что вы назначили server1 и server2 статические IP-адреса (server1: 192.168.0.172, server2: 192.168.0.173), как описано в начале https://www.howtoforge.com/perfect_setup_debian_sarge_p3).
После этого вам следует проверить /etc/fstab на обеих системах. У меня он выглядит так на обеих системах:
| # /etc/fstab: статическая информация о файловой системе. # # proc /proc proc defaults 0 0 /dev/sda5 / ext3 defaults,errors=remount-ro 0 1 /dev/sda1 /boot ext3 defaults 0 2 /dev/sda6 none swap sw 0 0 /dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |
Если вы обнаружите, что ваш выглядит так, например:
| # /etc/fstab: статическая информация о файловой системе. # # proc /proc proc defaults 0 0 /dev/hda5 / ext3 defaults,errors=remount-ro 0 1 /dev/hda1 /boot ext3 defaults 0 2 /dev/hda6 none swap sw 0 0 /dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |
то, пожалуйста, убедитесь, что вы используете /dev/hda вместо /dev/sda в следующих конфигурационных файлах. Также убедитесь, что /dev/sda7 (или /dev/hda7) и /dev/sda8 (или /dev/hda8…) не указаны в /etc/fstab!
3 Синхронизация системного времени
Важно, чтобы оба server1 и server2 имели одинаковое системное время. Поэтому мы устанавливаем NTP-клиент на обоих:
server1/server2:apt-get install ntp ntpdate
После этого вы можете проверить, что оба имеют одинаковое время, запустив
server1/server2:date
Get new posts in your inbox
No spam. Unsubscribe anytime.