+ All Categories
Home > Technology > развертывание среды Rails (антон веснин, Locum Ru)

развертывание среды Rails (антон веснин, Locum Ru)

Date post: 16-Jun-2015
Category:
Upload: guest40e031
View: 3,810 times
Download: 6 times
Share this document with a friend
37
Развертывание среды Ruby on Rails для промышленного использования. Методы, технологии, приемы. Антон Веснин (locum.ru)
Transcript
Page 1: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

Page 2: развертывание среды Rails (антон веснин, Locum Ru)

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

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

Page 3: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

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

Page 4: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

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

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

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

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

Page 5: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

База данных

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

Page 6: развертывание среды Rails (антон веснин, Locum Ru)

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

Capistrano

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

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

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

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

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

Page 7: развертывание среды Rails (антон веснин, Locum Ru)

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

Удобства:

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

Неудобство:

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

Page 8: развертывание среды Rails (антон веснин, Locum Ru)

Mongrelhttp://github.com/fauna/mongrel

Mongrel 0

Mongrel 1

Mongrel 2

Mongrel 3

Mongrel N

Proxy — сервер

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

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

Page 9: развертывание среды Rails (антон веснин, Locum Ru)

Mongrelhttp://github.com/fauna/mongrel

Плюсы:

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

Page 10: развертывание среды Rails (антон веснин, Locum Ru)

Mongrelhttp://github.com/fauna/mongrel

Плюсы:

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

Минусы:

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

Page 11: развертывание среды Rails (антон веснин, Locum Ru)

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

Thin 0

Thin 1

Thin 2

Thin 3

Thin N

Proxy — сервер

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

Page 12: развертывание среды Rails (антон веснин, Locum Ru)

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

Плюсы:

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

Page 13: развертывание среды Rails (антон веснин, Locum Ru)

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

Плюсы:

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

Минусы:

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

Page 14: развертывание среды Rails (антон веснин, Locum Ru)

Unicorn http://unicorn.bogomips.org

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

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

Page 15: развертывание среды Rails (антон веснин, Locum Ru)

Unicorn http://unicorn.bogomips.org

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

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

Page 16: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

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

Page 17: развертывание среды Rails (антон веснин, Locum Ru)

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

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

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

Page 18: развертывание среды Rails (антон веснин, Locum Ru)

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

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

(этап 1)

US

R2

сиг

нал

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

Page 19: развертывание среды Rails (антон веснин, Locum Ru)

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

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

НовыйUnicornMaster

(этап 2)

Page 20: развертывание среды Rails (антон веснин, Locum Ru)

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

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

НовыйUnicornMaster

Обработчик

Обработчик

Обработчик

Обработчик

(этап 3)

Page 21: развертывание среды Rails (антон веснин, Locum Ru)

Обработчик

Обработчик

Обработчик

Обработчик

UnicornMaster

Раз

дел

яем

ый

сок

ет

Proxyсервер

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

НовыйUnicornMaster

Обработчик

Обработчик

Обработчик

ОбработчикQ

UIT

сигн

ал

(этап 3)

Page 22: развертывание среды Rails (антон веснин, Locum Ru)

Раз

дел

яем

ый

сок

ет

Proxyсервер

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

НовыйUnicornMaster

Обработчик

Обработчик

Обработчик

Обработчик

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

Page 23: развертывание среды Rails (антон веснин, Locum Ru)

Unicorn http://unicorn.bogomips.org

Плюсы:

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

Page 24: развертывание среды Rails (антон веснин, Locum Ru)

Unicorn http://unicorn.bogomips.org

Плюсы:

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

Минусы:

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

Page 25: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

Page 26: развертывание среды Rails (антон веснин, Locum Ru)

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

Плюсы:

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

Page 27: развертывание среды Rails (антон веснин, Locum Ru)

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

Плюсы:

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

Минусы:

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

Page 28: развертывание среды Rails (антон веснин, Locum Ru)

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

Page 29: развертывание среды Rails (антон веснин, Locum Ru)

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

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

Page 30: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

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

Page 31: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

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

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

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

Page 32: развертывание среды Rails (антон веснин, Locum Ru)

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

Page 33: развертывание среды Rails (антон веснин, Locum Ru)

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

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

Page 34: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

Page 35: развертывание среды Rails (антон веснин, Locum Ru)

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

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

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

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

Page 36: развертывание среды Rails (антон веснин, Locum Ru)

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

Page 37: развертывание среды Rails (антон веснин, Locum Ru)

Антон Веснин

[email protected]

locum.ru

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

labs.locum.ru/rit.ppt


Recommended