Я разрабатываю приложение Ruby On Rails и хотел бы развернуть его в рабочей среде. У меня есть несколько одинаково настроенных веб-серверов Ubuntu, которые я могу использовать, но я не знаю, как масштабировать данные приложения RoR и db на нескольких хостах.Масштабирование сайта Ruby on Rails
Я бы хотел разместить на каждом хосте как веб-сервер, так и сервер db.
На стороне веб-сервера/рубинового промежуточного программного обеспечения я бы хотел, чтобы сеансы контролировались главным веб-сервером, который выполняет балансировку нагрузки на уровнях промежуточного программного обеспечения веб-сервера/рубина. Он должен отменить новые сеансы для бесплатных хостов.
Мне нужно иметь балансировку нагрузки на месте на стороне сервера/рубинового промежуточного программного обеспечения. Сеансы Web/middleware должны быть атомарными (я не заинтересован в их повторном копировании по нескольким хостам)
Я хотел бы иметь транзакционные данные, которые не были сохранены в БД, записанные в промежуточном журнале повтора - для повторного запуска в случае отказа восстановления.
В слое DB:
Я хотел бы иметь данные DB на любой хост, чтобы быть воспроизведен на 2 других хостов. (каждый набор БД имеет 3 узла БД)
Я не хочу, чтобы данные БД были реплицированы на всех хостах, потому что это занимает слишком много времени.
Я бы поставил алгоритм на место, который будет направлять запросы «создавать» в правый БД. На ум приходит балансировка нагрузки.
Главный контроллер БД должен знать, какой 3-БД установлен для запросов «обновление/чтение/удаление».
Мой тестовый веб-сервер - это webrick, а бэкэнд-БД - Postgresql (хотя это действительно не имеет значения с RoR).
Я считаю, что мне нужно связать sessionId с каждой транзакцией, а также сохранить журнал повтора в случае, если мне нужно перезагрузить этот сеанс после сбоя.
Какие еще проблемы с дизайном я могу столкнуться? Кроме того, какой веб-сервер и сервер БД я должен использовать для работы с ворчанием? Каковы хорошие варианты для мастер-БД и мастер-серверов?
Я понимаю, что это сложная проблема, которая охватывает множество областей знаний. Я хотел бы знать, возможно ли то, что я прошу.
Если вы считаете, что это слишком много, сдайте и используйте Heroku. – Skilldrick
Какова ваша нынешняя архитектура производства? Это довольно сложные требования - уверены ли вы, что они необходимы? Можете ли вы туда с течением времени использовать итеративный подход? – nfm