Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Docker & Puppet: 
как их скрестить 
и надо ли вам это? 
Антон Турецкий 
Системный инженер, Badoo
Содержание 
• Предыстория6 
• Подготовка инфраструктуры6 
• Ключевые узлы Docker6 
• Puppet: от прототипа до конвейра6 
• ...
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
6 
6 
Необходимое и доста...
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточн...
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточн...
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточн...
Предыстория 
• Docker: что это такое?6 
• С какой стороны подойти?6 
• Что мы хотели получить?6 
• Необходимое и достаточн...
Подготовка инфраструктуры 
• Linux kernel version 3.8 or above != 3.0.101-0.40.16 
• обновление util-linux, coreutils6 
• ...
Ключевые узлы Docker
А если сервер не один!? 
• Добавляем репозиторий, ставим нужные пакеты6 
• Меняем разбивку LVM, говорим: “Привет BTRFS”6 
...
Сборка образов для Docker
Роль Puppet 
• Поддержка BUILD environment6 
• Сборка образов и оповещение о результатах6 
• Своевременный PUSH образа в R...
DownTime: перезапуск сервиса
DownTime: перезапуск сервиса
DownTime: перезапуск сервиса 
• Добавим балансировщик по вкусу6 
• Используем key => value storage6 
• confd: наполняем по...
“Грабли”, на которые наступили 
• NF conntrack? 
• nf_conntrack: table full, dropping packet6 
RESOLUTION:6
“Грабли”, на которые наступили 
• NF conntrack? 
• nf_conntrack: table full, dropping packet6 
RESOLUTION:6 
1. docker run...
“Грабли”, на которые наступили 
• 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...
“Грабли”, на которые наступили 
• NF conntrack6 
• device mapper + ext4 as storage backend6 
• VOLUME mapping
Чего не хватает для счастья? 
• Централизованный мониторинг Docker Hosts6 
• Cadvisor + доработки6 
• Централизованного уп...
Заключение 
• ”Уплотнили” количество сервисов в расчете на сервер6 
• Построили избыточную карту сервисов6 
• Построили си...
Спасибо
Useful Links 
#codefest2014 #Puppet : goo.gl/dG0hJD6 
#hl2012 #Puppet : http://goo.gl/5FNwuD 
Вопросы? 
Антон Турецкий 
a....
Upcoming SlideShare
Loading in …5
×

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

1,616 views

Published on

Доклад Антона Турецкого с HighLoad++ 2014.

Published in: Internet
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Docker & Puppet: как их скрестить и надо ли вам это? Антон Турецкий Системный инженер, Badoo
  2. 2. Содержание • Предыстория6 • Подготовка инфраструктуры6 • Ключевые узлы Docker6 • Puppet: от прототипа до конвейра6 • Система сборки образов Docker6 • Deploy сервиса с точки зрения эксплуатации6 • “Грабли”, на которые наступили6 • Чего не хватает для счастья в Docker?6 • Заключение
  3. 3. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?
  4. 4. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 6 6 Необходимое и достаточное окружение для запуска и работы сервиса
  5. 5. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 6 Быстрый и простой deployment? 6 6
  6. 6. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 • Быстрый и простой deployment6 6 Резервирование? 6 6
  7. 7. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 • Быстрый и простой deployment6 • Резервирование6 6 Уменьшение времени деградации сервиса при обновлении(перезапуске)?
  8. 8. Предыстория • Docker: что это такое?6 • С какой стороны подойти?6 • Что мы хотели получить?6 • Необходимое и достаточное окружение для запуска и работы сервиса6 • Быстрый и простой deployment6 • Резервирование6 • Уменьшение времени деградации сервиса при обновлении(перезапуске)6 Использовать оборудование “на полную катушку”
  9. 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 придумали раньше!
  10. 10. Ключевые узлы Docker
  11. 11. А если сервер не один!? • Добавляем репозиторий, ставим нужные пакеты6 • Меняем разбивку LVM, говорим: “Привет BTRFS”6 • cgroup_enable=memory swapaccount=16 • Docker:6 • base package, settings6 • init script (да, тут еще нет systemd)6 • вспомогательные скрипты
  12. 12. Сборка образов для Docker
  13. 13. Роль Puppet • Поддержка BUILD environment6 • Сборка образов и оповещение о результатах6 • Своевременный PUSH образа в Registry6 • Своевременный PULL образа на Docker Host6 • Поддержание чистоты и порядка на Docker Hosts6 • удаление не нужных образов/контейнеров6 • формирование команд для запуска контейнеров
  14. 14. DownTime: перезапуск сервиса
  15. 15. DownTime: перезапуск сервиса
  16. 16. DownTime: перезапуск сервиса • Добавим балансировщик по вкусу6 • Используем key => value storage6 • confd: наполняем по шаблону6 • Не трогаем “внешнюю” сеть6 • не нужно трогать dns6 • не нужно трогать dhcp6 • …
  17. 17. “Грабли”, на которые наступили • NF conntrack? • nf_conntrack: table full, dropping packet6 RESOLUTION:6
  18. 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. 19. “Грабли”, на которые наступили • NF conntrack6 • device mapper + ext4 as storage backend? RESOLUTION: 6 6 6
  20. 20. “Грабли”, на которые наступили • NF conntrack6 • device mapper + ext4 as storage backend? RESOLUTION: 6 6 6 BTRFS as storage driver
  21. 21. “Грабли”, на которые наступили • NF conntrack6 • device mapper + ext4 as storage backend6 • VOLUME mapping
  22. 22. Чего не хватает для счастья? • Централизованный мониторинг Docker Hosts6 • Cadvisor + доработки6 • Централизованного управления хостами/ сервисами6 • внимание, shipyard!6 • Более тесной интеграции с 6 • weave6 • Open VSwitch
  23. 23. Заключение • ”Уплотнили” количество сервисов в расчете на сервер6 • Построили избыточную карту сервисов6 • Построили систему сборки образов6 • Получили гарантию работы сервиса любой ранее работающей версии в любой момент времени6 • Не отстали от нового тренда
  24. 24. Спасибо
  25. 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/

×