Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
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 придумали раньше!
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
• Не отстали от нового тренда