Задача: необходимо сделать отказоустоичивую систему из 2-х серверов, (например сервера телефонии asterisk), что бы в случае выхода из строя основного сервера, работа продолжалась бы на резервном сервере, а когда основной сервер заработает, всё переключалось обратно. Резервирование будет настроено с помощью heartbeat.
Допустим в сети 192.168.0.0/24 есть 2 сервера
192.168.0.10-основной
192.168.0.11-резервный
Во первых устанавливаем на обоих серверах heartbeat
yum install heartbeat -y
После установки, для работы heartbeat, в каталоге /etc/ha.d/ необходимо создать 3 основных конфигурационных файла- ha.cf, authkeys, haresources.
touch /etc/ha.d/ha.cf /etc/ha.d/authkeys /etc/ha.d/haresources
ha.cf — основной конфигурационный файл, содержащий массу различных параметров того, как будет осуществляться heartbeat-механизм. За основу можно взять файл, идущий в пакете (расположен в /usr/share/doc/heartbeat-2). В данном случае будет содержать
logfile /var/log/ha-log node server1 node server2 keepalive 1 # Интервал проверки (каждую секунду) deadtime 10 #интервал, определяющий отказ другой ноды(10 секунд)
bcast eth0 #интерфейс для широковещательных пакетов auto_failback on # при восстановлении «упавшего» сервера адрес вернуть respawn hacluster /usr/lib/heartbeat/ipfail
server1 и server2 имена серверов 1 и 2 , их можно узнать командой uname -n. В данном случае server1 является мастером, т.к. он в файле прописан в качестве первой ноды.
haresources — файл, описывающий ресурсы, контролируемые серверами server1 и server2 . Ресурсы представляют собой обычные стоп/старт скрипты, похожие чем-то на сценарии из/etc/init.d. В директории /etc/ha.d/resource.d можно посмотреть доступные (уже готовые к использованию) сценарии. В данном случае будет использован ресурс IPaddr для активации дополнительного ip-адреса на интерфейсе eth0.
server1 IPaddr::192.168.0.12/24/eth0
authkeys — файл для взаимной аутентификации серверов server1 и server2. Можно использовать sha, md5, но чтобы не расходовать ресурсы достаточно использовать crc. После создания файл, необходимо установить права доступа к нему только для root
# cat > authkeys auth 1 1 crc [Ctrl+C] # chmod 600 authkeys
Все эти 3 файла должны быть одинаковыми на обоих серверах
Запускаем heartbeat на обоих серверах
/etc/init.d/heartbeat start
Если все нормально должен появится вывод
Starting High-Availability services: 2014/07/17_11:43:11 INFO: Resource is stopped [ OK ]
Через некоторое время мы увидим на сервере server1 дополнительный интерфейс с ip адресом 192.168.0.12
# ifconfig eth0 Link encap:Ethernet HWaddr 00:50:56:97:65:C5 inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:49002 errors:0 dropped:0 overruns:0 frame:0 TX packets:16374 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:67169344 (64.0 MiB) TX bytes:2221617 (2.1 MiB) eth0:0 Link encap:Ethernet HWaddr 00:50:56:97:65:C5 inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
если server1 будет недоступен, то ip адрес 192.168.0.12 появится на server2, например можно выключить server1 и проверить
# ifconfig eth0 Link encap:Ethernet HWaddr 00:50:56:97:75:4B inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:49047 errors:0 dropped:0 overruns:0 frame:0 TX packets:20667 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:67229318 (64.1 MiB) TX bytes:2177431 (2.0 MiB) eth0:0 Link encap:Ethernet HWaddr 00:50:56:97:75:4B inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Логи можно посмотреть в /var/log/ha-log и в /var/log/message