антон веснин rails application servers

Post on 13-Dec-2014

713 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Развертывание среды Ruby on Rails для промышленного использования.

Методы, технологии, приемы.

Антон Веснин (locum.ru)

Что такое промышленное использование?

Промышленное использование Запуск в режиме разработки≠(production) (development)

Что такое промышленное использование?

Промышленное использование Запуск в режиме разработки≠(production) (development)

- Подробное логирование

- Отладочная информация

Что такое промышленное использование?

Промышленное использование Запуск в режиме разработки≠(production) (development)

- Подробное логирование

- Отладочная информация

- Стабильность

- Производительность

- Поддержка и развитие

Элементы системы

Сервер приложений

Код приложения

База данных

Дополнительные приложения (прокси, memcached и т.п.)

Автоматизация процесса размещения новой версии кода

Capistrano

- Сохранение копии предыдущей версии

- Загрузка новой версии кода

- Изменения в базе данных (по необходимости)

- Перезапуск сервера приложений

- Откат на предыдущую версию в случае сбоя

Автоматизация процесса размещения новой версии кода

Удобства:

- Система релизов- Легко создавать свои методы и задачи

Неудобство:

- Требует специальной структуры директорий на сервере и ssh-доступ

Mongrelhttp://github.com/fauna/mongrel

Mongrel 0

Mongrel 1

Mongrel 2

Mongrel 3

Mongrel N

Proxy — сервер

Пользователи

Связь между Mongrel и proxy-сервером через tcp-порт

Mongrelhttp://github.com/fauna/mongrel

Плюсы:

- Простота: один сервер — один запрос- Сервера не связаны между собой- Легко увеличить количество серверов- Работает с JAVA и JRuby

Mongrelhttp://github.com/fauna/mongrel

Плюсы:

- Простота: один сервер — один запрос- Сервера не связаны между собой- Легко увеличить количество серверов- Работает с JAVA и JRuby

Минусы:

- Потребление оперативной памяти- Долгий перезапуск- Проблемы с разграничением прав на tcp-порты

Thinhttp://code.macournoyer.com/thin/

Thin 0

Thin 1

Thin 2

Thin 3

Thin N

Proxy — сервер

Связь между Thin и proxy сервером через TCP-порт или UNIX-сокетЧерез сокет - быстрее

Thinhttp://code.macournoyer.com/thin/

Плюсы:

- Быстрее чем Mongrel- Может работать через Unix-сокет- Просто увеличить количество серверов

Thinhttp://code.macournoyer.com/thin/

Плюсы:

- Быстрее чем Mongrel- Может работать через Unix-сокет- Просто увеличить количество серверов

Минусы:

- Потребление оперативной памяти- Долгий перезапуск

Unicorn http://unicorn.bogomips.org

Более технологичен:

Есть мастер-процесс и много процессов обработчиковМастер следит за обработчиками, балансирует нагрузку

Unicorn http://unicorn.bogomips.org

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

Пользователи

Преимущества такого подхода:1. Мастер всегда знает кто из обработчиков свободен2. Мастер может остановить обработчик по

необходимости3.Если один из обработчиков аварийно завершился,

почти мгновенно запускается новый4.Процесс перезапуска приложения можно сделать

почти незаметным для пользователя

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

Пользователи

Перезапуск Unicorn с новой версией кода

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

Пользователи

(этап 1)

US

R2

сиг

нал

Администратор

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

Пользователи

НовыйUnicornMaster

(этап 2)

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

Пользователи

НовыйUnicornMaster

Обработчик

Обработчик

Обработчик

Обработчик

(этап 3)

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

Пользователи

НовыйUnicornMaster

Обработчик

Обработчик

Обработчик

ОбработчикQ

UIT

сигн

ал

(этап 3)

Раз

дел

яем

ый

сок

ет

Proxyсервер

Пользователи

НовыйUnicornMaster

Обработчик

Обработчик

Обработчик

Обработчик

(Перезапуск Unicorn завершен)

Unicorn http://unicorn.bogomips.org

Плюсы:

- Решается проблема долгой перезагрузки- Стабильность за счет мгновенного перезапуска обработчиков- Проще отслеживать нештатные ситуации

Unicorn http://unicorn.bogomips.org

Плюсы:

- Решается проблема долгой перезагрузки- Стабильность за счет мгновенного перезапуска обработчиков- Проще отслеживать нештатные ситуации

Минусы:

- Потребление памяти больше чем у thin

Passenger или mod railshttp://modrails.com

Особенности:

- Не является самостоятельным сервером- Модуль для Apache 2 и Nginx- Рассчитан на запуск большого количества rails-приложений

Passenger или mod railshttp://modrails.com

Плюсы:

- Удобен для хостинг-серверов- Позволяет сократить единовременное потребление памяти- Возможность указать альтернативную версию ruby

Passenger или mod railshttp://modrails.com

Плюсы:

- Удобен для хостинг-серверов- Позволяет сократить единовременное потребление памяти- Возможность указать альтернативную версию ruby

Минусы:

- Не так быстр как thin- В случае работы с Nginx при нагрузке периодически возникают проблемы- Недостаточно возможностей лимитировать ресурсы

Jruby и Rails- Большое количество j2ee серверов- Возможность использовать java-классы из ruby

Организация отдачи статики

- Все рассмотренные сервера приложений могут отдавать статику

Организация отдачи статики

- Все рассмотренные сервера приложений могут отдавать статику

- Ни один из них не будет делать это действительно хорошо

- Статические файлы должен отдавать быстрый веб-сервер (nginx, lighttpd, etc)

Организация отдачи статики

- Все рассмотренные сервера приложений могут отдавать статику

- Ни один из них не будет делать это действительно хорошо

- Статические файлы должен отдавать быстрый веб-сервер (nginx, lighttpd, etc)

- Организация отдачи статических данных после обработки запроса rails-кодом

- X-Sedn-File и X-Accel-Redirect

Общие выводыМного проектов и не постоянная загрузка — Passenger

Общие выводыМного проектов и не постоянная загрузка — Passenger

Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn

Общие выводыМного проектов и не постоянная загрузка — Passenger

Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn

Критично потребление памяти и редки обновления — Thin или Unicorn

Общие выводыМного проектов и не постоянная загрузка — Passenger

Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn

Критично потребление памяти и редки обновления — Thin или Unicorn

+Статические данные всегда отдаются веб-сервером

Спасибо за внимание!Вопросы?

Антон Веснин

avesnin@locum.ru

locum.ru

Презентация в электронном виде:

labs.locum.ru/rit.ppt

top related