Pull to refresh

Практический JS: балансировка на стороне клиента

Client optimization *
Translation
Примечание: ниже находится перевод статьи «Client Side Load Balancing for Web 2.0 Applications», в которой затрагиваются вопросы балансировки нагрузки между несколькими серверами и рассматривается решение, обеспечивающее балансировку такой нагрузки прямо на компьютере клиента.

Сервер обрабатывает HTTP (HyperText Transfer Protocol) запросы со стороны браузеров. Если вы введете в адресной строке URL, например, www.digital-web.com, то ваш компьютер отправит поисковый запрос для определения, какие именно сервера будут обрабатывать ваш запрос и пересылать данные. Техника обработки таких запросов для кластера веб-серверов называется балансировкой нагрузки.

Балансировка нагрузки для веб-приложений



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

  • Распределять нагрузку внутри кластера рабочих серверов.
  • Корректно обрабатывать отказ одного из рабочих серверов.
  • Весь кластер должен существовать для конечного пользователя как одна-единственная машина.


читать дальше на webo.in →
Total votes 25: ↑20 and ↓5 +15
Views 1.5K
Comments 12

Новые возможности Амазоновских облаков: Elastic Load Balancing, Auto Scaling и CloudWatch

Hosting
На прошлой неделе Амазон выпустил несколько чрезвычайно интересных сервисов, расширяющих функциональность Amazon Elastic Clouds (EC2): Elastic Load Balancing, Auto Scaling и CloudWatch. Если бы они еще были бы бесплатными, то было бы совсем клево! Но обо все всем по порядку.

Elastic Load Balancing


Представьте, что у вас запущено несколько инстансов в амазоновском облаке, выполняющих одну и туже задачу. Elastic Load Balancing позволяет автоматически распределять входящие запросы по заданным инстансам. Причем он может выявлять упавшие инстансы и автоматически перенаправлять трафик на рабочие, пока неработающие инстансы опять не заработают, что конечно сильно повышает надежность всей системы в целом. Балансировщик может работать как внутри одной зоны (имеется ввиду физическое расположение серверов) так и между инстансами находящимися в разных зонах, что еще больше повышает надежность вашей системы в целом.
Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Views 7.1K
Comments 16

Hivext Cloud Platform — Архитектура низкого уровня

Cloud computing *

В этой статье будет описано архитектурное решение низкого уровня облачной платформы Hivext, а именно уровня дата центров и взаимодействия между собой серверов разного типа.
Напомним, что проект Hivext — предназначен для более эффективного использования ресурсов (временных и финансовых) при разработке “богатых” интернет приложений (Rich Internet Application) и предоставляет широкий набор готовых взаимосвязанных сервисов.
Благодаря компании IT-GRAD мы получили возможность бесплатного разворачивания дополнительной копии платформы в Питерском дата центре (ДЦ). Нам выделили виртуальный хостинг на базе VMware vSphere 4. Работать с таким хостингом можно и через веб интерфейс и через десктоп клиент, все довольно удобно.

На данный момент Hivext развернута в 3-х территориально разнесенных ДЦ: Киев (Украина), Житомир (Украина) и Санкт-Петербург (Россия). Конфигурация платформы внутри каждого ДЦ построена по определенной структуре.

Предлагаю, так сказать, заглянуть под капот нашей платформы.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Views 1.9K
Comments 16

Up the pool

Erlang/OTP *
Translation
Я программист. Поэтому, меня всегда потрясают вещи, которые «просто работают». Это чувство у меня было и когда я знакомился с Erlang Pool. Настройка требует некоторого внимания, но после, механизм оказывается «оскорбительно» простым.
Читать дальше →
Total votes 51: ↑45 and ↓6 +39
Views 1.8K
Comments 13

Концепт простого Load-balancer'a / Failover'a IP сервисов

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

Возможно очередной велосипед, но раньше не попадалось. Если идея окажтся жизнеспособной, может кто и реализует — тогда не пропадёт впустую, самому, к сожалению, некогда, хоть и очень хочется попробовать. Если это уже где-то реализовано — прошу строго не судить: сам на вскидку не нашёл, а на долгие поиски сейчас ну совсем времени нету.

Итак, в кратце:
Читать дальше →
Total votes 9: ↑6 and ↓3 +3
Views 7.7K
Comments 3

Балансировщик нагрузки для Amazon EC2 c автомасштабированием

System administration *
Sandbox
Многие знают, что Amazon предоставляет возможность автоматически наращивать мощность вашего пула (увеличивать количество виртуальных серверов) в зависимости от нагрузки. Однако я не сумел найти в русскоязычном сегменте сети толкового описания практической реализации такой схемы. Рискну представить на суд общественности итог моих штудий на данную тему.

Итак, вводные данные. Наш сервер, судя по кривой посещаемости, в скором времени начнёт испытывать весьма суровые нагрузки, особенно в пиковые моменты. Для эффективной обработки трафика, а также во избежание отказов в обслуживании было решено использовать механизмы, предоставляемые Amazon, позволяющие в реальном времени запускать необходимое количество серверов. При этом, когда нагрузка спадает, получившийся пул должен «сбавлять обороты», автоматически уменьшаясь в размерах, и тем самым уменьшать финансовые затраты на проект.

Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Views 9.4K
Comments 9

Автомасштабирование в Amazon Web Services: EC2 + CloudWatch

EPAM corporate blog Amazon Web Services *
Добрый день!

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

В качестве инициатора маштабирования будет выступать Cloud Watch. Метрикой будет наша кастомная метрика Load Average.

Итак, начнём-с. Первое, как тру линуксоид, я советую и рекомендую использовать в настройке автоскейлинга утилиты командной строки (Command Line Tools — CLT) по следующим причинам:
  • из CLT можно сделать всё;
  • удобнее копипастить в консоль, чем кликать мышкой.

Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Views 14K
Comments 17

Балансировщики нагрузки в облаке Clodo

Hosting
Балансировщики нагрузки — неотъемлемая часть отказоустойчивой инфраструктуры для современных веб-проектов — теперь доступны клиентам Clodo. На данный момент функциональность находится в публичном тестировании и предоставляется бесплатно всем клиентам.

Читать дальше →
Total votes 32: ↑10 and ↓22 -12
Views 1.7K
Comments 12

Реактивный манифест

System Analysis and Design *Concurrent computing *
Translation
В последние годы требования к приложениям значительно изменились. Десятки серверов, время отклика в несколько секунд, оффлайновое обслуживание, которое могло длиться часами, гигабайты данных — такими были большие приложения буквально несколько лет назад. Сегодня же приложения работают абсолютно на всём, начиная с простых мобильников и заканчивая кластерами из тысячи процессоров. Пользователи ожидают миллисекундного времени отклика и стопроцентного аптайма, в то время как данные выросли до петабайтов.

Первоначально эту нишу занимали крупные инновационные интернет-компании типа Google или Twitter, однако такие требования к приложениям начали всплывать во многих областях индустрии. Финансовые и телекоммуникационные компании первыми начали внедрять новые практики, чтобы удовлетворить новым требованиям, а теперь подтягиваются и остальные.

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

Однако прогресс не стоит на месте. Архитектура приложений эволюционировала в соответствии с изменившимися требованиями. Приложения, разработанные на основе этой архитектуры, мы называем Реактивными Приложениями. Такая архитектура позволяет программистам создавать событийно-ориентированные, масштабируемые, отказоустойчивые и отзывчивые приложения — приложения, работающие в реальном времени и обеспечивающие хорошее время реакции, основанные на масштабируемом и отказоустойчивом стеке и которые легко развернуть на многоядерных и облачных архитектурах. Эти особенности критически важны для реактивности.

Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Views 50K
Comments 15

Горизонтальное масштабирование PHP приложений. Часть 1

High performance *Website development *PHP *
Translation

Итак вы сделали сайт. Всегда интересно и волнительно наблюдать как счетчик посещений медленно, но верно ползет вверх, с каждым днем показывая все лучшие результаты. Но однажды, когда вы этого не ждете, кто-то запостит ссылку на ваш ресурс на каком-нибудь Reddit или Hacker News (или на Хабре — прим. пер.), и ваш сервер ляжет.

Вместо того, что бы получить новых постоянных пользователей, вы останетесь с пустой страницей. В этот момент, ничего не поможет вам восстановить работоспособность сервера, и трафик будет утерян навсегда. Как же избежать таких проблем? В этой статье мы поговорим об оптимизации и масштабировании.
Читать дальше →
Total votes 53: ↑31 and ↓22 +9
Views 31K
Comments 57

Агрегация каналов и балансировка трафика по IP для СХД

System administration *IT Infrastructure *Network technologies *Data storage *Data storages *
Для небольших компаний нередко применение всего двух-четырех серверов с виртуализацией, два Ethernet свитча порой даже с возможностью стекирования и Multi-chassis EtherChannel плюс СХД младшей серии — это вполне стандартная конфигурация инфраструктуры среднего бизнеса.
Таким предприятиям очень важно максимально задействовать все доступные технологии, чтобы максимально утилизировать своё оборудование и в этой статье пойдёт речь как этого добиться.

В большинстве современных серверов на борту как правило присутствует минимум два 1Gb интерфейса под данные и один 100Mb для менеджмента.

На СХД младшей серии NetApp FAS2240/FAS2220 на борту каждого контроллера помимо прочего присутствует 4х 1Gb порта.
Т.е. вполне логично использовать схему, где два свича в стеке используют Multi-chassis EtherChannel агрегируя линки идущие от каждого контроллера в каждый свитч для получения как отказоустойчивости так и утилизации пропускной способности всех этих линков. Такая-себе архитектура по образу и подобию FlexPod Express, но без модно-дорогой фичи vPC как у свитчей компании Cisco серии Nexus, в таком случае вместо интерлинков просто будет использован стек свичей. Да и вообще сервера и свитчи в такой схеме могут быть любого производителя. А если совсем всё туго с бюджетом, то можно использовать прямое включение в сервера, так если у сервера 2 порта на борту, можно будет подключить 4-ре сервера, а когда нужно будет добавить 5-й сервер, тут уж прийдётся покупать свитчи.


Схема подключения FlexPod Express.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 35K
Comments 44

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

Microsoft Azure *
Translation
Microsoft Azure предлагает сервис балансировки нагрузки для виртуальных машин (IaaS) и облачных служб (PaaS), запущенных в облаке Microsoft Azure. Помимо прочих достоинств, балансировка нагрузки позволяет масштабировать ваши приложения и дает возможность мягче реагировать при возникновении ошибки или отказа.

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

Диаграмма на рисунке ниже показывает пример приложения, расположенного в Microsoft Azure, которая использует балансировщик нагрузки для адресации входящего трафика (по адресу/порту 1.2.3.4:80) на три виртуальных машины, слушающих 80й порт (кликабельно).


Далее перечислены основные возможности балансировщика нагрузки в Microsoft Azure
Читать дальше →
Total votes 28: ↑20 and ↓8 +12
Views 6.9K
Comments 1

Mikrotik. Failover. Load Balancing

Network technologies *
Sandbox
Когда у меня встала необходимость разобраться, как сделать failover или load balancing, имея два и более каналов в мир, я нашел множество статей и инструкций, в которых описывались рабочие конфигурации. Но почти нигде не нашел разъяснения, как все работает, и описания отличий разных вариантов. Хочу исправить эту несправедливость и собрать простейшие варианты построения failover и load balancing конфигураций в одной статье.

Итак, у нас есть роутер, который соединяет нашу локальную сеть и два канала в интернет (основной ISP1 и резервный ISP2).

Давайте рассмотрим что же мы можем сделать:

Сразу предупрежу: несмотря на то, что в этой статье буду все описывать для mikrotik, не буду касаться темы скриптов
Читать дальше →
Total votes 30: ↑28 and ↓2 +26
Views 263K
Comments 45

Балансировка нагрузки: основные алгоритмы и методы

Selectel corporate blog
балансировка нагрузки

Вопрос о планировании нагрузки следует решать ещё на ранней стадии развития любого веб-проекта. «Падение» сервера (а оно всегда происходит неожиданно, в самый неподходящий момент) чревато весьма серьёзными последствиями — как моральными, так и материальными. Первоначально проблемы недостаточной производительности сервера в связи ростом нагрузок можно решать путем наращивания мощности сервера, или же оптимизацией используемых алгоритмов, программных кодов и так далее. Но рано или поздно наступает момент, когда и эти меры оказываются недостаточными.

Приходится прибегать к кластеризации: несколько серверов объединяются в кластер; нагрузка между ними распределяется при помощи комплекса специальных методов, называемых балансировкой. Помимо решения проблемы высоких нагрузок кластеризация помогает также обеспечить резервирование серверов друг на друга.
Эффективность кластеризации напрямую зависит от того, как распределяется (балансируется) нагрузка между элементами кластера.

Балансировка нагрузки может осуществляться при помощи как аппаратных, так и программных инструментов. Об основных методах и алгоритмах и балансировки мы бы хотели рассказать в этой статье.
Читать дальше →
Total votes 36: ↑31 and ↓5 +26
Views 136K
Comments 15

Запускаем BIGIP Trial Edition под Oracle VirtualBox

Oracle *
Sandbox
Пару лет назад по работе столкнулся с чудом инженерной мысли — сетевым балансировщиком. Сам класс LB для меня тогда был незнаком поэтому я с рвением приступил к изучению. В то время я отвечал за веб-сервера, так что работать с балансировщиком приходилось со стороны клиента, а не администратора, но любопытство все же взяло свое.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 6.2K
Comments 2

Отказоустойчивый кластер Windows Server в Microsoft Azure. Сеть

ICL Services corporate blog Microsoft Azure *
Translation
Предисловие. Эта публикация — продолжение темы создания отказоустойчивого кластера Windows Server в облаке Microsoft Azure. На этот раз разговор пойдёт про сеть.



Привет, фанаты кластеров. В своей предыдущей статье я рассказал о том, как обойти ограничения среды Microsoft Azure IaaS при подготовке хранилища данных для отказоустойчивого кластера Microsoft Windows. Давайте теперь поговорим о другой важной части создания кластера — сети.

Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 6.6K
Comments 0

Новый L4 Load Balancer с нативной реализацией SRV record service discovery и Docker API service Discovery

Open source *
Sandbox

Как все начиналось


В ходе работы с микросервисами мы неоднократно сталкивались с проблемами сервис дискавери при автоскелинге, схлопывании лишних нод.


Были перепробованы почти все решения существовавшие или существующие на данный момент, но как водится — ничего не ложилось идеально на наши динамичные окружения (десятки остановок/запусков однотипных контейнеров в час). Наиболее близкое решение было NGINX+Consul+Consul templates, но оно было некрасивым, требовало перезапуска, не давало возможности использовать внешние хелсчеки иначе как через Consul.


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

Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Views 8.2K
Comments 19

Gobetween Exec discovery+ Elasticsearch. L4 балансировка с Data Node Discovery

Open source *
Tutorial

Зачем все это нужно


Все кто использовал Elasticsearch каластер для своих нужд (особенно для логирования и как основную базу данных) на больших нагрузках сталкивался с проблемами консистентности и масштабируемости. Когда требуется распараллелить нагрузку на Elasticsearch обычно применялись статические решения то типу NGINX+Elasticsearch. Это позволяет распараллелить нагрузку, но выглядит не слишком гибко. Особенно если учесть что ноды могут сами выпадать из кластера и простой хелсчек покажет что все отлично, а на самом деле нода перегружена, исключена из кластера. В любом случае хотелось бы иметь данные о состоянии кластера из первых рук, а не довольствоваться простыми проверками.
Итак, приступим к построению балансировки .


Как мы будем это делать


В данном случае мы будем использовать CAT node API, которое является частъю мощнейшего CAT API, который является инструментом поиска заголовков по Elasticsearch клстреру.
Мы будем использовать только Gobetween и встроенные механизмы Elasticsearch для балансировки записи /чтения СRUD (DATA) нод при произвольном количестве/статусе нод в кластере.

Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 5.3K
Comments 0

Docker Swarm+Consul+Gobetween в виде движка для гео распределенного кластера

Open source *Development for Linux *
Tutorial

Преамбула


Некоторе время назад перед нами стала задача спроектировать и развернуть систему для потокового видео. Суть была в массовом запуске/остановке инстанций, на которых происходит обратная сборка потокового видео и стриминг на множество media cdn провайдеров (youtube, livestream, ustream итд ) а также на собственные rtmp и ts точки назначения. Каждая инстанция требовала настройки перед запуском т.к. содержала специфическую для каждого клиента информацию. Также было понятно, что система должна работать в большом количестве регионов (как минимум во всех точках, где присутствует Амазон, а как максимум — в любом месте где можно арендовать сервер). Также основное требование — запуск инстанции в течении 1-2 секунд максимум, чтобы это было прозрачно для пользователя.


Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 16K
Comments 12
1