Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

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

Привет всем, наверняка кто-нибудь настраивал нагрузку на cloudflare и видел, что они предоставляют до 6 origins (физических серверов) для business-плана на один аккаунт и до 4 — для free.

То есть если у меня есть доменное имя site.com, то к нему и его поддоменам я в сумме могу прикрутить максимум 6 origins.

Есть ещё у них enterprise-план: надо созваниваться с cloudflare, общаться с ними, предоставлять разные бумажки, чтобы тебе увеличили количество origins (не уточняли пока на сколько). А, ну и стоить это будет от $2k =)

Кто-нибудь сталкивался? Как решать? Создавать несколько cloudflare-аккаунтов и вешать сервера на разные домены? В моём случае это не сайт, поэтому вид домена не важен, юзеры его не используют. Только общение с серверами по wss, так что вроде подошло бы.
Но хотелось бы решить «правильно», и подвязать больше 6 серверов к одному и тому же домену. $2к за такую услугу это нормально или может мы друг друга с cloudflare не так поняли?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Делайте балансировку на своей стороне а им отдавайте эндпоинты

да, у меня примерно так и работает, спасибо за отзыв.
На одном физическом сервере ноды балансируют между собой по нагрузке. Но нужно больше 6 серверов на один домен. А cpu и ram на серверах не бесконечны =)

Не тем балансирует
Вам нужна циска с bgp и smart balancer
Две циски в разных регионах точнее

Поставь на каком-то из этих серверов nginx или haproxy и балансируй все входящие вебсокеты по всем своим серверам. А в Clounflare прописывается только один хост, на котором и идёт балансировка. А о твоей пачке конечных получателей он и знать не должен.

Для high availability лучше nginx/haproxy поднять не на одном, а хотя бы на парочке серверов, что во free план укладывается.

да, nginx (поддержка wss в нём настроена) как раз и запущен на всех серверах, и каждый nginx перенаправляет запрос на ноды своего сервера (обычные процессы, слушающие свои порты) в случайном порядке.

А почему не сделать 2-4 nginx’а, каждый из которых балансит на все ноды, на всех серверах, не только своего?
Или 3 nginx’а, каждый балансит по 2 сервера.

Принципиальной разницы же нет сколько там nginx’ов, он ну очень редко когда может стать узким местом, по крайне мере на задачах проксирования, это ж не тонны lua скриптов в него пихать.

имеете ввиду, в /etc/nginx/conf.d/backends.conf вместо

upstream wss_backend  {
    ip_hash;
    server 127.0.0.1:5909;
    server 127.0.0.1:5922;
}

прописать, условно говоря,

upstream wss_backend  {
    ip_hash;
    server 127.0.0.1:5909;
    server 127.0.0.1:5922;
    server 111.111.111.111:5909;
    server 222.222.222.222:5922;
}

а что, так можно было?)
Я проверю конечно, но хотелось бы уточнить.

Да, можно, конечно, 100 раз так делал )
В этом то и смысл, редко когда балансировать нужно в рамках одного сервера.

хорошо, а что касаемо свободных портов на таком «прокси-сервере»? Были случаи, что они у вас заканчивались? websockets работает поверх tcp, значит при соединении должен выделяться свободный порт. Или в данном случае порт будет выделен только на конечном сервере, а на прокси для переброса — не будет?

Сразу скажу, что я не являюсь профессиональным админом/devops’ом, по этому следующий совет может быть не полным.
Кручу такие настройки:
— worker_connections — 10000, в случае websockets при нескольких воркерах;
— worker_rlimit_nofile — в 2 раза больше worker_connections;
— net.ipv4.ip_local_port_range 1024 65000

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

Заодно посмотреть системные настройки во всяких бенчмарках с сотнями тысяч ws
blog.jayway.com/...​ons-on-aws-using-node-js

советы оказались все в тему, спасибо большое. Буду дальше углубляться в тему.

Підписатись на коментарі