LINUX.ORG.RU

Софт для переключения/балансировки соединений ?


1

2

Дано: Есть комп с несколькими сетевыми картами, каждая сетевуха подключена к отдельному провайдеру инета (провайдеры разные). У каждой сетевухи есть статический IP-адрес видный в инете. На компе крутится веб-сервер. Вебсервер доступен по доменному имени, которое на данный момент ссылается на один из IP-шников. Name-server крутится на этом же компе.

Вопрос: В случае если один из провайдеров отваливается, мне нужно переключится на другого провайдера.

Есть ли какой-то софт для подобных переключений или балансировки подключений на лету ?

Если все нужные сервисы крутятся непосредственно на машине с двумя внешними ip, то можно просто сказать им в конфиге слушать 0.0.0.0 вместо конкретного ip и сделать в днс что-то вроде

example.net   IN  A   1.2.3.4
example.net   IN  A   2.3.4.5

Deleted
()
Ответ на: комментарий от Deleted

Если нужно что-то сложнее, то в гугле есть куча хороших статей по запросу «linux multi wan iptables».

Deleted
()
Ответ на: комментарий от linuxoidspb

Вебсервер доступен по доменному имени, которое на данный момент ссылается на один из IP-шников

Bonding является виртуальным интерфейсом над физическими


# The following network interface
auto eth2
iface eth2 inet manual

# The following network interface
auto eth3
iface eth3 inet manual

# The following network interface
auto eth4
iface eth4 inet manual

# The following network interface
auto eth5
iface eth5 inet manual

# Bonding with the remaining interfaces
auto bond0
iface bond0 inet static
address 10.10.10.1
netmask 255.255.255.0
bond-slaves eth2 eth3 eth4
up /sbin/ifenslave bond0 eth2 eth3 eth4
bond_mode balance-rr
bond_miimon 100
bond_lacp_rate 1
mtu 1500
Я полагаю физические интерфейсы не будут иметь адресов, адрес будет назначен на виртуальный интерфейс.

Мне интересно, как все это применить к Вашей задаче. Реализуете отпишитесь!

petav ★★★★★
()
Ответ на: комментарий от linuxoidspb

Получится, то получится. Почему нет. На интерфейсе может быть несколько IP. Проблема в другом.

petav ★★★★★
()
Ответ на: комментарий от linuxoidspb

Прошу прощения, mky, дайте совет. Пожалуйста.

petav ★★★★★
()
Ответ на: комментарий от linuxoidspb

Да, проблема будет и в маршрутизации. Вобще бондинг это создание связи между двух точек по нескольким каналам. Причем обе точки (маршрутизаторы с линуксом или умные свичи) настраиваются согласовано.

У вас нет второй точки (интернет это не точка). У вас каждая сетёвка подключена к отдельному провайдеру и когда браузер клиента захочет подключится к тому или иному ip-адресу, его пакеты пойдут к этому провайдеру.

Вам нужно сделать DNS зону с маленьким временим жизни записи и убирать/добавлять нужные записи. А NS-запись сделать указывающей на все ваши ip-адреса. При длительных проблемах со связью с провайдером можно убирать его ip-адрес из NS-записи.

Готового софта для этого я не знаю, скрипты релизующие редактирование DNS-зоны пишутся достаточно просто. Самое сложное это формализовать критерий «если один из провайдеров отваливается».

mky ★★★★★
()
Ответ на: комментарий от linuxoidspb

Можно просто сделать 2 ип адреса на одно имя. В случае отвала одного провайдера все будет продолжать работать, хоть и немного тупить. Чтобы перестало тупить, нужно просто удалить нерабочий ип адрес.

И да, про бондинг рассмешили)

redixin ★★★★
()
Ответ на: комментарий от linuxoidspb

Проблемы с маршрутизацией решаются с помощью ip rules

создается 2 таблицы маршрутизации с разными default, и задаются правила, с какого адреса какую таблицу юзать

что то вроде

ip route add default via 2.2.2.2 table prov1
ip route add default via 3.3.3.3 table prov2

ip rule add from 2.2.2.1 lookup prov1
ip rule add from 3.3.3.1 lookup prov2

естественно таблицы нужно прописать в /etc/iproute2/rt_tables и не забывать про дефолтную таблицу маршрутизации

все это вместе с двумя ip адресами для одного домена даст балансировку канала, и кое какую отказоустойчивость

redixin ★★★★
()
Ответ на: комментарий от redixin

mky сказал

Вобще бондинг это создание связи между двух точек по нескольким каналам. Причем обе точки (маршрутизаторы с линуксом или умные свичи) настраиваются согласовано.

Еще раз, bonding не для этих целей.

petav ★★★★★
()
Ответ на: комментарий от redixin

Мировой DNS инертный.

Тупить будет хорошо, если клиентское ПО простое. Round-robin без алгоритмов определения живого ip на клиенте. Тут на удачу полагаться придется. DNS будет отдавать IP каруселью в не зависимости от клиента и не обязательно следующая попытка ПО будет именно его, а значит возможно возникнет ситуация когда несколько раз ПО будет получать один и тот же неработающий IP.

К примеру, openvpn решает данную задачу сам, он определяет все адреса DNS имени и по очереди пытается по ним подключится.

petav ★★★★★
()
Ответ на: комментарий от petav

DNS будет отдавать IP каруселью

DNS отдает IP все сразу, клиент сам делает карусель

практика показывает что тупит не так уж сильно. можете сами провести эксперимент, это не сложно

redixin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.