ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

CARP — Common Address Redundancy Protocol

Другими словами это протокол избыточности, который позволяет двум или более компьютерам в одной подсети иметь одновременно один и тот же IP адрес, при этом возможна настройка этой группы компьютеров как взаимозаменяемые (главный компьютер отключился/сломался — вместо него сразу же принимается за работу другой, у которого приоритет выше) и так по кругу. Максимально количество компьютеров в группе — 256, в сети между ними не должно быть роутеров.

Также возможна конфигурация данной группы как некий кластер, который будет обрабатывать приходящие пакеты по кругу( 1-2-3-4-5…..256-1-2-3-4), то есть распределяя нагрузку на сервис.

Вариант первый. Резервирование.

1) Необходимо на всех компьютерах группы включить в ядро опцию

device carp

Пересобрать его и установить.

cd /usr/src
make buildkernel KERNCONF=PARANOID #PARANOID — мое название конфигурации ядра.
make installkernel KERNCONF=PARANOID

2) Выставить на каждом компьютере группы опцию sysctl

sysctl net.inet.carp.preempt=1

и добавить в /etc/sysctl.conf # Чтоб при следующей загрузке данный параметр автоматически выставился в 1.

net.inet.carp.preempt=1

Данная опция включает в CARP функцию резервирования.

3) Настроить сетевые карты каждого из группы компьютеров на ОТДЕЛЬНЫЙ ip адрес из одной подсети. ВАЖНО ! Так как можно запутаться и писать на интерфейс сразу у всей группы один и тот-же адрес, что вызовет конфликт адресов.

Например:

PC1 — 10.100.0.1/24
PC2 — 10.100.0.2/24
PC3 — 10.100.0.3/24

4) Создать интерфейс carp, прописать ему ip (именно на этом IP будет висеть ваш сервис), VHID (Идентификатор CRAP группы), и выдать каждому CARP интефейсу на каждом из компьютеров группы свой УНИКАЛЬНЫЙ advskew (приоритет сервера) чем он ниже — тем раньше, в случае сбоя, этот сервер присвоит себе IP и будет обрабатывать запросы, и пароль группы pass (Также должен быть одинаковый в одной группе)

PC1

ifconfig carp0 create

ifconfig carp0 vhid 1 pass VeRySeCrEtPaSsWoRd 10.100.0.4/24 advskew 0

PC2

ifconfig carp0 create

ifconfig carp0 vhid 1 pass VeRySeCrEtPaSsWoRd 10.100.0.4/24 advskew 1

PC3

ifconfig carp0 create

ifconfig carp0 vhid 1 pass VeRySeCrEtPaSsWoRd 10.100.0.4/24 advskew 2

Таким образом получается что если ломается PC1, то тут-же за него начинает работать PC2, если и он ломается, и при этом PC1 все еще не восстановлен, то в работу включается PC3.

Синхронизировать сервера можно по физическим интерфейсам с IP 10.100.0.1-3, но своими силами.

Вариант второй. Распределение нагрузки.

Ядро так-же собираем с поддержкой CARP но в sysctl выставляем значение уже arpbalance в 1

sysctl net.inet.carp.arpbalance=1

и соотвественно в /etc/sysctl.conf

net.inet.carp.arpbalance=1

Как видно из названия обьекта, балансировка происходит на основании MAC-адреса клиентского компьютера, соответственно, роутеров между сервером и клиентом не должно быть.

Затем на каждом из серверов группы надо настроить 2 CARP интерфейса и 1 физический (vlan-ы тоже поддерживаются) с разными vhid (Если на одном РС у этого VHID advskew=100, то на другом РС на этом-же VHID должен быть advskew=0).

PC1

ifconfig em0 10.100.0.1/24

ifconfig carp0 create

ifconfig carp0 vhid 1 pass SeCrEt 10.100.0.2/24 advskew 0

ifconfig carp1 create

ifconfig carp1 vhid 2 pass AnoTheRSeCrEt 10.100.0.2/24 advskew 100

PC2

ifconfig em0 10.100.0.3/24

ifconfig carp0 create

ifconfig carp0 vhid 1 pass SeCrEt 10.100.0.2/24 advskew 100

ifconfig carp1 create

ifconfig carp1 vhid 2 pass AnoTheRSeCrEt 10.100.0.2/24 advskew 0

Теперь при обращении к IP 10.100.0.2 для каждого отдельного физического устройства сервера будут отзываться по очереди. В случае падения одного из серверов отвечать на запросы будет оставшиеся.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Куликов Кирилл (TheFeaR)

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

    Не найдено

Прочитано: 19 452 раз(а)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 8, среднее: 4,13 из 5)
Загрузка...
Отправить на почту Отправить на почту

комментариев 5

  1. Keeper-it сказал:

    [quote]Также возможна конфигурация данной группы как некий кластер, который будет обрабатывать приходящие пакеты по кругу[/quote]
    Пакеты или соединения? Если пакеты.. то это снижает возможности применения балансировки в разы 🙁

  2. temp сказал:

    man carp /ARP level load balancing

    Перевод:
    Балансирование нагрузки на уровне ARP
    Протокол CARP обладает ограниченным набором возможностей для балансирования входящего трафика между хостами в ethernet-сети. Для использования балансирования нагрузки, нужно сконфигурировать несколько CARP-интерфейсов с одинаковым IP-адресом, но различными VHID. Таким образом, при получении ARP-запроса, протокол CARP применив функцию хеширования к IP-адресу источника ARP-запроса определит VHID хоста, которому этот запрос принадлежит. Если соответствующий CARP-интерфейс находится в состоянии «ведущий», будет отправлен ответ на ARP-запрос, в противном случае запрос будет проигнорирован. См. примеры использования балансирования нагрузки в разделе ПРИМЕРЫ.
    Источник: http://redteapot.co.cc/articles/network-sw/20-carp_part2.html

  3. D06PbIU сказал:

    Подскажите пожалуйста, что-то я запутался: у меня два маршрутизатора, у каждого по три интерфейса (каждый в свою сеть смотрит), надо сделать балансировку между этими маршрутизаторами (), это надо для каждого физического интерфеса каждого маршрутизатора поднять по одному carp??

  4. admin сказал:

    насколько я понимаю — да

  5. D06PbIU сказал:

    admin сказал:
    насколько я понимаю – да
    ——————————
    Затем на каждом из серверов группы надо настроить 2 CARP интерфейса и 1 физический (vlan-ы тоже поддерживаются) с разными vhid (Если на одном РС у этого VHID advskew=100, то на другом РС на этом-же VHID должен быть advskew=0).

    Два или одни carp нужно всетаки????

Добавить комментарий

Вам следует авторизоваться для размещения комментария.