Как в MWS Cloud построили сетевой балансировщик с минимальными потерями производительности
На первый взгляд у балансировщика довольно простая работа: принять трафик, распределить его между виртуалками и следить, чтобы запросы не уходили на упавшие серверы. Всё выглядит прекрасно, пока дело не доходит до реальных пакетов, маршрутизации и отказоустойчивости.
В MWS Cloud построили собственный NLB и получили разницу всего в 1-2% между прямым обменом виртуальных машин и обменом через балансировщик. Правда, ради этого пришлось пойти на архитектурные компромиссы. Первую схему проверки доступности серверов выбрали за простоту, хотя заранее понимали, что она плохо масштабируется. Следующая избавила от одних проблем, зато принесла другие.
Узнаем, как инженеры выстраивали маршруты пакетов, выбирали между производительностью и гибкостью и почему даже удачные решения приходится пересматривать.