Масштабирование сайта Ruby on Rails

Я занимаюсь разработкой приложения Ruby On Rails и хотел бы развернуть его в производственной среде. У меня есть несколько одинаково настроенных веб-серверов Ubuntu, которые я могу использовать, но я не знаю, как масштабировать приложение RoR и данные БД на нескольких хостах.

Я хотел бы разместить и веб-сервер, и сервер БД на каждом хосте.

Со стороны веб-сервера / промежуточного программного обеспечения ruby, я бы хотел, чтобы сеансы управлялись главным веб-сервером, который выполняет балансировку нагрузки. на веб-сервере / слоях промежуточного программного обеспечения ruby. Он должен передавать новые сеансы на свободные хосты.

Мне нужно иметь балансировку нагрузки на стороне веб-сервера / промежуточного ПО ruby. Сеансы Web / middleware должны быть атомарными (я я не заинтересован в их репликации на несколько хостов)

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

На уровне БД:

Я хотел бы, чтобы данные БД на любом хосте были реплицированы на 2 других хоста. (каждый набор БД имеет 3 хоста БД).

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

Я хотел бы внедрить алгоритм, который будет направлять запросы типа create в нужную БД. На ум приходит балансировка нагрузки.

Главный контроллер БД должен знать, какой набор 3-БД следует использовать для запросов «обновление / чтение / удаление».

Мой тестовый веб-сервер - webrick, а внутренняя БД - Postgresql (хотя это действительно не имеет значения с RoR).

Я считаю, что мне нужно привязать sessionId к каждой транзакции, а также вести журнал повторов на случай, если мне потребуется перезагрузить этот сеанс после сбоя.

С какими еще проблемами проектирования я могу столкнуться? Кроме того, какой веб-сервер и сервер БД я должен использовать для выполнения работы? Каков хороший выбор для главной БД и главных веб-серверов?

Я понимаю, что это сложная проблема, которая охватывает несколько областей знаний. Я хотел бы знать, возможно ли то, что я спрашиваю.

1
задан Amro 2 July 2012 в 12:05
поделиться

1 ответ

На моей последней работе у нас было довольно удачи со следующей инфраструктурой:

1 балансировщик нагрузки -nginx

3 сервера приложений -thin

2 сервера mysql с избыточной записью

2 ящика резервных копий

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

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

2
ответ дан 2 September 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: