Load balancing in linux

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Karen
Сообщения: 160
ОС: Slackware 11.0

Load balancing in linux

Сообщение Karen »

Привет друзья,

У меня в сети появилось два инет канала, один радиомодем, а другой DSL. Теперь я хочу сбалансировать нагрузку поровну, а в случае падения одного линка пусть весь трафик переправляется через второй. Google подсказал, что это все добро надо организовать через ip route + ip rule, но я пока не очень хорошо владею данными утилитами. :unsure:
Если кто нибудь уже сталкивался с подобной проблемой, поделитесь ценным практическим опотом. Вот как устроена моя сеть:

---=========Linux Router===========
---============================
---=---------------------=------------------------=
---=---------------------=------------------------=
---=---------------------=------------------------=
--eth0(DSL)-------eth1(Radiomodem)-----eth2 (Local Network)
[217.113.0.66]------[80.86.224.52]-----------[10.0.0.0/24]


Заранее благодарю за поддержку ;)
Спасибо сказали:
alfss
Сообщения: 262

Re: Load balancing in linux

Сообщение alfss »

---=---------------------=------------------------= это что за черточки 0_Щ

а балансировку с какими условиями осуществлять?
вообще вперед читать маны ><
Спасибо сказали:
Аватара пользователя
Karen
Сообщения: 160
ОС: Slackware 11.0

Re: Load balancing in linux

Сообщение Karen »

Давайте договоримся,если кто нибудь ещё решил предложит читать мне мануал пусть зря не занимает виртуальное пространство этого форума! Я спрашиваю про реальную практическую помощь,а не про советы типа "Почитай manual" или "Поищи в гугле"...

Спасибо за внимание ;)
Спасибо сказали:
ford1813
Сообщения: 383
ОС: Slackware

Re: Load balancing in linux

Сообщение ford1813 »

Karen писал(а):
24.02.2009 00:48
Давайте договоримся,если кто нибудь ещё решил предложит читать мне мануал пусть зря не занимает виртуальное пространство этого форума! Я спрашиваю про реальную практическую помощь,а не про советы типа "Почитай manual" или "Поищи в гугле"...

Спасибо за внимание ;)

А что религия не позволяет прочитать документацию
http://www.opennet.ru/docs/RUS/LARTC/ ?
прочитав 5 - страничек
доходим до нужной страницы.
http://www.opennet.ru/docs/RUS/LARTC/x348.html

На которой есть ссылка на

http://www.ssi.bg/~ja/#routes

Вот как раз на этом сайте и находиться скрипт с названием mpath2.sh

oftop
Прочитав то , на что я линки накидал , скачав сей скрипт можно разобраться в скрипте.

И постарайтесь впредь пользоваться поиском , а не горлопанить .

Реальная практическая помощь может быть мною обеспечена за круглую сумму )))

конец oftop
Контакты для связи:

E-mail: ford1813@gmail.com

Telegram: @ford1813
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Load balancing in linux

Сообщение Ленивая Бестолочь »

ну вот смотрите, например похожие темы:
Отказоустойчивость. Как балансировать с 2-мя каналами
Чем склеить 2 SHDSL-линка?
Ограничение скорости на eth0

на этом и других форумах такие задачи обсуждались не раз.
возможно вам стоит поделить их на несколько (объединение линков, балансировка, отказоустойчивость) - тогда будет проще найти хаутушки на этот счет.

Давайте договоримся,если кто нибудь ещё решил предложит читать мне мануал пусть зря не занимает виртуальное пространство этого форума! Я спрашиваю про реальную практическую помощь,а не про советы типа "Почитай manual" или "Поищи в гугле"...

Спасибо за внимание wink.gif


если вы хотите реальную практическую помощь, тогда не задавайте вопросы из теоретической области.
на конкретные вопросы всегда можно дать конкретный ответ, на вопрос типа "как мне сделать вот это...?" вас всегда будут посылать в гугль.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Karen
Сообщения: 160
ОС: Slackware 11.0

Re: Load balancing in linux

Сообщение Karen »

Спасибо за информаишен :rolleyes:
Спасибо сказали:
Аватара пользователя
Karen
Сообщения: 160
ОС: Slackware 11.0

Re: Load balancing in linux

Сообщение Karen »

Доброе время суток,

Тут вот знакомый guru помог со скриптом,вот он:

Код: Выделить всё

#!/bin/bash

##############################################################
################### Back chanel switcher script ##############
########################## by linuxoid #######################
######################### admin@lug.am #######################
##############################################################

#Variables
ARMINCO=195.250.90.1 #"ARMINCO" gateway
ADC=91.103.24.12     #"ADC" gateway


if  [[ `/bin/ping -c 3 ${ARMINCO} | /bin/grep "64 bytes"` ]]
then
    if [[ `/sbin/route | /bin/grep default | /bin/grep ${ARMINCO}` ]]
    then
        echo "`date '+%d-%m-%Y-%H:%M:%S'`: Default gateway is ${ARMINCO}" >>/var/log/chanel.log
    else
    {
    #Switch chanel to ARMINCO gateway
    /sbin/route del default
    /sbin/route add default gw ${ARMINCO}
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to ARMINCO gateway" >>/var/log/chanel.log
    }
    fi
else
    {
    #Switch chanel to ADC
    /sbin/route del default
    /sbin/route add default gw ${ADC}
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to ADC gateway" >>/var/log/chanel.log
    }
fi


Но теперь возникла другая проблема,у меня в сети инет раздается через NAT. Как можно сделать чтоб NAT тоже автоматом начал перебрасывать пакеты на в этото момент работающий interface? Кстати уточню что мне не понадобился balancing нагрузки,мне просто надо чтоб при падение одного линка,активировался второй.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Load balancing in linux

Сообщение Ленивая Бестолочь »

как вариант - напишите правила iptables для того и для другого случая и загружайте их с помощью iptables-load.
вызов iptables-load нужно будет вставить в те места скрипта, где прописывается шлюз
( /sbin/route add default gw ).
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Karen
Сообщения: 160
ОС: Slackware 11.0

Re: Load balancing in linux

Сообщение Karen »

iptables-load или iptables-restore ? :unsure:
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Load balancing in linux

Сообщение Ленивая Бестолочь »

restore, конечно, ошибся по памяти :-\
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
ford1813
Сообщения: 383
ОС: Slackware

Re: Load balancing in linux

Сообщение ford1813 »

Karen писал(а):
28.02.2009 00:36
Доброе время суток,

Тут вот знакомый guru помог со скриптом,вот он:

Код: Выделить всё

#!/bin/bash

##############################################################
################### Back chanel switcher script ##############
########################## by linuxoid #######################
######################### admin@lug.am #######################
##############################################################

#Variables
ARMINCO=195.250.90.1 #"ARMINCO" gateway
ADC=91.103.24.12     #"ADC" gateway


if  [[ `/bin/ping -c 3 ${ARMINCO} | /bin/grep "64 bytes"` ]]
then
    if [[ `/sbin/route | /bin/grep default | /bin/grep ${ARMINCO}` ]]
    then
        echo "`date '+%d-%m-%Y-%H:%M:%S'`: Default gateway is ${ARMINCO}" >>/var/log/chanel.log
    else
    {
    #Switch chanel to ARMINCO gateway
    /sbin/route del default
    /sbin/route add default gw ${ARMINCO}
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to ARMINCO gateway" >>/var/log/chanel.log
    }
    fi
else
    {
    #Switch chanel to ADC
    /sbin/route del default
    /sbin/route add default gw ${ADC}
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to ADC gateway" >>/var/log/chanel.log
    }
fi


Но теперь возникла другая проблема,у меня в сети инет раздается через NAT. Как можно сделать чтоб NAT тоже автоматом начал перебрасывать пакеты на в этото момент работающий interface? Кстати уточню что мне не понадобился balancing нагрузки,мне просто надо чтоб при падение одного линка,активировался второй.

Ну вы жжоте сэр.
Скрипт на который я кинул линк, не лоад балансер.
У меня на том скрипте при игре с весами ,юзается только 1 канал первичный.
Второй неактивный пока не упал первый.
И ровно обратно переключается. Автоматом. Менее чем за 1 секунду.

А вот то что некоторые люди которые использую нат , и не держат у себя маскарад в правилах на 2 интерфейса ну уж извеняйте.

Время пинга прошло. Тем более в скриптах такого назначения.

А теперь представьте что у вас будет , если упадет интернет дальше шлюза который вы пингуете . ДОпустим связь между вашим провайдером и дальше по ветке.
?
Контакты для связи:

E-mail: ford1813@gmail.com

Telegram: @ford1813
Спасибо сказали:
ford1813
Сообщения: 383
ОС: Slackware

Re: Load balancing in linux

Сообщение ford1813 »

Контакты для связи:

E-mail: ford1813@gmail.com

Telegram: @ford1813
Спасибо сказали:
Аватара пользователя
Karen
Сообщения: 160
ОС: Slackware 11.0

Re: Load balancing in linux

Сообщение Karen »

Примерно так? :rolleyes:

Код: Выделить всё

#!/bin/bash

##############################################################
################### Back chanel switcher script ##############
########################## by linuxoid #######################
######################### admin@lug.am #######################
##############################################################

#Variables
ARMINCO=195.250.90.1 #"ARMINCO" gateway
ADC=91.103.24.12     #"ADC" gateway


if  [[ `/bin/ping -c 3 ${ARMINCO} | /bin/grep "64 bytes"` ]]
then
    if [[ `/sbin/route | /bin/grep default | /bin/grep ${ARMINCO}` ]]
    then
        echo "`date '+%d-%m-%Y-%H:%M:%S'`: Default gateway is ${ARMINCO}" >>/var/log/chanel.log
    else
    {
    #Switch chanel to ARMINCO gateway
    /sbin/route del default
    /sbin/route add default gw ${ARMINCO}
    /sbin/iptables-restore /home/karen/iptables-nat1
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to ARMINCO gateway" >>/var/log/chanel.log
    }
    fi
else
    {
    #Switch chanel to ADC
    /sbin/route del default
    /sbin/route add default gw ${ADC}
    /sbin/iptables-restore /home/karen/iptables-nat2
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to ADC gateway" >>/var/log/chanel.log
    }
fi



Где в файле /home/karen/iptables-nat1 прописываю

Код: Выделить всё

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


где eth0 это интерфейс смотрящий в сторону ARMINCO ( IP: 195.250.90.63)

а в файле /home/karen/iptables-nat2 прописываю

Код: Выделить всё

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


где eth1 это интерфейс смотрящий в сторону ADC ( IP: 91.103.24.85)

Приблизительно так да? )

2 wertik

Спасибо за ссылку,сейчас просмотрю ;)
Спасибо сказали:
Аватара пользователя
Karen
Сообщения: 160
ОС: Slackware 11.0

Re: Load balancing in linux

Сообщение Karen »

А если я хочу запускать этот скрипт каждую минуту надо создать файл (например runswitcher) где прописано примерно такое:

Код: Выделить всё

SHELL=/bin/bash
MAILTO=root
0-59 * * * * /home/karen/chanalswitcher



Потом набираю

Код: Выделить всё

crontab runswitcher
.

Ну что скажете уважаемые гуру?Все ли я правильно отметил? :rolleyes:
Спасибо сказали: