2. DevOPS
Docker в работе: взгляд на его использование в
Badoo через год
Слон желтого цвета и его друзья (эксплуатация
Hadoop-стека в федеральном проекте)
2
3. Disclaimer
Информация и часть слайдов позаимствованы из оригинальных презентаций:
● Docker в работе: взгляд на его использование в Badoo через год / Турецкий
Антон Михайлович
● Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном
проекте) / Чистяков Александр Анатольевич
3
23. 23
Docker registry
The Registry is a stateless, highly scalable server side
application that stores and lets you distribute Docker
images.
tightly control where your images are being stored
integrate image storage and distribution tightly into your
in-house development workflow
Git-based
Start your registry:
$ docker run -d -p 5000:5000 --name registry registry:2
Pull (or build) some image from the hub:
$ docker pull ubuntu
Tag the image so that it points to your registry:
$ docker tag ubuntu localhost:5000/myfirstimage
Push it:
$ docker push localhost:5000/myfirstimage
Pull it back:
$ docker pull localhost:5000/myfirstimage
Now stop your registry and remove all data:
$ docker stop registry && docker rm -v registry
28. WHAT IS ANSIBLE?
● cloud provisioning
● configuration management
● application deployment
● intra-service orchestration
● Multi-tier deployment
● No agents and no additional custom security infrastructure
● Very simple language (YAML, in the form of Ansible Playbooks)
28
29. MANAGE YOUR INVENTORY IN SIMPLE TEXT FILES
● By default, used a very simple INI inventory file
● Many services also supported
● Plugins like EC2, Rackspace, OpenStack, and more.
Here's what a plain text inventory file like:
[webservers]
www1.example.com
www2.example.com
[dbservers]
db0.example.com
db1.example.com
29
30. ---
- hosts: webservers
serial: 5 # update 5 machines at a time
roles:
- common
- webapp
- hosts: content_servers
roles:
- common
- content
---
- yum: name={{contact.item}} state=installed
with_items:
- app_server
- acme_software
- service: name=app_server state=running enabled=yes
- template: src=/opt/code/templates/foo.j2 dest=/etc/foo.conf
notify:
- restart app server
Playbook looks like
30
31. Playbook Roles and Include Statements
Variables
Jinja2 filters
Conditionals
Loops
Blocks
Strategies
Best Practices
Multi-tier rollouts rolling updates
Delegate actions to other hosts
Playbook simple but powerful
31
Editor's Notes
Лазером по сосулям!
Имеется видео ~ 49 минут.
Видео 46 минут по запросу.
Выложен доступ http://confluence.taskdata.com/pages/viewpage.action?pageId=6816230
2 темы. Доклады не связаны! Второй серьёзно дополнен моими мыслями (ное без фанатизма, т.к. не обо мне сейчас).
Vagrant (англ. бродяга) — свободное и открытое программное обеспечение для создания и конфигурирования виртуальной среды разработки[1]. Является обёрткой для программного обеспечения виртуализации, например VirtualBox, и средств управления конфигурациями, такими как Chef, Saltи Puppet.
Начиная с версии 1.1 Vagrant больше не привязан к VirtualBox и так же работает с другими средствами виртуализации, например VMware Workstation, а также поддерживает облачные среды, например Amazon EC2[2]. Инструмент написан на Ruby; при этом его можно использовать в проектах, создаваемых на других языках программирования, таких как PHP, Python, Java, C# и JavaScript[3][4].
В версии 1.6 реализована встроенная поддержка для использования контейнерной виртуализации на базе LXC с применением инструментарияDocker вместо полностью виртуализированной операционной системы, что позволяет уменьшить накладные расходы[5].
Плагин vagrant-libvirt добавляет поддержку libvirt в Vagrant[6].
qemu, kvm, VirtualBox?? Нет. Легче.
Разные инструменты. Стек технологий. Во многом пересекаются.
Сервис! Не операционка. Не виртуалка. Не пакеты. Не настройки.
Порт, настройки…
Unidata требует Elasticsearch 1.7, Kibana - 2.2.
Интероперабельность. Миграция.
При миграции нет истории. Не нужно обрытных манифестов puppet. Куски запущенного сервера, помойка логов, кешей, настроек, предполагаемого окружения.
Старый синтаксис? Зато просто! Версионифицированно.
Идеологически: один контейнер - одна служба.
Маппинг внутрь /dev/log не катит. Держится старый сокет в гостях (не винда!).
Запихнули 2 сервиса. Не по феншую - зато работает (сеть).
Не отмонтировать на хосте устройство, которое держится кем-то.
Требуется рестарт контейнера.
В привелигированном режиме можно. Но опасно. Так делать не стоит.
Просто отказаться от динамических точек монтирования.
Выбор системы, драйвера.
Вышли в AUFS, но в mainline не войдёт.
Seph.
по опыту баду BTRFS очень медленный, но они его поверх LVM!
Show, balance - сколько места-то занято?? Ребаланс чтобы высвободить место, нельзя в пик нагрузки ибо IO.
Overlay(FS) рекомендуется. Тестируют в баду. С версии 3.18 в ядро вошёл с именем Overlay. OverlayFS + Ext4.
В тестовом выпуске ядра Linux 3.18-rc2 появилась поддержка файловой системы OverlayFS, разработанной компанией SUSE в качестве более прогрессивной замены UnionFS и AUFS
К слайду:
Обновления проверяются периодически, но по наличию создаёттся таса для принятия решения об апдейтах.
Много всего также:
* docker exec сохраняет процесс (до версии 1.8) бесконечно. Вроде пофиксили.
* Если больше одного entry point необходима грабелька. http://skarnet.org/software/s6/
Костыль badoo (с использованием Puppet).
Можно использовать тот же Jenkins.
The Registry is open-source, under the permissiveApache license.