Ответ 1
Архитектура
Ты на правильном пути. Я лично предпочитаю Пассажира по тонкому/единорогу (долгое время запускать nginx для тонких backend) только для удобства, но предлагаемая вами установка довольно стандартная. Если вы используете Ruby 1.8.7, я бы рекомендовал, чтобы вы рассматривали REE + Passenger для экономии памяти фреймов.
Хостинг и балансировка нагрузки
Linode - это фантастика, и я использую их практически для всего, что могу, но вам нужно знать пределы RAM. В каждом Rails-процессе используется нетривиальное количество ОЗУ, и вы захотите избежать обмена машиной. Планируйте запуск достаточного количества экземпляров Rails на машину, чтобы распределение памяти составляло около 90% памяти на Linode. Вероятно, вам понадобится другой Linode, посвященный вашей базе данных, хотя вы можете начать с них как на одной машине; просто будьте готовы расколоть MySQL по мере роста. Вы можете настроить связь между Linodes в одном центре обработки данных на частных IP-адресах, которые не учитывают вашу квоту пропускной способности.
Ваша стратегия масштабирования должна быть как можно более горизонтальной, поэтому я бы порекомендовал просто получить второй Linode и добавить его в ваш haproxy-пул, когда вам нужно больше лошадиных сил. - Linode взимает с вас $20 за дополнительную RAM объемом 512 МБ, или вы можете просто получить цельный "линейный" (с процессором, оперативной памятью, жестким диском и полосой пропускания) за тот же самый $20. Кажется, это не проблема!). В случае Rails экземпляр - это экземпляр экземпляра, поэтому на самом деле не имеет значения, находится ли он на той же виртуальной машине или нет, если время для подключения к вашей машине базы данных или чего-то более или менее того же. Вы можете запускать 10 Linodes, каждый из которых запускает 10 Rails-процессов, без большой проблемы. Linode также предлагает отказоустойчивость IP, так что, если ваш основной Linode (с haproxy) опустится, он может автоматически сработать автоматически во вторичном Linode, который затем будет работать haproxy и готов действовать в том же качестве, что и первый.
Распределение
Честно говоря, это зависит от вас! Многие люди идут с дистрибутивами Ubuntu или Redhat (CentOS/Fedora) - мне нравится CentOS самостоятельно, но это действительно то, что вам больше всего нравится. Если у вас нет любимого дистрибутива, я бы порекомендовал попробовать Ubuntu/CentOS, поскольку они, как правило, очень дружелюбны к новичкам и имеют чрезвычайно надежную поддержку сообщества.
Вы, вероятно, захотите выбрать 32-разрядный дистрибутив, если у вас нет веской причины выбирать 64-разрядный дистрибутив; 64-разрядные исполняемые файлы требуют больше оперативной памяти, чем их 32-разрядные аналоги, и поскольку оперативная память, вероятно, будет вашим самым ценным ресурсом, имеет смысл сохранить ее там, где вы можете.