NFS сервер · 3 min read · Nov 18, 2025

Настройка высокодоступного NFS сервера - Страница 4

8 Установка и настройка heartbeat

heartbeat — это управляющий экземпляр всей этой настройки. Он будет установлен на server1 и server2, и он контролирует другой сервер. Например, если server1 выходит из строя, heartbeat на server2 обнаруживает это и делает так, чтобы server2 взял на себя управление. heartbeat также запускает и останавливает NFS сервер на обоих server1 и server2. Он также предоставляет NFS как виртуальную службу через IP-адрес 192.168.0.174, чтобы узлы кластера веб-сервера видели только один NFS сервер.

Сначала мы устанавливаем heartbeat:

server1/server2:

apt-get install heartbeat

Теперь нам нужно создать три конфигурационных файла для heartbeat. Они должны быть идентичны на server1 и server2!

server1/server2:

/etc/heartbeat/ha.cf:

| logfacility local0 keepalive 2 #deadtime 30 # USE THIS!!! deadtime 10 bcast eth0 node server1 server2 |

В качестве имен узлов мы должны использовать вывод uname -n на server1 и server2.

server1/server2:

/etc/heartbeat/haresources:

| server1 IPaddr::192.168.0.174/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server |

Первое слово — это вывод uname -n на server1, не имеет значения, создаете ли вы файл на server1 или server2! После IPaddr мы указываем наш виртуальный IP-адрес 192.168.0.174, а после drbddisk мы используем имя ресурса нашего ресурса DRBD, которое здесь r0 (помните, это имя ресурса, которое мы используем в /etc/drbd.conf - если вы используете другое, вы должны использовать его и здесь).

server1/server2:

/etc/heartbeat/authkeys:

| auth 3 3 md5 somerandomstring |

somerandomstring — это пароль, который два демона heartbeat на server1 и server2 используют для аутентификации друг против друга. Используйте свою строку здесь. У вас есть выбор между тремя механизмами аутентификации. Я использую md5, так как это самый безопасный.

/etc/heartbeat/authkeys должен быть доступен только для чтения пользователю root, поэтому мы делаем это:

server1/server2:

chmod 600 /etc/heartbeat/authkeys

Наконец, мы запускаем DRBD и heartbeat на server1 и server2:

server1/server2:

/etc/init.d/drbd start
/etc/init.d/heartbeat start

9 Первые тесты

Теперь мы можем провести наши первые тесты. На server1 выполните

server1:

ifconfig

В выводе должен появиться виртуальный IP-адрес 192.168.0.174:

| eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.172 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fea1:c59b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:18992 errors:0 dropped:0 overruns:0 frame:0 TX packets:24816 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2735887 (2.6 MiB) TX bytes:28119087 (26.8 MiB) Interrupt:177 Base address:0x1400 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.174 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:177 Base address:0x1400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:71 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5178 (5.0 KiB) TX bytes:5178 (5.0 KiB) |

Также выполните

server1:

df -h

на server1. Теперь вы должны увидеть /data в списке:

| Filesystem Size Used Avail Use% Mounted on /dev/sda5 4.6G 430M 4.0G 10% / tmpfs 126M 0 126M 0% /dev/shm /dev/sda1 89M 11M 74M 13% /boot /dev/drbd0 24G 33M 23G 1% /data |

Если вы сделаете то же самое

server2:

ifconfig
df -h

на server2, вы не должны увидеть 192.168.0.174 и /data.

Теперь мы создаем тестовый файл в /data/export на server1, а затем симулируем сбой сервера server1 (остановив heartbeat):

server1:

touch /data/export/test1
/etc/init.d/heartbeat stop

Если вы выполните ifconfig и df -h на server2 сейчас, вы должны увидеть IP-адрес 192.168.0.174 и раздел /data, а также

server2:

ls -l /data/export

должен показать файл test1, который вы создали на server1 ранее. Таким образом, он был зеркален на server2!

Теперь мы создаем еще один тестовый файл на server2 и проверяем, будет ли он зеркален на server1, когда он снова включится:

server2:

touch /data/export/test2

server1:

/etc/init.d/heartbeat start

(Подождите несколько секунд.)

ifconfig
df -h
ls -l /data/export

Вы должны снова увидеть 192.168.0.174 и /data на server1, что означает, что он снова взял на себя управление (поскольку мы определили его как основной), и вы также должны увидеть файл /data/export/test2!

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.