В настоящее время я пытаюсь создать установку с N серверами, где 1 сервер является главным для виртуального IP, а (N-1) серверы действуют как резервные копии, предположительно контролируемые keepalived
. Однако одна проблема, которую я вижу с keepalived
, заключается в том, что его намерение состоит в том, чтобы привязать виртуальный IP-адрес ( 1.2.3.4
) к любому указанному мной интерфейсу (назовем его eth0
).
Вместо этого я намерен создать запись Proxy-ARP на eth0
для 1.2.3.4
. Таким образом, трафик, направленный на 1.2.3.4
, поступает на eth0
, а поскольку ip_forwarding
разрешен на моем хосте, записи в таблице маршрутизации на хосте будут перенаправлять их на виртуальный интерфейс для дальнейшей обработки.
Поддерживается ли этот вариант использования в keepalived
? Я действительно добился правильной работы этой установки с ucarp
, но это в основном связано с тем, что ucarp
имеет концепцию vip-up
и vip -down
скрипты, в которые я могу вставить собственные команды для создания записей Proxy-ARP и отправки GARP.
Зачем тебе это? Насколько я знаю, он не поддерживается, поскольку VRRP — это протокол, который должен иметь возможность общаться между всеми участвующими хостами в одной подсети.
Если вы хотите разделить виртуальный IP-адрес между несколькими серверами и хотите подключить его к петлевому интерфейсу, вам следует обратить внимание на маршрутизацию произвольной рассылки. Запустите протокол маршрутизации на своих серверах и на ваших маршрутизаторах (например, OSPF или BGP), позвольте каждому серверу объявлять один и тот же IP-адрес и создавать сценарии, которые останавливают/запускают объявление общего виртуального IP-адреса на основе того, что вы хотите, например. служба останавливается (например, происходит сбой Apache) или сервер теряет или получает подключение к серверной базе данных и т. д.