Назад | Перейти на главную страницу

Подходит ли многоцелевой узел для масштабирования?

У меня есть веб-приложение с разными уровнями:

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

Следует ли мне разделить роли (db и web) перед дальнейшим масштабированием?

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

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

@gotts: Канонический способ масштабирования небольших веб-сайтов выглядит примерно так:

Первый: Разделение на 2 сервера, один из которых запускает ваш HTTP-сервер и код веб-приложения (webapp), а другой - для вашей базы данных. Сервер базы данных должен быть оптимизирован для рабочих нагрузок базы данных, то есть большого количества оперативной памяти, быстрого ввода-вывода на диск, быстрого процессора.

Затем: Выгрузите статический файл, обслуживающий с сервера веб-приложений, либо на другой сервер, либо в сеть доставки контента. Рассмотрите возможность отключения HTTP KeepAlive на сервере веб-приложений.

Затем: Перейдите к установке как минимум с 4 серверами:

  • Один балансировщик нагрузки HTTP на передней панели, использующий согласованное хеширование на основе исходного IP-адреса.
  • За балансировщиком нагрузки HTTP находятся 2 сервера веб-приложений.
  • За веб-приложениями стоит 1 сервер базы данных.

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

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

Теперь все работает на одном хосте

Глупая идея или? Я имею в виду - что, черт возьми, делает в списке БАЛАНСИР НАГРУЗКИ, если для начала нужен только один хост? Это единственный пункт, который для меня не имеет абсолютно никакого смысла.

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

  • Затем перепрограммируйте так, чтобы несколько веб-серверов могли легко сосуществовать.

  • Наконец, добавьте балансировщик нагрузки, если необходимо, или используйте циклический перебор DNS.