Резервирование с помощью CARP

CARP – протокол, позволяющий задействовать один IP-адрес для нескольких машин в сети. Таким образом можно реализовать отказоустойчивость (избыточность) и масштабирование (увеличение нагрузки). Пусть у нас имеется два сервера с собственными ip-адресами – 10.0.0.2 и 10.0.0.3, и хочется дополнительно настроить общий адрес 10.0.0.1, который предоставляет какой-либо сервис пользователям (к примеру, маршрутизация или DNS). Инструкция по использованию технологии CARP под катом.

Ядро
Первым делом собираем свое ядро. Скачиваем исходники

sysinstall

Выбираем Configure – Distributions – src, отмечаем галочкой base и src.
Настраиваем конфиг ядра, кладем его в /root/kernels и компилируем. Проделываем эти действия на обоих серверах.

# cd /usr/src/sys/i386/conf
# mkdir -p /root/kernels
# cp GENERIC /root/kernels/CARP
# ln -s /root/kernels/CARP
# vim CARP
device carp
# cd /usr/src
# make buildkernel KERNCONF=CARP
# make installkernel KERNCONF=CARP
# vim /etc/sysctl.conf
net.inet.carp.preempt=1

Настраиваем carp-интерфейс на основном сервере:

# vim /etc/rc.conf
cloned_interfaces="carp0"
ifconfig_carp0="vhid 1 pass secretpassword advskew 0 10.0.0.1/24"

На запасном сервере:

# vim /etc/rc.conf
cloned_interfaces="carp0"
ifconfig_carp0="vhid 1 pass secretpassword advskew 100 10.0.0.1/24"

Объединяемые интерфейсы должны обладать одинаковыми параметрами vhid и pass. Параметр advskew отвечает за приоритет. Чем меньше – тем “главнее” будет интерфейс. Когда интерфейс с наименьшим advskew упадет, главным (т.е. MASTER) станет интерфейс со вторым по значению параметром advskew.

Перезагружаемся. Пробуем вытащить кабель из основного сервера. Радуемся, если все продолжает работать.

Также с помощью CARP можно создавать высокопроизводительные кластеры. Об этом, а также о том, как запускать сервисы по подъему CARP, в следующий раз.

Похожие статьи

Leave a Reply

Your email address will not be published. Required fields are marked *