Каков наилучший / правильный способ настройки среды с балансировкой нагрузки для веб-приложения? - PullRequest
2 голосов
/ 17 декабря 2008

Я разрабатываю веб-приложение, которое должно быть сбалансировано по четырем веб-серверам. Моя компания покупает оборудование для балансировки нагрузки (Cisco). Существует путаница в том, как сказать балансировщику нагрузки, что веб-сервер должен вращаться.

Команда поддержки ИТ-оборудования хочет, чтобы я создал одностраничное веб-приложение, которое будет расположено рядом с основным веб-приложением. Мне сказали, что это небольшое одностраничное приложение должно вызывать базу данных и делать INSERT, UPDATE и DELETE для таблицы. Затем приложение должно вернуть код состояния, который, в свою очередь, сможет считывать балансировщик нагрузки и определять, будет ли этот веб-сервер вращаться. Это приложение должно находиться на всех серверах с балансировкой нагрузки. Приложение с одной страницей будет затем каждые 5 секунд опрашиваться балансировщиком нагрузки.

Я думаю, что это звучит как абсолютный взлом. Это звучит как ненужная работа и накладные расходы на базу данных. Аппаратная команда пытается убедить меня, что это правильный путь. Я полностью не согласен! Мой аргумент в том, что балансировщик нагрузки не должен заботиться о соединении с базой данных. Мы только пытаемся распределить нагрузку по 4 веб-серверам. Следует отметить, что главное веб-приложение бесполезно без подключения к базе данных.

Есть ли у самого балансировщика нагрузки способ определить, должен ли сервер вращаться? Как правильно это сделать?

Ответы [ 4 ]

2 голосов
/ 17 декабря 2008

Чтение Масштабируемые интернет-архитектуры .

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

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

1 голос
/ 17 декабря 2008

Я считаю, что это взломать. Балансировщик нагрузки должен просто использовать простую HTML-страницу, чтобы вернуться к балансировщику нагрузки, как сказал JWMiller. мы используем этот подход во всех наших приложениях. Проверка соединений с базой данных, удаленных служб и т. Д. Является задачей проверки работоспособности приложения и должна быть отдельной функцией.

1 голос
/ 17 декабря 2008

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

1 голос
/ 17 декабря 2008

Я всегда размещаю настоящую простую HTML-страницу на веб-сервере. Если HTTP-статус из status.html возвращается 200, оставьте сервер в ротации, если нет, приостановите работу веб-сервера.

Что делать, если ваша БД сильно рушится? пока вы восстанавливаете, вы должны иметь возможность разместить сообщение о состоянии «извините, скоро вернусь». Вам также не нужно перенастраивать балансировщик нагрузки. Нет ли части вашего приложения, которая может работать без БД?

...