CloudFlare и балансировка нагрузки
Привет всем, наверняка кто-нибудь настраивал нагрузку на cloudflare и видел, что они предоставляют до 6 origins (физических серверов) для business-плана на один аккаунт и до 4 — для free.
То есть если у меня есть доменное имя site.com, то к нему и его поддоменам я в сумме могу прикрутить максимум 6 origins.
Есть ещё у них enterprise-план: надо созваниваться с cloudflare, общаться с ними, предоставлять разные бумажки, чтобы тебе увеличили количество origins (не уточняли пока на сколько). А, ну и стоить это будет от $2k =)
Кто-нибудь сталкивался? Как решать? Создавать несколько cloudflare-аккаунтов и вешать сервера на разные домены? В моём случае это не сайт, поэтому вид домена не важен, юзеры его не используют. Только общение с серверами по wss, так что вроде подошло бы.
Но хотелось бы решить «правильно», и подвязать больше 6 серверов к одному и тому же домену. $2к за такую услугу это нормально или может мы друг друга с cloudflare не так поняли?
11 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівДелайте балансировку на своей стороне а им отдавайте эндпоинты
да, у меня примерно так и работает, спасибо за отзыв.
На одном физическом сервере ноды балансируют между собой по нагрузке. Но нужно больше 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
советы оказались все в тему, спасибо большое. Буду дальше углубляться в тему.