Существует несколько различных способов балансировки нагрузки приложения. Некоторые из них являются физическими устройствами, которые находятся между вашим маршрутизатором и серверами; некоторые из них основаны на программном обеспечении с небольшим количеством кода, который выполняется на каждом из устройств с балансировкой нагрузки.
Microsoft имеет встроенную в Windows систему балансировки нагрузки, основанную на программном обеспечении. Это довольно хорошо и легко настроить.
Однако я расскажу о физическом маршруте.
Здесь есть несколько алгоритмов, но основным является Round Robin с опцией для «липких» сессий. В этом случае залипание означает, что балансировщик нагрузки попытается сохранить историю клиентов и перенаправить запросы от одного и того же клиента на одну и ту же машину. Это означает, что балансировщик нагрузки должен вести список клиентов и куда он направил этих клиентов. В зависимости от размера кэша клиенты могут не попадать в список, а при будущих запросах они могут перенаправляться на другой сервер.
Раунд Робин - довольно простая идея. Для каждого входящего запроса отправляйте его на следующий сервер в списке. Более сложные алгоритмы могут учитывать, сколько запросов поступает на конкретный сервер и сколько времени занимают эти запросы; затем попытайтесь сбалансировать новые запросы в пользу более быстрых серверов. Эта часть сложна, хотя.