LINUX.ORG.RU

распределение нагрузки


0

0

Всем привет. Подскажите плз как лучше распределить нагрузку между серверами. Архитектура примерно такая: есть N специализированных серверов которые будут обрабатывают запросы клиентов. Клиенты это – браузеры. Kлиенты создают персистент соединение и начинают обмен данными с сервером. Первоночально я думал завести несколько сабдоменов sub1.example.com, … subN.example.com и клиент должен был бы с помощью XmlHttpRequest устанавливать соединение с одним из этих серваков, в зависимости от их загрузки. К сожелению, обнаружилось, что джаваскрипт может обратиться только к тому домену, с которого был загружен. Т.е если страница была загружена с www.example.com c помощью скрипта не удасться обратиться на sub1.example.com. Вообщем похоже, что для клиента должна быть одна точка входа, к примеру www.example.com, а запросы к этому серверу делегировать уже бэкэнду. Меня только смущает, что количество постоянных соединений может быть очень большим – десятки, а то и сотни тысяч. При таких нагрузках все что угодно загнётся. Можно конечно в днсе для этого адреса указать несколько ИП адресов, но такой вариант тоже не идеален. Вообщем поделитесь плз своими мыслями по этому поводу. Кстити может кто знает другие места где подобные вопросы можно обсудить?

anonymous

> При таких нагрузках все что угодно загнётся

лоадбалансеры сиско держат.. Охота Крепкое..

dilmah ★★★★★
()

вообще, apache/nginx сам себе лоадбалансером может работать

friday ★★★
()

Ещё в твоей ситуации clusterIP может вырулить. При штатной нагрузке в ~50000 я бы не советовал строить систему без него. ну ещё можеш настроить днс на раздачу нескольких IP на одно имя по алгоритму RoundRobin

cvv ★★★★★
()
Ответ на: комментарий от dilmah

а не подскажеш случайно которая конкретно модель сиски в состоянии выдержать 200 000 одновременных коннектов?

cvv ★★★★★
()
Ответ на: комментарий от cvv

гм. поддерживаю месье гика. при количестве подключений в несколько сотен с одновременным шейпингом и прочем на нескольких гигабитах цыски как-то смущаются. а комп способный это делать стоит $1000 включая серверный корпус и PCI-E сетевухи.

vahvarh

cvv ★★★★★
()
Ответ на: комментарий от cvv

вобщем если нужен 1 IP - только Cluster IP

если ~5 IP допустимо на одно имя то можеш поигратся с ДНС что заметно проще чем cluster ip

cvv ★★★★★
()
Ответ на: комментарий от cvv

Меня игра с днсом смущает ибо - <Многие DNS-сервера кэшируют у себя таблицы соответствий. Кэширование таблиц DNS может привести к тому, что схема кругового DNS вообще теряет всякий смысл.> И просветите что кластерИп такой? И что с помощью него можно держать столько открытых штпп соединений?

anonymous
()
Ответ на: комментарий от anonymous

man iptables

ClusterIP позволяет статически распределить нагрузку на несколько серверов создавая из пула физических серверов один виртуальный + если прикрутить heartbeat получим неплохой файловер *БЕЗ* единично точки отказа.

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

рекомендую ориентироватся на 4 бек-энда в штатном режиме или 8. Будет проще настраивать.

cvv ★★★★★
()
Ответ на: комментарий от cvv

точнее берём максимально возможное количество соединений делим на 50000 и *увеличиваем* до степени двойки. Таким образом мы получим оптимально количество бекэндов

cvv ★★★★★
()
Ответ на: комментарий от anonymous

>И что с помощью него можно держать столько открытых штпп соединений?

относительно просто маштабируется до 800000 в штатнов режиме и лимитом в 1048576 в пике.

Отмасштабировать на большее количество может быть проблемным. Дело было давненько конкретней суть проблемы не помню

cvv ★★★★★
()
Ответ на: комментарий от anonymous

Эти штучки *ТОЛЬКО* для восстановления работоспособности кластера после отказа одной ноды.

к балансировке масштабируемости и прочему они имеют косвенное отношение а точнее ограничиваю максимальное количество серверов в пуле.

cvv ★★★★★
()
Ответ на: комментарий от anonymous

ну как сказать вещь неплохая пока номинальная нагрузка находится в пределах 50000 одновременных соединений далее могут быть проблемы с масштабируемостью.

хотя в комбинации с clusterip реально отмасштабировать на *ЛЮБОЕ* реальное число одновременных соединений

cvv ★★★★★
()
Ответ на: комментарий от cvv

> хотя в комбинации с clusterip реально отмасштабировать на *ЛЮБОЕ* реальное число одновременных соединений

А зачем clusterip ?

PEN+UCARP вполне себе решение и балансировка и отказоустойчивость, плюс поднимается элементарно.

Darkman ★★★
()
Ответ на: комментарий от Darkman

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

cvv ★★★★★
()
Ответ на: комментарий от cvv

> Для тех задач которые мне приходилось решать оно не годилось.

А сем негодилось ? (Действительно интересно)

> Я отталкиваюсь от того с чем имел дело хотябы теоретически

У меня очень нагруженный сайт с кучей JS прямо сейчас так и работает. Потому и рекомендую.

Darkman ★★★
()
Ответ на: комментарий от Darkman

>> Для тех задач которые мне приходилось решать оно не годилось.

>А сем негодилось ? (Действительно интересно)

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

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

Например я самбу балансировал на кластер а не только апачи

>У меня очень нагруженный сайт с кучей JS прямо сейчас так и работает. Потому и рекомендую.

вопрос не в JS и нагрузке на процы а в количестве ОДНОВРЕМЕННЫХ соединений. Скажем твой сайт в состоянии выдержать 150000 одновременных соединений? я думаю навряд, в часности потому что такую нагрузку довольно проблемно создать

cvv ★★★★★
()
Ответ на: комментарий от cvv

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

А где там единичная точка ? На каждую машину UCAP+PEN и жить оно будет пока хоть один сервак работает.

> в количестве ОДНОВРЕМЕННЫХ соединений. Скажем твой сайт в состоянии выдержать 150000 одновременных соединений? я думаю навряд, в часности потому что такую нагрузку довольно проблемно создать

ХЗ. 10000 выдерживал - именно такое количество проверялось перед постановкой в продакшн.

Darkman ★★★
()
Ответ на: комментарий от Darkman

>ХЗ. 10000 выдерживал - именно такое количество проверялось перед постановкой в продакшн.

выдержать 10 000 - не проблема

а скажем 100000 через балансировщик третьего уровня эт серьёзней задача. например для такого количества соединений потребуется их не только балансировать между бекендами но и между исходящими IP-адресами балансировщка (ибо только с одного IP можно сосздать только 65536 соединений). А такая ф-я не входит практически ни в какой стандартный балансировщик третьего уровня...

а ClusterIp - балансировщик второго уровня и следственно для него этот вопрос не подымается

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.