FreeBSD 5.5 CARP
Для FreeBSD вполне хватит встроенной документации (carp(4), sysctl(3), ifconfig(8)). Для общего развития можно прочитать документ “Firewall Failover with pfsync and CARP” Ryan McBride. В принципе этих статьей (как всегда) вполне достаточно для работы, приведу небольшую выдержку из основных настроек.
Стоить отметить, что возможны два режима работы: для обеспечения отказоустойчивости (второй узел находится в состоянии ожидания) и в режиме балансировки нагрузки.
Процедура настройки состоит из следующих этапов
- Ядро должно быть собрано со следующей опцией: device carp #Common Address Redundancy Protocol
- Настройка ядра
- net.inet.carp.allow - принимать входящие пакеты carp. (default 1)
- net.inet.carp.preempt - позволяет виртуальным хостам резервировать друг друга. (default 0).
- net.inet.carp.log
– ведение логов 0,1,2. ( default 1).
- net.inet.carp.arpbalance - балансировка локального трафика. (default 0)
- создание сетевого carp интерфейса ifconfig carpN create. Настраиваемые параметры:
- advbase и advskew, используются для настройки интервалов посылок объявлений главным хостом группы
- pass служит для идентификации carp.
- carpdev используется для определения интерфейса, на котором будет размещен carp.
- vhid – идентификатор carp-интерфейса.
На сетевом интерфейсе уже должен присутствовать IP адрес из настраиваемой сети.
Пример, создаем виртуальный адрес 192.168.1.10:
Настраиваем ядро sysctl net.inet.carp.arpbalance=1
На 1 машине: ifconfig carp0 create ifconfig carp0 vhid 1 pass SecretPassword 192.168.1.10/24 ifconfig carp1 create ifconfig carp1 vhid 2 advskew 100 pass SecretPassword 192.168.1.10/24
на 2 машине ifconfig carp0 create ifconfig carp0 vhid 1 advskew 100 pass SecretPassword 192.168.1.10/24 ifconfig carp1 create ifconfig carp1 vhid 2 pass SecretPassword 192.168.1.10/24
И на последнем этапе определяем arp адрес и прописываем его на маршрутизаторе.