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

Что мне следует знать при настройке кластера с балансировкой нагрузки для приложения LAMP?

Я должен сказать: «Как мне настроить cluser с балансировкой нагрузки». Я не системный администратор каких-либо заслуг .. apt-getted и yum установили мой путь к некоторым стекам в облаке, но ничего особенного.

Теперь у меня проблема с сайтом Drupal, который выходит за рамки возможностей своего оборудования. За брандмауэром находятся два сервера: сервер приложений, который нагружает более 90% в сверхпиковое время, и сервер db / solr, который редко превышает 10% (обычно 3-4) в те же времена. Это управляемое физическое оборудование. БД очень тяжело читается.

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

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

В настоящее время сервер приложений - это DELL PowerEdge 2950 MKIII с оперативной памятью 32 ГБ, 2,5 ГГц x 4 ГБ - то же самое, что и с половиной оперативной памяти. Оба имеют настройки raid 1 на 15000 об / мин.

Так что на самом деле это кажется выполнимым. Предварительно балансировщик нагрузки кажется, что это не должно быть вообще ничего, может быть, образ размером 1 ГБ?

Я где-то видел, что могут быть проблемы с файлами cookie, если пользователь переключает серверы в середине сеанса, может ли кто-нибудь поговорить об этом?

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

Спасибо

Похоже, вам нужно добавить еще один веб-сервер в свой микс. У вас много накладных расходов на БД, что приятно. Подобные вещи вполне выполнимы. Ключевые моменты у вас уже есть.

  • Несколько веб-серверов.
  • Данные обслуживаются через NFS с какого-либо NAS или, в худшем случае, с одного из самих веб-серверов и монтируются всеми веб-серверами.
  • Балансировщик нагрузки (mod_proxy - это хорошо, но nginx может быть лучше) настроен так, чтобы входящие сеансы были «привязаны» к одному конкретному веб-серверу.

Получение аварийного переключения сеанса выходит за рамки моего Drupal-ken, но, возможно, это выполнимо. И да, если один из ваших веб-серверов по какой-то причине перезапустится, этих пользователей придется восстановить. Для приложения, которое работает аналогично приведенному выше, когда нам нужно выполнить запланированную перезагрузку, мы настраиваем наш балансировщик нагрузки (аппаратный балансировщик нагрузки, F5 BigIP), чтобы не разрешать новые сеансы, и наблюдаем, пока все существующие сеансы не устареют перед перезагрузкой. веб-сервер.

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

Я не слишком хорошо знаком с Drupal, но если весь контент хранится в базе данных, то все, что вам нужно сделать, это настроить веб-сервер в поле БД и настроить циклические записи DNS для сайта, отдавая предпочтение только веб-серверу. коробка.

Беглый взгляд на инструкции по установке Drupal не указывает на наличие записываемых каталогов, так что, похоже, мое предположение верно.

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

Файлы cookie Afaik по умолчанию хранятся в БД, поэтому они автоматически распределяются между пользователями. Просто поделитесь своим корнем через NFS, и почти все должно работать нормально (некоторые модули загрузки могут сработать, если вы переключитесь в середине сеанса).

Возможно, мне не хватает сути вашего сообщения, но когда ваш сервер Drupal загружен больше, чем его БД, что-то еще не так.

  • Попробуйте добавить встроенную систему кеширования drupal
  • Установите кешер кода операции PHP (APC, eaccelerator, xcache)
  • Попробуйте один из множества модулей кеширования, если возможно, вытолкните полные страницы на диск

Я зарабатываю этим на жизнь; если вы не можете решить это: дайте мне знать.