Jump to content
Калькуляторы

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

Edited by vasil.german

Share this post


Link to post
Share on other sites

@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, при выходе какого-то хоста/линка из строя, соответствующие некстхопы должны удаляться. Если в вашей схеме из строя выйдет только сам сервис, то нагрузка не уйдет на другую ноду.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

@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`

 

Edited by vasil.german

Share this post


Link to post
Share on other sites
7 hours ago, Victor Tkachenko said:

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

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

Share this post


Link to post
Share on other sites
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 есть в официально документации.

Share this post


Link to post
Share on other sites

Нормальный хелсчек нужно делать на балансере и все..

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this