Какие алгоритмы балансировки нагрузки там

Несомненно, Вы наследуете скорость соединения.. и Вы также наследуете DOS/DDOS-АТАКИ, которую тянут Ваши сайты. Вы наследуете огромное количество электронных писем СПАМА, которые Ваше бета-приложение разрешило из-за не проверки чего-то во время всего ночного Хакатона, и Вы наследуете "запланированные отключения электричества своего единственного ISP"

Потратьте $150-200 на что-то хорошее для Вашего дома, затем арендуйте некоторые серверы в Savvis, infomart или некотором другом месте, которые стоят менее чем 100$ каждого.

Все это взятия является одна finatical группа, чтобы поставить под угрозу Ваш сайт и отправить угрозы смерти от Вашего домашнего IP для введения мужчин, черных вниз на Вас как безумный. Вы не хотите головную боль, отправляете ее.

32
задан 12 February 2010 в 21:33
3 ответа

Наиболее распространенные алгоритмы балансировки нагрузки для подсистем балансировки нагрузки HTTP, по моему скромному мнению:

  • Циклический алгоритм (иногда называемый "Затем в Цикле").

  • Взвешенный Циклический алгоритм - поскольку Циклический алгоритм, но некоторые серверы получает большую долю полного трафика.

  • Случайный.

  • Исходный хеш IP. Соединения распределяются серверам бэкэнда на основе исходного IP-адреса. Если webnode перестал работать и вынут из сервиса изменения распределения. Пока все серверы работают, данный клиентский IP-адрес будет всегда переходить к тому же веб-серверу.

  • Хеш URL. Во многом как исходный хеш IP, кроме хеширования сделан на URL запроса. Полезный, когда выравнивание нагрузки перед кэшами прокси-сервера, поскольку запросы на данный объект будут всегда переходить ко всего одному кэшу бэкенда. Это избегает дублирования кэша, храня тот же объект в нескольких / все кэши, и увеличивает плановую мощность кэшей бэкенда.

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

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

  • Наименьшее количество задержки. Perlbal выполняет быстрый запрос ОПЦИЙ HTTP к серверам бэкэнда и отправляет запрос к первому серверу для ответа.

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

Существуют пограничные случаи, где более экзотические алгоритмы полезны - например, потоковая передача видео может предоставить себя хорошо "наименьшему количеству трафика". Но вообще говоря, для большинства веб-приложений и веб-сайтов, оптимальным является решение:

  • Общее / распределенная система сессии, так, чтобы любой webnode мог ответить на любой пользовательский запрос (т.е. данные сеанса пользователя, такие как сеансовые куки одинаково доступно всем серверам).

  • Выравнивание нагрузки с помощью Циклического алгоритма (дополнительно Взвешенный Циклический алгоритм) или Случайное распределение. Циклический алгоритм и Случайный является простыми и эластичными алгоритмами без любых проблем 'горячей точки', т.е. распределение нагрузки к бэкендам остается справедливым во всех ситуациях.

33
ответ дан 28 November 2019 в 19:56

Вопрос является неполным:

Баланс загрузки, ЧТО?

Центральные процессоры могут взять насыщенность; обычная перспектива назад - продвигающий в ресурсе вместо того, чтобы вытянуть к нему.

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

Сети могут быть загрузкой, сбалансированной основанный на задержке или общей пропускной способности...

Люди могут быть загрузкой, сбалансированной на основе личного качества; некоторые работают в многозадачном режиме хорошо, другие не делают и затем существует качество по сравнению с количеством. Вы могли бы оптимизировать свои человеческие ресурсы на основе многих факторов и с различными весами, данными различным атрибутам.

Вышеупомянутое является совсем не исчерпывающим; дело в том, что различные ресурсы берут совершенно другие виды выравнивания нагрузки. Из их доступных атрибутов и мощностей необходимо заявить, КОТОРЫЕ представляют интерес в балансировке.

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

RT

5
ответ дан 28 November 2019 в 19:56
  • 1
    Вы пропускаете вопрос Richard, алгоритмы являются основанием любого метода или реализации. –  monomyth 12 February 2010 в 18:20
  • 2
    Жаль мономиф, я didn' t пропускают проклятую вещь. Откройте свой ум. –  Richard T 12 February 2010 в 18:23
  • 3
    @monomyth, @Richard является правильным - выбор алгоритма зависит от какой you' выравнивание нагрузки ре. Можно разработать алгоритм для загрузки использования дискового пространства баланса, и это не может применяться вообще к чему-то еще, как Запросы HTTP. –  Josh 12 February 2010 в 21:13
  • 4
    @Josh, Richard, понятие выравнивания нагрузки является тем же все же. Вы могли бы все еще использовать Циклический алгоритм для балансировки использования диска, iSCSI, HTTP, ЦП, чего-либо. –  Mark Henderson♦ 14 February 2010 в 00:52
  • 5
    @Farseeker, который я согласовываю, Циклический алгоритм, довольно универсален. Но not' t там некоторые алгоритмы балансировки нагрузки, которые характерны для задачи? –  Josh 14 February 2010 в 03:47

Не прямой ответ на Ваш вопрос, а фактическое решение мы нашли полезными. Используя LVS и импульсного демона, наше выравнивание нагрузки HTTP настроено для вызова пользовательского сценария удара, который определяет нагрузку на "реальные серверы" через простое соединение SSH и вызов ко времени работы.

Затем на основе среднего числа загрузки серверов взвешивание установлено на сервер. Не самый научный подход, поскольку среднее число загрузки не обязательно показательно из HTTP-соединений или загрузки ЦП, вызванной теми соединениями. Тем не менее, у нас были удивительно эффективные результаты.

Мой 2c. YMMV.

PS: смотрите на проект LVS - Вы определенно найдете информацию о реализациях планирования баланса загрузки.

0
ответ дан 28 November 2019 в 19:56

Теги

Похожие вопросы