Балансировка назгузки

S1
На сайте с 30.09.2018
Offline
6
1003

Добрый день.

Ребята, нужна помощь.

Имеется высоконагруженный проект, отдается большая статика. Есть два сервера, с которых нужно отдавать контент по-очереди.

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

Можно ли настроить haproxy так, чтобы он не пропускал трафик через себя?

Может есть какие-то другие способы балансировки или облачные решения?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

Если статика то вообще все просто же, без лоадбалансеров. Просто ставите несколько серверов и в DNS прописываете для одного домена несколько ip адресов. Пользователи сами размажутся по этим серверам (round robin dns)

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Алеандр
На сайте с 08.12.2010
Offline
183
#2
Оптимизайка:
Если статика то вообще все просто же, без лоадбалансеров. Просто ставите несколько серверов и в DNS прописываете для одного домена несколько ip адресов. Пользователи сами размажутся по этим серверам (round robin dns)

Отмечу, что тут есть нюанс.

Round Robin предполагает, что IP адреса будут выдаваться по очереди (сначала первый, потом — второй и т.п.). Однако, это нигде не стандартизировано и адреса могут выдаваться с перекосом.

Кроме того, существует кэширование, а значит N пользователей, получив адрес, его закэшируют, и к нему могут добавиться новые запросы. В итоге пойдет не балансирование, а приоритет какого-то из серверов.

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

Himiko
На сайте с 28.08.2008
Offline
560
#3
Кроме того, существует кэширование, а значит N пользователей, получив адрес, его закэшируют, и к нему могут добавиться новые запросы. В итоге пойдет не балансирование, а приоритет какого-то из серверов.

Этого практически не будет при низком значении TTL в DNS.

Проверяли, несколько минут и 100% трафика идёт на другой сервер при смене ip.

---------- Добавлено 25.02.2019 в 02:13 ----------

sergey199226:
Добрый день.
Ребята, нужна помощь.
Имеется высоконагруженный проект, отдается большая статика. Есть два сервера, с которых нужно отдавать контент по-очереди.
На третий сервер поставил haproxy, балансирует отлично, но есть проблема - сервер с haproxy не справляется с требуемым трафиком, отдача контента происходит не стабильно при высокой нагрузке.
Можно ли настроить haproxy так, чтобы он не пропускал трафик через себя?
Может есть какие-то другие способы балансировки или облачные решения?

Можно просто использовать DNS-сервисы облачные. Типа Amazon Route53. Будет выдавать разные ip разным посетителям.

Там можно и round-robin и health check (при падении сервера трафик с него можно убрать).

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
prostohosting.com
На сайте с 26.06.2009
Offline
101
#4

Попробуйте поставте nginx проксирование.

У nginx можно задавать процент запросов, если по мощности сервера бекенда разные, либо каждый 1,2,3 итд запрос на определенный сервер.

http://nginx.org/en/docs/http/load_balancing.html

аренда сервера https://prostohosting.com/services/dedicated.html Core i3 / i7 от 49$, VPS серверы Xen / OpenVZ https://prostohosting.com/services/vps.html от $9/мес.
AU
На сайте с 03.09.2009
Offline
88
#5

Может скажу не в тему, но если проект высоко-нагруженный, может посмотреть в сторону CDN? Именно для отдачи статики в виде картинок, JS и прочего CDN и полезен.

Unix в вопросах и ответах https://unixhow.com (https://unixhow.com)
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#6
Алеандр:
Отмечу, что тут есть нюанс.

Round Robin предполагает, что IP адреса будут выдаваться по очереди (сначала первый, потом — второй и т.п.). Однако, это нигде не стандартизировано и адреса могут выдаваться с перекосом.

Кроме того, существует кэширование, а значит N пользователей, получив адрес, его закэшируют, и к нему могут добавиться новые запросы. В итоге пойдет не балансирование, а приоритет какого-то из серверов.

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

Я несколько раз использовал в больших нагрузках и замерял, если нужно спасаться не от одного бешенного клиента, а потому что их 100500 одинаково обращающихся, то количество обращений и нагрузка вполне выравнивается в районе 50/50 и даже на 3 серверах вполне по 33% делится без какой либо магии.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
Himiko
На сайте с 28.08.2008
Offline
560
#7
foxi:
Я несколько раз использовал в больших нагрузках и замерял, если нужно спасаться не от одного бешенного клиента, а потому что их 100500 одинаково обращающихся, то количество обращений и нагрузка вполне выравнивается в районе 50/50 и даже на 3 серверах вполне по 33% делится без какой либо магии.

Обычная математика) Да, так и будет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий