Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: Sairos в Oct 10, 2011, 11:25



Титла: Решение за two isp с load balancing
Публикувано от: Sairos в Oct 10, 2011, 11:25
Разполагам с два Интернет доставчика търся някакво решение за load balancing с идеята че ако нета на идният доставчик падне другият да се включи сам и да продължи.
Къде ли не гледах нищо свястно не открих.
Някакви идеи ?


Титла: Re: Решение за two isp с load balancing
Публикувано от: kiko_99319 в Oct 10, 2011, 12:04
При pfSense става доста елементарно и работи(поне при версия 1,2,3 съм го пробвал), другия вариант е с някакво скриптче.

П.П. На това му се казва fail over.


Титла: Re: Решение за two isp с load balancing
Публикувано от: Sairos в Oct 10, 2011, 12:15
Забравих да уточня че търся вариант който да работи без инсталация на друга операционна система.
Благодаря за съвета.


Титла: Re: Решение за two isp с load balancing
Публикувано от: laskov в Oct 10, 2011, 12:47
Нещо от далечната 2008-ма:
http://www.linux-bg.org/forum/index.php?topic=33205.msg163194#msg163194 ($2)
но това е превключване, а не load balancing, както е озаглавена темата ти. Може да пуснеш едно търсене на iproute2 във форума.


Титла: Re: Решение за two isp с load balancing
Публикувано от: Ipolit в Oct 10, 2011, 13:40
Eто ти едно бързо, но при него се ползва само единия доставчик. Аз имам 4 линии, 2 са в BGP и там само си се превключва. Но едната е с това скриптче

Код
GeSHi (Bash):
  1. #!/bin/bash
  2. ECGW="xxx.xxx.xxx.xxx" - единия гейтуей
  3. BGP="yyy.yyy.yyy.yyy" - другия гейтуей
  4. PINGADR="xxx.xxx.xxx.xxx" - тука си пингя първия гейтуей
  5. mail="xxxx@gmail.com"
  6. default=$(ip ro ls|awk '/default/ {print $3}')
  7.  
  8.  
  9. ping -c 2 $PINGADR -I eth1
  10. if [ $? -ne 0 ]&&[ ${default} == ${ECGW} ]; then
  11. ip ro del
  12. ip ro add default via $BGP
  13. echo "GW via BGP" |mail -s "EvroCom Down. Changing Routing table via BGP" ${mail}
  14.  
  15. else
  16. ping -c 2 $PINGADR -I eth1
  17. if [ $? -ne 0 ]&&[ ${default} == ${BGP} ]; then
  18. echo "still no internet on EC"
  19.  
  20. elif  [ ${default} == ${BGP} ]; then
  21. ip ro del
  22. ip ro add default via $ECGW
  23. echo "GW changed via EvroCom"|mail -s "EvroCom is UP" ${mail}
  24.  
  25. elif [ ${default} == ${ECGW} ]; then
  26. echo "nqma problem"
  27. fi
  28. fi
  29.  
Малко е омототано, ама работи.
И това в кронтаб на всяка минута да се изпълнява


Титла: Re: Решение за two isp с load balancing
Публикувано от: Sairos в Oct 10, 2011, 15:41
Благодаря Ви много !


Титла: Re: Решение за two isp с load balancing
Публикувано от: tolostoi в Oct 10, 2011, 15:49
В "бележника" съм си копирал, нещо, което е по-разширено, ако искаш го прегледай http://stardust.linuxolution.org/smf/index.php/topic,47.0.html


Титла: Re: Решение за two isp с load balancing
Публикувано от: Ipolit в Oct 10, 2011, 16:18
tolostoi, за да пуснеш BGP, трябва да имаш автономна система, договор с 2 доставчика за тая услуга и още хиляди формалности. тъй че това не е опция за питащия. още  повече, че от това има смисъл ако хостваш нещо и искаш винаги ти да си достъпен на едно и също IP
по  принцип се  прави с iproute2 + пач за loadbalancing.
 но за обикновено превключване тия скриптчета вършат работа.


Титла: Re: Решение за two isp с load balancing
Публикувано от: tolostoi в Oct 10, 2011, 22:08
Съгласен, имах предвид да го прегледа за идеи, не съм бил точен по-горе. Пък и следващият който попадне на темата може да бъде щастлив, ако търси нещо подобно. Да кажа, че горното е просто преписано от един блог ( в който има и други интересни статии) не съм го ползвал/пробвал.


Титла: Re: Решение за two isp с load balancing
Публикувано от: Astor в Oct 10, 2011, 22:57
Здравейте,
как стои въпроса за load balancing чрез 2 routing tables и 2 gw, например описан тук:http://mundonix.wordpress.com/2010/01/20/how-to-load-balancing-failover-with-dual-multi-wan-adsl-cable-connections-on-linux/
При отпадане на единият isp при положение не е отпаднал порта (съответно маршрута в routing table) дали всеки втори пакет би се губил (за това че минава все още през отпадналия доставчик)?
Т.е. може ли да се мине без гимнастиките със ping скриптовете?


Титла: Re: Решение за two isp с load balancing
Публикувано от: shadowx в Oct 13, 2011, 16:42
Разгледай товa
http://lartc.org/howto/lartc.rpdb.multiple-links.html


Титла: Re: Решение за two isp с load balancing
Публикувано от: Sairos в Oct 13, 2011, 18:24
Благодаря на всички за помощта !!!

След като разгледах всички скриптовете и тествах някой от тях, се спрях на един който беше преработен.

Самият скрипт изпълнява проверка дали първият Ви зададен : "gateway" е  : "up" и ако е така оставете на него, ако e : "down" Ви прехвърля на вторият зададен : "gateway" от вас.
След завръщането на първият Ви : "gateway" се връщате на него автоматично.
 
Код
GeSHi (Bash):
  1. #!/bin/sh
  2.  
  3. GW_eth1=x.x.x.x  #Адреса на първият gateway
  4. GW_eth2=x.x.x.x  #Адреса на вторият  gateway
  5.  
  6. ip ro del default via  $GW_eth2 dev eth2  #При стартиране премахваме втория gateway от таблицата
  7.  
  8. # Prevklyu4va default gateway avtomati4no
  9.  if ping -c 3 $GW_eth1 -I eth1 1> /dev/null 2> /dev/null; then # "-I eth1" заменете eth1 с интерфейса на вашият първи gateway
  10.    echo "GW_eth1 raboti ..."
  11.     if ! /sbin/route -n | grep $GW_eth1 1> /dev/null 2> /dev/null; then
  12.       ip ro del default via  $GW_eth2 dev eth2
  13.       ip ro add default via $GW_eth1 dev eth1
  14.       cp /etc/resolv.conf.eth1 /etc/resolv.conf
  15.       echo "Default gw changed to GW_eth1"
  16.     fi
  17.  
  18.  else
  19.    echo "GW_eth1 ne raboti ..."
  20.     if /sbin/route -n | grep $GW_eth1 1> /dev/null &2> /dev/null; then
  21.       ip ro del default via  $GW_eth1 dev eth1
  22.       ip ro add default via $GW_eth2 dev eth2
  23.       cp /etc/resolv.conf.eth2 /etc/resolv.conf
  24.       echo "Default gw changed to GW_eth2"
  25.     fi
  26.  fi

1. Променете по скрипта : "gateway" адресите и съответно имената на вашите интерфейси.
2. Необходимо е да бъдат направени два файла  resolv.conf.eth1 и resolv.conf.eth2 като ползвате за образец файла resolv.conf и в тях постави DNS-ите на съответния доставчик, файловете трябва да бъдат в : "/etc/" .
3. Скрипта се изпълнява през : "crontab" на колкото време желаете.
4. Това е забавлявайте се :)

Отново благодаря на всички за помощта !!!


Титла: Re: Решение за two isp с load balancing
Публикувано от: Acho в Oct 13, 2011, 20:03
И аз си имам на едно място работещ подобен скрипт. Досега обаче никой не го каза, а всеки пингва gateway-а, и така проверява аджеба има ли интернет или няма. Ами ако си има нормален пинг до GW,  а нататъка по рутингите не минава нищо, какво правим ? Защото не само между GW и нас може да има проблем. Така че проверката с пинг до GW е малко несигурна. Всеки админ сам ще си реши какво ще пингва, дали GW или някакъв друг IP адрес/хост, за който е сигурен, че винаги (или почти винаги) е UP. Успехи.


Титла: Re: Решение за two isp с load balancing
Публикувано от: Sairos в Oct 13, 2011, 20:21
И аз си имам на едно място работещ подобен скрипт. Досега обаче никой не го каза, а всеки пингва gateway-а, и така проверява аджеба има ли интернет или няма. Ами ако си има нормален пинг до GW,  а нататъка по рутингите не минава нищо, какво правим ? Защото не само между GW и нас може да има проблем. Така че проверката с пинг до GW е малко несигурна. Всеки админ сам ще си реши какво ще пингва, дали GW или някакъв друг IP адрес/хост, за който е сигурен, че винаги (или почти винаги) е UP. Успехи.

Да така е много си прав, за това аз съм го направил по този начин :

Код
GeSHi (Bash):
  1. if ping -c 3  8.8.8.8 -I eth1 1> /dev/null 2> /dev/null; then

Опита ми е показал че този адреса на гугалци е достатъчно сигурен, но както ти казваш всеки сам да си прецени какво да пингва.

вместо

Код
GeSHi (Bash):
  1. if ping -c 3 $GW_eth1 -I eth1 1> /dev/null 2> /dev/null; then




Титла: Re: Решение за two isp с load balancing
Публикувано от: Astor в Oct 13, 2011, 23:28
@Shadowx:
Точно това ми беше въпроса (failover+loadbalancing), според мен ако използвам това:
Цитат
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
       nexthop via $P2 dev $IF2 weight 1
при отпадане на единия от двата доставчика ($P1,$P2 - gw) мрежите които са се рутирали през отпадналия, няма ли да са НЕдостъпни, въпреки че все още могат да се достъпят през другия доставчик?

А относно проблемът какво да се ping-ва, ако има работещ resolving един пинг до google.bg например, би ти давал гаранция че имаш свързаност
Цитат
linux@pc:~$ host google.bg
google.bg has address 74.125.39.147
google.bg has address 74.125.39.105
google.bg has address 74.125.39.104
google.bg has address 74.125.39.99
google.bg has address 74.125.39.106
google.bg has address 74.125.39.103
все един ще отговори :)



Титла: Re: Решение за two isp с load balancing
Публикувано от: Sairos в Oct 14, 2011, 06:29
@Shadowx:
Точно това ми беше въпроса (failover+loadbalancing), според мен ако използвам това:
Цитат
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
       nexthop via $P2 dev $IF2 weight 1
при отпадане на единия от двата доставчика ($P1,$P2 - gw) мрежите които са се рутирали през отпадналия, няма ли да са НЕдостъпни, въпреки че все още могат да се достъпят през другия доставчик?

А относно проблемът какво да се ping-ва, ако има работещ resolving един пинг до google.bg например, би ти давал гаранция че имаш свързаност
Цитат
linux@pc:~$ host google.bg
google.bg has address 74.125.39.147
google.bg has address 74.125.39.105
google.bg has address 74.125.39.104
google.bg has address 74.125.39.99
google.bg has address 74.125.39.106
google.bg has address 74.125.39.103
все един ще отговори :)

Да те ще бъдат недостъпни


Титла: Re: Решение за two isp с load balancing
Публикувано от: backinblack в Nov 13, 2011, 01:29
Забравих да уточня че търся вариант който да работи без инсталация на друга операционна система.
Благодаря за съвета.

Ако моята идея не е малко закъсняла, бих предложил pfSense във виртуална машина(virtualbox). Ще ти трябва не повече от 100-150МБ рам заедно с виртуал бокса. Аз също бях подивял на тема рутери и не намерих нищо свястно като програма с добри настройки, а отделна машина за рутер на която да инсталирам специализирана рутерна ОС също не ме допадаше.


Титла: Re: Решение за two isp с load balancing
Публикувано от: Sairos в Nov 13, 2011, 10:48
Забравих да уточня че търся вариант който да работи без инсталация на друга операционна система.
Благодаря за съвета.

Ако моята идея не е малко закъсняла, бих предложил pfSense във виртуална машина(virtualbox). Ще ти трябва не повече от 100-150МБ рам заедно с виртуал бокса. Аз също бях подивял на тема рутери и не намерих нищо свястно като програма с добри настройки, а отделна машина за рутер на която да инсталирам специализирана рутерна ОС също не ме допадаше.

Благодаря за идеята и  съвета :)


Титла: Re: Решение за two isp с load balancing
Публикувано от: backinblack в Nov 13, 2011, 15:06
Забравих да уточня че търся вариант който да работи без инсталация на друга операционна система.
Благодаря за съвета.

Ако моята идея не е малко закъсняла, бих предложил pfSense във виртуална машина(virtualbox). Ще ти трябва не повече от 100-150МБ рам заедно с виртуал бокса. Аз също бях подивял на тема рутери и не намерих нищо свястно като програма с добри настройки, а отделна машина за рутер на която да инсталирам специализирана рутерна ОС също не ме допадаше.

Благодаря за идеята и  съвета :)
Ами ако решиш да я прилагаш или пробваш идеята ми, с последната версия имах проблем с инсталирането и подкарването и във виртуалката, но с по-стара лесно се справих и вече стартирана ъпдейт към последна версия и всичко е ток и жица. Има и доста туториали.

http://nedelchev.net/firewall-with-pfsense
http://bora.bilg.in/blog/04/multi-wan-load-balancing-under-windows-with-pfsense
http://timita.org/wordpress/2011/07/31/protect-windows-with-pfsense-and-virtualbox-part-3-installing-virtualbox-and-creating-a-new-vm-for-pfsense/

Аз по принцип ползвам ВМуаре, но за тази цел Виртуал бокс защото има възможност на отделна виртуална машина да изкараш икона на десктопа и директно, само нея да стартираш. Тази икона като се сложи за стартиране със стартирането на машината и всичко се амтоматизира от "бъстър копче". Бъстър копче гаси компа и рутера и пуска компа и рутера без монитор.
И друга забележка, на компа на който е виртуалката, на лан картата която ще отива към суича, вътрешната мрежа сложи ръчно ИП защото при стартиране на машината, хост машината и мрежата се стартира преди виртуалката да даде ИП и остава изключена, но с ръчно  въведено ип няма проблем.


Титла: Re: Решение за two isp с load balancing
Публикувано от: shadowx в Nov 16, 2011, 16:37
Оставам с впечатление , че за да откриете топлата вода, ще стоите АЕЦ .... :/
За load balancing-а , вече дадох линк как се прави, ето и за статичните рутинги http://www.ssi.bg/~ja/#routes това е твоето решение, без виртуални машини и подобни дивотий.
п.с.: не съм сигурен , но ако просто добавиш статични рутинги с разична тежест (weight) и единия доставчик падне, мислч, че ще ти се прехвърли връзката през другия ( не съм сигурен обаче )