teach your dockers to use cranes

Post on 10-Jul-2015

16.197 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Оснастите свои доки кранами

Павел Емельянов

Москва, 2014

2

О чём речь

Несколько слов о CRIU вообще

И ещё несколько о CRIU-1.3.1

CRIU + Docker: скрестить коня и трепетную лань

Что дальше?

3

Что такое CRIU?

Checkpoint-Restore In Userspace

Процессыи

окружение

Checkpoint/

Dump

Restore/

Restart

Наборфайлов-образов

4

Что такое CRIU? (продолж.)

Начался ~3 года назад

После 2-х летней осады сообщества Linux Kernel с патчами для in-kernel реализации

Вместо 100+ патчей на всё ядро – небольшое их количество, расширяющих только user API

В 3.11 есть всё, что нужно для нормальной работы

5

Для чего он нужен

Живая миграция

“Незаметное” обновление ядра

Ускорение долгого старта приложений

Периодические снимки состояний (HPC)

Продвинутая отладка и тестирование

Присадки к screen/tmux

Кнопка save

6

Где мы сейчас

1.3 выпущено 1 сентября

– И потом 1.3.1 12-го

Способен сохранять и восстанавливать

всё, чем пользуются стандартные серверные приложение окружение (namespaces, cgroups, mountpoints), настраиваемое

утилитами OpenVZ, LXC и Docker CLI и RPC (и .so для более простого доступа к RPC)

Поддержка живой миграции

Отслеживание изменений в памяти C/R одной стороны активного TCP-соединения

Почти закончена интеграция с OpenVZ, LXC and Docker!

7

Docker

В Google нужны контейнеры и живая миграция

Для контейнеров – Docker

Для миграции – CRIU

8

Сценарий 1

Dockerdaemon

CT2

CT1

CT3

Dockerdaemon

Host 1 Host 2

CT1

9

Сценарий 2

Dockerdaemon

CT2

CT1

CT3

Host 1 Host 2

Dockerdaemon

CT2

CT1

CT3

10

Что для этого нужно

“Починить” AUFS, который портит имена файлов

Поддержать bind mounts внешних файлов внутрь контейнера

Прикрепить контейнер к новому Docker-демону

Поддержать вложенные PID-namespaces

11

Что из этого сделано

+ “Починить” AUFS, который портит имена файлов

+ Поддержать bind mounts внешних файлов внутрь контейнера

+ Прикрепить контейнер к новому Docker-демону

– Поддержать вложенные PID-namespaces

12

Как это будет выглядеть

Dockerdaemon

CT2

CT1

CT3

DockerCLI

dump $idrestore $id

-t $ct_root_pid-D /var/lib/docker/$ct/...

13

Где посмотреть

file://$criu_sources/contrib/docker_cr.sh

https://github.com/docker/libcontainer/pull/204

http://criu.org/Docker

14

Что дальше?

Merge 204th pull

Поддержать user-namespaces

Сделать живую миграцию по-человечески

Живая миграция != dump + copy + restore Проект Пихль / P.Haul https://github.com/xemul/p.haul

15

Где живёт проект

http://criu.org

http://git.criu.org

+CRIU page

criu@openvz.org

top related