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

Как мне развернуть приложение Rails на VPS для быстрой масштабируемости?

Я создал веб-приложение, используя NGINX, Rails и MySQL. В настоящее время все они работают на одном VPS (Slicehost). Я следовал лучшим практикам и поддерживал очень минимальную «архитектуру без общего доступа» с мыслью о том, что если мне понадобится масштабирование, я просто увеличу еще несколько частей, чтобы удовлетворить спрос.

Исходя из того, что я пытаюсь снизить затраты на как можно более низком уровне, какова была бы хорошая стратегия для привлечения дополнительных частей по мере необходимости? Мои первоначальные мысли заключаются в том, что я должен запустить 3 VPS. Два для баз данных в конфигурации ведущий / ведомый и один для NGINX / Rails. По мере увеличения нагрузки увеличивайте количество других серверов NGINX / Rails по мере необходимости, при этом исходный сервер выполняет балансировку нагрузки по отношению к другим серверам.

Вы думаете?

Об этом рассказывалось во множестве других сообщений. В основном:

1) Используйте такой инструмент, как chef или puppet, для управления системной конфигурацией.

2) Используйте инструмент, такой как ткань или что-то другое, для развертывания кода.

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

3) Вы можете выделить сервер (или серверы) для простого статического обслуживания (изображений), если вы не используете CDN.

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

Чтобы все было дешево, вы можете протестировать много этого на чем-то вроде Amazon по гораздо более низкой цене, чем VPS, например slicehost (оплата часов / дней для увеличения масштабирования сегментов БД или серверов приложений по сравнению с оплатой за месяц VPS, который вы, возможно, не используете много).

Вы даже можете запускать стресс-тесты изнутри EC2, чтобы минимизировать затраты на трафик.

В дополнение к комментариям ironchef, я бы хотел убедиться, что ваша инфраструктура балансировки нагрузки с высокой доступностью работает хорошо. перед Вы нуждаетесь в этом; это означает либо использование предоставленной Slicehost балансировки нагрузки с самого начала (если у них есть такой продукт), либо наличие двух «внешних» частей с HA-балансировщиком нагрузки, совместно используемой с самого начала. Вы делаете не хотите поспешно использовать балансировщик нагрузки, когда вас забивают трафиком, тем более что похоже, что вы еще не особо разбираетесь в подобных вещах.