25
Docker & Puppet: как их скрестить и надо ли вам это? Антон Турецкий Системный инженер, Badoo

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

Embed Size (px)

Citation preview

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

Docker & Puppet:как их скреститьи надо ли вам это?Антон ТурецкийСистемный инженер, Badoo

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

• Предыстория6• Подготовка инфраструктуры6• Ключевые узлы Docker6• Puppet: от прототипа до конвейра6• Система сборки образов Docker6• Deploy сервиса с точки зрения эксплуатации6• “Грабли”, на которые наступили6• Чего не хватает для счастья в Docker?6• Заключение

Содержание

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

• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?

Предыстория

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

Предыстория• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?66

6

Необходимое и достаточное окружение для запуска и работы сервиса

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

Предыстория• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?6• Необходимое и достаточное окружение

для запуска и работы сервиса66

Быстрый и простой deployment?6

6

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

Предыстория• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?6• Необходимое и достаточное окружение

для запуска и работы сервиса6• Быстрый и простой deployment6

6

Резервирование?6

6

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

Предыстория• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?6• Необходимое и достаточное окружение

для запуска и работы сервиса6• Быстрый и простой deployment6• Резервирование6

6

Уменьшение времени деградациисервиса при обновлении(перезапуске)?

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

Предыстория• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?6• Необходимое и достаточное окружение

для запуска и работы сервиса6• Быстрый и простой deployment6• Резервирование6• Уменьшение времени деградации сервиса при

обновлении(перезапуске)6

Использовать оборудование“на полную катушку”

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

Подготовка инфраструктуры• 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 Table66

P.S.: Хорошо, что Puppet придумали раньше!

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

Ключевые узлы Docker

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

А если сервер не один!?

• Добавляем репозиторий, ставим нужные пакеты6• Меняем разбивку LVM, говорим: “Привет BTRFS”6• cgroup_enable=memory swapaccount=16• Docker:6• base package, settings6• init script (да, тут еще нет systemd)6• вспомогательные скрипты

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

Сборка образов для Docker

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

Роль Puppet• Поддержка BUILD environment6

• Сборка образов и оповещение о результатах6

• Своевременный PUSH образа в Registry6

• Своевременный PULL образа на Docker Host6

• Поддержание чистоты и порядка на Docker Hosts6

• удаление не нужных образов/контейнеров6

• формирование команд для запуска контейнеров

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

DownTime: перезапуск сервиса

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

DownTime: перезапуск сервиса

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

DownTime: перезапуск сервиса

• Добавим балансировщик по вкусу6• Используем key => value storage6• confd: наполняем по

шаблону6• Не трогаем “внешнюю” сеть6• не нужно трогать dns6• не нужно трогать dhcp6• …

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

• NF conntrack?• nf_conntrack: table full, dropping packet6

RESOLUTION:6

“Грабли”, на которые наступили

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

• NF conntrack?• nf_conntrack: table full, dropping packet6

RESOLUTION:61. docker run --net=host62. iptables rules:6-t raw -I PREROUTING -j CT --notrack6-t raw -I OUTPUT -j CT --notrack

“Грабли”, на которые наступили

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

• NF conntrack6• device mapper + ext4 as storage backend?

RESOLUTION: 66

6

“Грабли”, на которые наступили

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

• NF conntrack6• device mapper + ext4 as storage backend?

RESOLUTION: 66

6

BTRFS as storage driver

“Грабли”, на которые наступили

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

• NF conntrack6• device mapper + ext4 as storage backend6• VOLUME mapping

“Грабли”, на которые наступили

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

• Централизованный мониторинг Docker Hosts6

• Cadvisor + доработки6

• Централизованного управления хостами/

сервисами6

• внимание, shipyard!6

• Более тесной интеграции с 6

• weave6

• Open VSwitch

Чего не хватает для счастья?

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

Заключение

• ”Уплотнили” количество сервисов в расчете на сервер6

• Построили избыточную карту сервисов6

• Построили систему сборки образов6

• Получили гарантию работы сервиса любой ранее работающей версии в

любой момент времени6

• Не отстали от нового тренда

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

Спасибо

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

Useful Links

#codefest2014 #Puppet : goo.gl/dG0hJD6#hl2012 #Puppet : http://goo.gl/5FNwuD

Вопросы?Антон Турецкий

[email protected]@tyrchenok6@BadooDev 6

http://habrahabr.ru/company/badoo/