1

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

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

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

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

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

В слое DB:

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

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

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

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

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

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

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

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

+0

Если вы считаете, что это слишком много, сдайте и используйте Heroku. – Skilldrick

+1

Какова ваша нынешняя архитектура производства? Это довольно сложные требования - уверены ли вы, что они необходимы? Можете ли вы туда с течением времени использовать итеративный подход? – nfm

ответ

2

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

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

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

2 MySQL серверов с резервированием пишет

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

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

Если вам нужно больше этого, то герою, вероятно, будет лучше делать ставку на ROI. Понятно, что герою - лучшая ставка даже для небольших проблем масштабирования, у вас есть кошмар в sys admin в вышеуказанном плане.

+1

Мне любопытно относиться к вашей математике с тем, почему герою будет лучше на стороне ROI. Я чувствую, что каждый раз, когда мне нужно что-то простое героику, вы обвиняете вас, например. Мне нужно запустить рабочий процесс или поисковый сервер ... и т. Д. И т. Д. ... больше $$$ –

+0

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