Docker & Puppet:как их скреститьи надо ли вам это?Антон ТурецкийСистемный инженер, Badoo
• Предыстория6• Подготовка инфраструктуры6• Ключевые узлы Docker6• Puppet: от прототипа до конвейра6• Система сборки образов Docker6• Deploy сервиса с точки зрения эксплуатации6• “Грабли”, на которые наступили6• Чего не хватает для счастья в Docker?6• Заключение
Содержание
• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?
Предыстория
Предыстория• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?66
6
Необходимое и достаточное окружение для запуска и работы сервиса
Предыстория• Docker: что это такое?6• С какой стороны подойти?6• Что мы хотели получить?6• Необходимое и достаточное окружение
для запуска и работы сервиса66
Быстрый и простой 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 Table66
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:61. docker run --net=host62. 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: 66
6
“Грабли”, на которые наступили
• NF conntrack6• device mapper + ext4 as storage backend?
RESOLUTION: 66
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
Вопросы?Антон Турецкий
[email protected]@tyrchenok6@BadooDev 6
http://habrahabr.ru/company/badoo/