Перейти к содержимому
Калькуляторы

Load balancing using Debian(GNS3 as virtual env)

Коллеги, доброго времени суток! C LB дело имею впервые. Постараюсь изложить все максимально подробно.

И так, стоит задача отбалансировать нагрузку используя Debian.

Для тестирования использую средства GNS3 и LB on Debian, всего одни LB и два SRV.

Routes к loopback'ам, ECMP включено по умолчанию, 2 VRF's, один VLAN для группы серверов,  все максимально простенько

1. Проблема номер одни - если один из backend'ов сломался это забирает 25 минут чтобы перелить все сессии на те что продолжают работать.

Если удалить ARP запись "disconected сервера" на LB то все "ре-балансируется" сразу же на остальные которые живые.

PS: Я подозреваю что чего то не хватает в топологии, подскажите пожалуйста, что не так. Благодарен за любую информацию. 

topology.thumb.png.71e27937ac2ecf809b12db5735da7ef1.png

Изменено пользователем vasil.german

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@vasil.german доброго!

В данном случае следует проверить время жизни arp cache и работает ли GC, удаляющие просроченные записи. Логика работы с arp cache тут стандартная, как в Debian.

По настройке таймеров arp cache и порогов GC в Cumulus Linux посмотрите оригинальную статью: https://support.cumulusnetworks.com/hc/en-us/articles/202012933-Changing-ARP-timers-in-Cumulus-Linux

 

Вообще, если предполагается балансировка нагрузки на некоторый сервис, то следует применять специализированные балансировщики, которые отслеживают состояние сервиса на нодах, например, HAProxy или Nginx.

Для корректного резервирования средствами ECMP, при выходе какого-то хоста/линка из строя, соответствующие некстхопы должны удаляться. Если в вашей схеме из строя выйдет только сам сервис, то нагрузка не уйдет на другую ноду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BFD спасет отца русской демократии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@h1vs2 Я смотрел в сторону BFD но так и не добился его работы на Debian.

Пожалуйста, не могли бы Вы в 2-ох словах объяснить принцип работы BFD?

Судя по N/A в таблице BFD-сессия не поднялась.

 

image.thumb.png.abb4fb93fe042634c1812de1affa738a.png

 

@Victor Tkachenko Спасибо за ответ, это сработало, но поведение VRF не совсем пока понятное для меня, попробую объяснить:

Если я ifdown\ifup swp2 (порт на котором висит SRV_1 vlan40  IP address 222.222.222.3) сессии  балансируются (перебегают туда - сюда), все ОК

Если я ifdown swp3 (порт на котором висит SRV_2 vlan40  IP address 222.222.222.4) то на порту swp2 tcpdump видит Request'ы who-has 222.222.222.4 tell 222.222.222.1, length 28 (ровно через 5 секунд, так как `net.ipv4.neigh.vlan40.base_reachable_time_ms = 5000`

 

Изменено пользователем vasil.german

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

http://docs.frrouting.org/en/latest/bfd.html - это может помочь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

7 hours ago, Victor Tkachenko said:

Для корректного резервирования средствами ECMP, при выходе какого-то хоста/линка из строя, соответствующие некстхопы должны удаляться.

Как это реализовать, подскажите пожалуйста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 часа назад, vasil.german сказал:

Как это реализовать, подскажите пожалуйста?

Необходимо воспользоваться протоколами динамической маршрутизации, чтобы условный сервер мог передавать информацию о своих сетях и вам не приходилось вручную указывать статические маршруты.

Например, почитайте про OSPF или BGP. При падении линка соседство OSPF/BGP порвется и маршрут до 172.21.114.65/32 будет удален.

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

 

6 часов назад, vasil.german сказал:

Пожалуйста, не могли бы Вы в 2-ох словах объяснить принцип работы BFD?

BFD проверяет связность двух заранее известных IP-адресов. События разрыва/установки сессии BFD могут быть привязаны к сессиям протоколов маршрутизации или статическим маршрутам для их своевременного удаления/восстановления.

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

 

Конкретно в случае с FRR работа BFD в связке со статическими маршрутами не реализована (Feature Request).

 

Информация по упомянутым выше протоколам и их конфигурации в Cumulus Linux есть в официально документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо

Изменено пользователем vasil.german

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.