Docker & Puppet - как их скрестить и надо ли вам это, Антон...

  • View
    15.676

  • Download
    1

  • Category

    Internet

Preview:

Citation preview

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

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

a.turetsky@corp.badoo.com6@tyrchenok6@BadooDev 6

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

Recommended