Живая миграция контейнеров: плюсы, минусы, подводные...

23
Живая миграция контейнеров: плюсы, минусы, подводные камни Живая миграция контейнеров: плюсы, минусы, подводные камни Павел Емельянов Яндекс, Москва, 2015

Upload: openvz

Post on 12-Apr-2017

534 views

Category:

Software


6 download

TRANSCRIPT

Page 1: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Живая миграция контейнеров:

плюсы, минусы, подводные камни

Живая миграция контейнеров:

плюсы, минусы, подводные камни

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

Яндекс, Москва, 2015

Page 2: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Про что докладПро что доклад

• Почему надо мигрировать контейнеры

• Почему не надо мигрировать контейнеры

• Насколько сложно мигрировать контейнеры

2

Page 3: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Миграция в общих чретахМиграция в общих чретах

• Сохранить состояние

• Скопировать состояние

• Восстановить состояние

3

Page 4: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Миграция контейнеровМиграция контейнеров

4

Page 5: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Почему надо мигрировать контейнерыПочему надо мигрировать контейнеры

• Эффектно

• Балансировка нагрузки

• Обновление ядра

– Можно не мигрировать на самом деле

• Замена оборудования

5

Page 6: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Почему не надо мигрировать контейнерыПочему не надо мигрировать контейнеры

6

Page 7: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Как не мигрировать контейнерыКак не мигрировать контейнеры

• Балансировка сетевого трафика

• Микросервисы

• Crash-driven обновления

• Плановые отключения горячей воды

7

Page 8: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

На самом деле живая миграцияНа самом деле живая миграция

• Пересылку память необходимо исключить из состояния “заморожено”

• Пред-копирование памяти

• Пост-копирование памяти

8

Page 9: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Живая миграция в деталяхЖивая миграция в деталях

• Пред-копирование: сбор и пересылка памяти (несколько раз)

• Заморозка

• Сохранение состояния

• Копирование состояния

• Восстановление состояния

• Разморозка

• Пост-копирование: подкачка памяти по сети

9

Page 10: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Подводные камниПодводные камни

10

VS

Page 11: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Подводные камниПодводные камни

11

VS

Page 12: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Подводные камниПодводные камни

12

VS

Page 13: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Что мигрируемЧто мигрируем

• VM-ка

– Окружение (виртуальное железо, paravirt)

– CPU

– Память

• Контейнер

– Окружение (cgroups, namespaces)

– Процессы и другие животные

– Память

13

Page 14: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Сбор и пересылка памятиСбор и пересылка памяти

• VM-ка

– Вся память “в руках”

• Контейнер

– Память размазана по процессам, может быть разделена между ними

– Поэтому надо сначала собрать процессы (см. ниже)

● А потом собрать память

14

Page 15: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

ЗаморозкаЗаморозка

• VM-ка

– Suspend всех процессоров

• Контейнер

– Пройти по дереву (/proc), переловить процессы и остановить их

– Freeze cgroup помогает, но надо отдельно восстанавливать иерархию

15

Page 16: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Сохранение состоянияСохранение состояния

• VM-ка

– Состояние железа

● Дерево, 300K, ~70 объектов

• Контейнер

– Состояние всех объектов

● Граф, 160K, ~1000 объектов

● Не для всех объектов есть адекватный API для чтения

16

Page 17: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Копирование состоянияКопирование состояния

• VM-ка

– Можно читать состояние и сразу передавать

• Контейнер

– Сложно читать и сразу передавать

17

Page 18: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Восстановление состоянияВосстановление состояния

• VM-ка

– Воссоздание памяти, запись состояния в устройства и CPU

• Контейнер

– В ядре: создание большого количества маленьких объектов

– В CRIU: то же самое, но с использованием не всегда удобного API

● Требуется вычисление нетривиальной последовательности действий

18

Page 19: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

РазморозкаРазморозка

• VM-ка

– Resume

• Контейнер

– Синхронизация восстановления всех процессов, чтобы не разморозить кого не следует

раньше времени

– SIGCONT по дереву

– “Оттаять” cgroup

19

Page 20: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Подкачка памяти по сетиПодкачка памяти по сети

• UserfaultFD от Андреа Арканджели

• VM-ка

– Merged into 4.2

• Контейнер

– Несовместная работа монитора и процесса – надо доделывать uffd

20

Page 21: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

РеализацияРеализация

• http://criu.org

[email protected]

• +CriuOrg

• @__criu__

• Github: xemul/criu

21

Page 22: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

РеализацияРеализация

• P.Haul (Пихль)

– http://criu.org/P.Haul

– Миграция с помощью CRIU

22

Page 23: Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов

Всё.

[email protected]

Всё.

[email protected]