Upload
badoo-development
View
353.872
Download
2
Embed Size (px)
DESCRIPTION
Антон Турецкий, Раудсепп Илья, "Docker в Badoo: от восторгов к внедрению"
Citation preview
Docker в Badoo:от восторгов к внедрению
Антон Турецкий@tyrchenok
Илья Раудсепп@iraudsepp
Содержание• Восторг и ожидания• Подготовка инфраструктуры• Ключевые узлы Docker• Puppet: от прототипа до конвейра• Сборка образов Docker• Deploy сервиса с точки зрения эксплуатации• Docker: мониторинг (Илья Раудсепп)• “Грабли”: как без них?• Чего не хватает для счастья в Docker?• Заключение
Восторг и ожидания
• Как всё круто в первом приближении
• Очень хочется попробовать
• С чего начать?
• Ожидания
• Реальность
Конcервативный SLES
• Linux kernel version “3.8” or above != “3.0.101-0.40.1”• обновление util-linux, coreutils• обновление iptables, iproute2
• Выбор “Storage Driver”• Device mapper + ext4• BTRFS
• Изменение Partitioning Table
Docker Host
Docker Registry
• Зачем он нужен?
• Почему не DockerHub?
• Немного подробностей
Puppet: от одного ко многим
• +1 модуль: - ставим нужные пакеты (docker, kernel, e2fsprogs … )- cgroup_enable=memory swapaccount=1 - LVM changes, BTRFS
• Docker:• base package, settings• init script (да, тут еще нет systemd)• вспомогательные скрипты
Сборка образов для Docker
Роль Puppet• Поддержка BUILD environment
• Сборка образов и оповещение о результатах
• Своевременный PUSH образа в Registry
• Своевременный PULL образа на Docker Host
• Поддержание чистоты и порядка на Docker Hosts
• удаление ненужных образов/контейнеров
• формирование команд для запуска контейнеров
“Плавный” перезапуск сервиса
• Добавим балансировщик по вкусу• Используем key => value storage• confd: наполняем по
шаблону• Не трогаем “внешнюю” сеть• не нужно трогать dns• не нужно трогать dhcp• …
Docker monitoring
Что хотели
• Автоматический сбор метрик с нового контейнера/хоста с docker
• Возможность гибко настраивать отображение получаемых метрик
• Возможность просмотра статистики в “real time”
Что смотрелиDataDogs
Dockerana
collectd + graphite
Zabbix
sFlow, Fluentd, Monit and etc
https://www.google.ru/search?q=docker%20monitoring
https://www.google.ru/search?q=docker%20statistics
Что смотрели
DataDogs
– отправляет данные в облако
Dockerana
collectd + graphite
Zabbix
Что смотрели
DataDogs
Dockerana
– необходимо перезапускать докер с -D
– использует парсинг логов
collectd + graphite
Zabbix
Что смотрели
DataDogs
Dockerana
collectd + graphite
– не нашли готовых решений сбора статистики
Zabbix
Что смотрели
DataDogs
Dockerana
collectd + graphite
Zabbix
– нет возможно быстро и легко менять графики/дашборды
Что выбрали
agent: cAdvisor (https://github.com/google/cadvisor)
storage: Influxdb (https://github.com/influxdb/influxdb)
draw: grafana (https://github.com/grafana/grafana)
Что выбрали
Server
Host OS
Con
tain
er A
Con
tain
er B
cAdv
isor
C
onta
inerHttp/Https InfluxDB
Grafana
Host Container
Cpu
Mem
Disk
Network
Что выбрали
Server
Host OS
Con
tain
er A
Con
tain
er B
cAdv
isor
C
onta
inerHttp/Https InfluxDB
Grafana
Host Container
Cpu
Mem
Disk
Network
“Грабли”: как без них?
• NF conntrack
• device mapper + ext4 as storage backend
• VOLUME mapping
Чего не хватает для счастья?
• Централизованный мониторинг Docker Hosts
• Централизованного управления хостами/сервисами
• Более тесной интеграции с
• weave
• Open VSwitch
Заключение
• ”Уплотнили” количество сервисов в расчете на сервер
• Построили избыточную карту сервисов
• Построили систему сборки образов
• Получили гарантию работы сервиса любой ранее работающей версии в
любой момент времени