SlideShare a Scribd company logo
Docker & Puppet: 
как их скрестить 
и надо ли вам это? 
Антон Турецкий 
Системный инженер, Badoo
Содержание 
• Предыстория6 
• Подготовка инфраструктуры6 
• Ключевые узлы Docker6 
• Puppet: от прототипа до конвейра6 
• Система сборки образов Docker6 
• Deploy сервиса с точки зрения эксплуатации6 
• “Грабли”, на которые наступили6 
• Чего не хватает для счастья в Docker?6 
• Заключение
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
6 
6 
Необходимое и достаточное окружение для 
запуска и работы сервиса
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточное окружение 
для запуска и работы сервиса6 
6 
Быстрый и простой deployment? 
6 
6
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточное окружение 
для запуска и работы сервиса6 
• Быстрый и простой deployment6 
6 
Резервирование? 
6 
6
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточное окружение 
для запуска и работы сервиса6 
• Быстрый и простой deployment6 
• Резервирование6 
6 
Уменьшение времени деградации 
сервиса при обновлении(перезапуске)?
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточное окружение 
для запуска и работы сервиса6 
• Быстрый и простой deployment6 
• Резервирование6 
• Уменьшение времени деградации сервиса при 
обновлении(перезапуске)6 
Использовать оборудование 
“на полную катушку”
Подготовка инфраструктуры 
• Linux kernel version 3.8 or above != 3.0.101-0.40.16 
• обновление util-linux, coreutils6 
• обновление iptables, iproute26 
• Выбор “Storage Driver”6 
• Device mapper + ext46 
• BTRFS6 
• Близкое знакомство с cgroups6 
• Изменение Partitioning Table6 
6 
P.S.: Хорошо, что Puppet придумали раньше!
Ключевые узлы Docker
А если сервер не один!? 
• Добавляем репозиторий, ставим нужные пакеты6 
• Меняем разбивку LVM, говорим: “Привет BTRFS”6 
• cgroup_enable=memory swapaccount=16 
• Docker:6 
• base package, settings6 
• init script (да, тут еще нет systemd)6 
• вспомогательные скрипты
Сборка образов для Docker
Роль Puppet 
• Поддержка BUILD environment6 
• Сборка образов и оповещение о результатах6 
• Своевременный PUSH образа в Registry6 
• Своевременный PULL образа на Docker Host6 
• Поддержание чистоты и порядка на Docker Hosts6 
• удаление не нужных образов/контейнеров6 
• формирование команд для запуска контейнеров
DownTime: перезапуск сервиса
DownTime: перезапуск сервиса
DownTime: перезапуск сервиса 
• Добавим балансировщик по вкусу6 
• Используем key => value storage6 
• confd: наполняем по 
шаблону6 
• Не трогаем “внешнюю” сеть6 
• не нужно трогать dns6 
• не нужно трогать dhcp6 
• …
“Грабли”, на которые наступили 
• NF conntrack? 
• nf_conntrack: table full, dropping packet6 
RESOLUTION:6
“Грабли”, на которые наступили 
• NF conntrack? 
• nf_conntrack: table full, dropping packet6 
RESOLUTION:6 
1. docker run --net=host6 
2. iptables rules:6 
-t raw -I PREROUTING -j CT --notrack6 
-t raw -I OUTPUT -j CT --notrack
“Грабли”, на которые наступили 
• NF conntrack6 
• device mapper + ext4 as storage backend? 
RESOLUTION: 6 
6 
6
“Грабли”, на которые наступили 
• NF conntrack6 
• device mapper + ext4 as storage backend? 
RESOLUTION: 6 
6 
6 
BTRFS as storage driver
“Грабли”, на которые наступили 
• NF conntrack6 
• device mapper + ext4 as storage backend6 
• VOLUME mapping
Чего не хватает для счастья? 
• Централизованный мониторинг Docker Hosts6 
• Cadvisor + доработки6 
• Централизованного управления хостами/ 
сервисами6 
• внимание, shipyard!6 
• Более тесной интеграции с 6 
• weave6 
• Open VSwitch
Заключение 
• ”Уплотнили” количество сервисов в расчете на сервер6 
• Построили избыточную карту сервисов6 
• Построили систему сборки образов6 
• Получили гарантию работы сервиса любой ранее работающей версии в 
любой момент времени6 
• Не отстали от нового тренда
Спасибо
Useful Links 
#codefest2014 #Puppet : goo.gl/dG0hJD6 
#hl2012 #Puppet : http://goo.gl/5FNwuD 
Вопросы? 
Антон Турецкий 
a.turetsky@corp.badoo.com6 
@tyrchenok6 
@BadooDev 6 
http://habrahabr.ru/company/badoo/

More Related Content

PDF
Облако в Badoo год спустя
PPTX
Docker в работе: взгляд на использование в Badoo через год
PDF
Архитектура хранения фотографий в Badoo
PDF
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
PDF
Юрий Насретдинов, Badoo
PPTX
Антон Турецкий
PDF
Вячеслав Бахмутов
PDF
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Облако в Badoo год спустя
Docker в работе: взгляд на использование в Badoo через год
Архитектура хранения фотографий в Badoo
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Юрий Насретдинов, Badoo
Антон Турецкий
Вячеслав Бахмутов
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)

What's hot (19)

PDF
Docker & Puppet: как их скрестить и надо ли вам это?
ODP
Teach your dockers to use CRanes
PDF
Денис Иванов
PDF
Где живут Ваши объявления / Тюрин Михаил (Avito)
PDF
Мой маленький уютный PaaS / Илья Беда (bro.agency)
PPTX
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
PDF
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
ODP
My talk on Docker, Youcon 2015
PPTX
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
PDF
My talk on monitoring systems at RootConf 2016
PPTX
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
PDF
Андрей Ситник
PPTX
Евгений Потапов (Сумма Айти)
PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
PDF
Docker integration into Badoo
PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
PDF
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
PPTX
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Docker & Puppet: как их скрестить и надо ли вам это?
Teach your dockers to use CRanes
Денис Иванов
Где живут Ваши объявления / Тюрин Михаил (Avito)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
My talk on Docker, Youcon 2015
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
My talk on monitoring systems at RootConf 2016
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
Андрей Ситник
Евгений Потапов (Сумма Айти)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Docker integration into Badoo
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Ad

Viewers also liked (20)

PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
PDF
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
PDF
"Выбраться из спама - как повысить CTR рассылки без потери активности". Андре...
PDF
Приём платежей в Badoo - взгляд изнутри, Анатолий Панов (Badoo)
PPTX
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
PDF
Мониторь, автоматизируй Docker
PDF
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
PDF
Ровная балансировка нагрузки на фронтенд-кластере
PDF
Docker в Badoo: ПМЖ или временная регистрация
PDF
Как слать 100М писем каждый день - секреты емейл-рассылок компании Badoo (Анд...
PPTX
Информационная безопасность Олимпийских игр
PDF
"Обзор Tarantool DB"
PDF
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
PPTX
"Великолепный API без Rest", Констатин Якушев (Badoo)
PDF
Near-realtime аналитика событий в высоконагруженном проекте
PDF
Docker networking
PDF
Мобильный веб: назад в будущее
PDF
Технологии vs коммуникации: что важнее?
PPTX
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
PDF
Как автотесты ускоряют релизы в OK.ru
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
"Выбраться из спама - как повысить CTR рассылки без потери активности". Андре...
Приём платежей в Badoo - взгляд изнутри, Анатолий Панов (Badoo)
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
Мониторь, автоматизируй Docker
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Ровная балансировка нагрузки на фронтенд-кластере
Docker в Badoo: ПМЖ или временная регистрация
Как слать 100М писем каждый день - секреты емейл-рассылок компании Badoo (Анд...
Информационная безопасность Олимпийских игр
"Обзор Tarantool DB"
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации"
"Великолепный API без Rest", Констатин Якушев (Badoo)
Near-realtime аналитика событий в высоконагруженном проекте
Docker networking
Мобильный веб: назад в будущее
Технологии vs коммуникации: что важнее?
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
Как автотесты ускоряют релизы в OK.ru
Ad

Similar to Docker & Puppet - как их скрестить и надо ли вам это, Антон Турецкий (Badoo) (20)

PPTX
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
PPTX
Docker в работе: взгляд на использование в Badoo через год
PDF
Docker: from understanding to production
PDF
Как не стать рабом облака. PaaS 2.0 с Docker
PDF
Docker - счастье для хомячка или ника?
PPT
Docker - быстро, просто, наглядно
ODP
Docker : что это, зачем, и как им пользоваться
PPTX
Введение в Docker
PDF
Локальное окружение на Docker
PPTX
Что такое Docker
PDF
Кратчайшее введение в docker по-русски
PPTX
Docker Containers orchestrators: Kubernetes vs. Swarm
PPTX
ODP
Введение в Docker
PPTX
Docker & Badoo: 
никогда не останавливайся на достигнутом
PDF
obzor-tiekhnologhii-kontieinierov
PDF
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на использование в Badoo через год
Docker: from understanding to production
Как не стать рабом облака. PaaS 2.0 с Docker
Docker - счастье для хомячка или ника?
Docker - быстро, просто, наглядно
Docker : что это, зачем, и как им пользоваться
Введение в Docker
Локальное окружение на Docker
Что такое Docker
Кратчайшее введение в docker по-русски
Docker Containers orchestrators: Kubernetes vs. Swarm
Введение в Docker
Docker & Badoo: 
никогда не останавливайся на достигнутом
obzor-tiekhnologhii-kontieinierov
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration

More from Badoo Development (20)

PDF
Viktar Karanevich – iOS Parallel Automation
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
PDF
Григорий Джанелидзе, OK.RU
PPTX
Андрей Сидоров, Яндекс.Браузер
PDF
Филипп Уваров, Avito
PDF
Cocoaheads Meetup / Alex Zimin / Swift magic
PDF
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
PDF
Alex Krasheninnikov – Hadoop High Availability
PDF
Андрей Денисов – В ожидании мониторинга баз данных
PDF
Александр Зобнин, Grafana Labs
PDF
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
PPTX
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
PDF
TechLeads meetup: Алексей Рыбак, Badoo
PPTX
TechLeads meetup: Евгений Потапов, ITSumma
PDF
TechLeads meetup: Макс Лапшин, Erlyvideo
PDF
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
PPTX
Как мы готовим MySQL
PPTX
Архитектура хранения и отдачи фотографий в Badoo
PDF
5 способов деплоя PHP-кода в условиях хайлоада
PDF
ChromeDriver Jailbreak
Viktar Karanevich – iOS Parallel Automation
Как мы делаем модули PHP в Badoo – Антон Довгаль
Григорий Джанелидзе, OK.RU
Андрей Сидоров, Яндекс.Браузер
Филипп Уваров, Avito
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Alex Krasheninnikov – Hadoop High Availability
Андрей Денисов – В ожидании мониторинга баз данных
Александр Зобнин, Grafana Labs
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Макс Лапшин, Erlyvideo
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Как мы готовим MySQL
Архитектура хранения и отдачи фотографий в Badoo
5 способов деплоя PHP-кода в условиях хайлоада
ChromeDriver Jailbreak

Docker & Puppet - как их скрестить и надо ли вам это, Антон Турецкий (Badoo)

  • 1. Docker & Puppet: как их скрестить и надо ли вам это? Антон Турецкий Системный инженер, Badoo
  • 2. Содержание • Предыстория6 • Подготовка инфраструктуры6 • Ключевые узлы Docker6 • Puppet: от прототипа до конвейра6 • Система сборки образов Docker6 • Deploy сервиса с точки зрения эксплуатации6 • “Грабли”, на которые наступили6 • Чего не хватает для счастья в Docker?6 • Заключение
  • 3. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?
  • 4. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 6 6 Необходимое и достаточное окружение для запуска и работы сервиса
  • 5. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 6 Быстрый и простой deployment? 6 6
  • 6. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 • Быстрый и простой deployment6 6 Резервирование? 6 6
  • 7. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 • Быстрый и простой deployment6 • Резервирование6 6 Уменьшение времени деградации сервиса при обновлении(перезапуске)?
  • 8. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 • Быстрый и простой deployment6 • Резервирование6 • Уменьшение времени деградации сервиса при обновлении(перезапуске)6 Использовать оборудование “на полную катушку”
  • 9. Подготовка инфраструктуры • Linux kernel version 3.8 or above != 3.0.101-0.40.16 • обновление util-linux, coreutils6 • обновление iptables, iproute26 • Выбор “Storage Driver”6 • Device mapper + ext46 • BTRFS6 • Близкое знакомство с cgroups6 • Изменение Partitioning Table6 6 P.S.: Хорошо, что Puppet придумали раньше!
  • 11. А если сервер не один!? • Добавляем репозиторий, ставим нужные пакеты6 • Меняем разбивку LVM, говорим: “Привет BTRFS”6 • cgroup_enable=memory swapaccount=16 • Docker:6 • base package, settings6 • init script (да, тут еще нет systemd)6 • вспомогательные скрипты
  • 13. Роль Puppet • Поддержка BUILD environment6 • Сборка образов и оповещение о результатах6 • Своевременный PUSH образа в Registry6 • Своевременный PULL образа на Docker Host6 • Поддержание чистоты и порядка на Docker Hosts6 • удаление не нужных образов/контейнеров6 • формирование команд для запуска контейнеров
  • 16. DownTime: перезапуск сервиса • Добавим балансировщик по вкусу6 • Используем key => value storage6 • confd: наполняем по шаблону6 • Не трогаем “внешнюю” сеть6 • не нужно трогать dns6 • не нужно трогать dhcp6 • …
  • 17. “Грабли”, на которые наступили • NF conntrack? • nf_conntrack: table full, dropping packet6 RESOLUTION:6
  • 18. “Грабли”, на которые наступили • NF conntrack? • nf_conntrack: table full, dropping packet6 RESOLUTION:6 1. docker run --net=host6 2. iptables rules:6 -t raw -I PREROUTING -j CT --notrack6 -t raw -I OUTPUT -j CT --notrack
  • 19. “Грабли”, на которые наступили • NF conntrack6 • device mapper + ext4 as storage backend? RESOLUTION: 6 6 6
  • 20. “Грабли”, на которые наступили • NF conntrack6 • device mapper + ext4 as storage backend? RESOLUTION: 6 6 6 BTRFS as storage driver
  • 21. “Грабли”, на которые наступили • NF conntrack6 • device mapper + ext4 as storage backend6 • VOLUME mapping
  • 22. Чего не хватает для счастья? • Централизованный мониторинг Docker Hosts6 • Cadvisor + доработки6 • Централизованного управления хостами/ сервисами6 • внимание, shipyard!6 • Более тесной интеграции с 6 • weave6 • Open VSwitch
  • 23. Заключение • ”Уплотнили” количество сервисов в расчете на сервер6 • Построили избыточную карту сервисов6 • Построили систему сборки образов6 • Получили гарантию работы сервиса любой ранее работающей версии в любой момент времени6 • Не отстали от нового тренда
  • 25. Useful Links #codefest2014 #Puppet : goo.gl/dG0hJD6 #hl2012 #Puppet : http://goo.gl/5FNwuD Вопросы? Антон Турецкий a.turetsky@corp.badoo.com6 @tyrchenok6 @BadooDev 6 http://habrahabr.ru/company/badoo/