Необходимо решение, которое в случае неработоспособности одного сервера, перенаправит входящий трафик на другой сервер?
Есть 4 реальных IР адреса от одного провайдера: 3 IР уже используются (1.1.1.1, 2.2.2.2, 3.3.3.3) на 3х рядом стоящих серверах в его дата-центре и один IР свободен (4.4.4.4)
Есть еще 1 IР (5.5.5.5) от другого провайдера, который используется сервером размещенном в его дата центре.
Допустим клиенты жестко привязаны к IР 1.1.1.1. Необходимо решение, которое в случае неработоспособности 1.1.1.1 перенаправит весь трафик к 5.5.5.5 (другой дата центр).
Знаю что это делает itpables, но загвоздка в том, что он это будет делать когда установлен на 1.1.1.1 и когда этот сервер включен. А необходимо, чтобы была возможность сделать перенаправление даже если сервер 1.1.1.1 выключен. При этом ставить перед ним отдельный сервер который будет этим рулить нежелательно, потому что если он упадет, никакого перенаправления вообще не будет. То есть, делать в этой цепи ГЛАВНОЕ звено нельзя, необходимо быть взаимозаменяемым. Например временно назначать IР 1.1.1.1 рядом стоящему 2.2.2.2 который и будет перенаправлять на 5.5.5.5, а когда 1.1.1.1 вернется к нормальной работе, то вернуть IР и отменять политику фаерволла на 2.2.2.2. Но в этой схеме на каждую машину надо ставить iptables, и следить за ними, чтобы включать и выключать нужные\ненужные фаерволлы. Это не совсем, как я понимаю, правильно.
В вашем, конкретном, случае, только настроить через DNS, потому как:
1. Вы не хотите ставить дополнительное оборудование.
2. Сервера в разных сетях.
Сделать короткий TTL для A записи, скажем 3-5 минут. На DNS сервере повесить скрипт в крон, или демон, который будет проверять доступность первого сервера и в случае недоступности, менять A запись в доменной зоне на IP второго сервера и перечитывать зону, при возвращении к к жизни первого сервера, соответственно менять обратно.
в этой схеме на каждую машину надо ставить iptables, и следить за ними, чтобы включать и выключать нужные\ненужные фаерволлы.
Очень странно звучит — а что, у Вас машины стоят без включенных файрволов?
Попробуйте посмотреть в сторону CARP, единственное что для его работы нужно 3 адреса находящиеся в одной сети.
Схема такая, делаем 1.1.1.1 CARP адресом > В случае доступности сервера все работает как есть, в случае недоступности, отвечает другой сервер, ну а дальше перенаправляет трафик в другой датацентр.
На самом деле очень критично допустимое время Downtime, в случае с CARP это пара секунд. А так, да, DNS
1) Посмотрите на продукцию компании radware
2) Делали heart-beat между серверами. И после ряда проверок (приложение живо? сервер жив?) происходила подмена IP адреса.
надо ставить сервак, который уже перенаправляет людей на другие серваки за ним. Т.к. он сам только перенаправляет, то он и не падает. Остальные уже как повезёт. Т.е. когда падает один сервак за ним, он должен перестать направлять трафик на тот, что упал, и распределять его по другим. Усё. Иначе никак. Все остальные способы завязаны на смену IP.
Альтернатива:
В вашем приложении вы можете при подключении к главному серверу получать с него адрес того сервера, на который отправить конкретного пользователя. Заодно и нагрузку размазать можно будет. Но тут уж нет жесткой привязки к IP, что и хорошо.