Дмитрий Лазаренко-«Живая миграция и...

48
Live migration

Upload: tanya-denisyuk

Post on 13-Jan-2017

6.920 views

Category:

Education


6 download

TRANSCRIPT

Page 1: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Live migration

Page 2: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Облачная PaaS платформа

• Автоматизированная платформа, позволяющая запускать и масштабировать любое приложение на Java, PHP, Python, Ruby и Node.JS

• SQL и NoSQL СУБД, серверы приложений, балансировщики нагрузки, очереди сообщений

• Высокий уровень автоматизации сложных DevOps-сценариев, автоматическое масштабирование, высокую доступность и отказоустойчивость

• Используем контейнеры Virtuozzo с 2011• Клиенты – хостинг-провайдеры(Datahata) и

Корпоративные пользователи• Конкуренты – OpenShift, CloudFoundry

Jelastic PaaS

Платформа PaaS как коробочный продукт

Page 3: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Конструктор облачных топологий

Page 4: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Вычислительные контейнерыКаждый элемент окружения – отдельный виртуальный контейнер Virtuozzo• Все контейнеры типизированы• Для каждого метатипа (App server/DB, и.т.д.) определен

свой протокол по которому ядро взаимодействует с ним• Для БД можно снять/накатить дамп. Для сервера

приложений – настраивать репликацию при горизонтальном масштабировании

• Все контейнеры динамически оптимизируются для максимальной утилизации ресурсов

• В качестве шаблонов поддерживаются OpenShift Cartridges и Docker

Page 5: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Virtual Machines vs Containers

Page 6: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Умное распределение контейнеровAnti-Affinity• Для высокой

доступности• Для защиты от

неравномерной загрузки серверов

Page 7: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Архитектура развертывания

Cluster

Page 8: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Типичная конфигурация• 10-50 физических серверов

• 32 – 256 GB RAM каждый• На каждом сервере

• 250-2000 контейнеров• Итого в кластере

• 8000 – 64000 контейнеров

Page 9: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Фича: Вертикальное масштабирование

Page 10: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Проблема: Неконтролируемое масштабирование

Server2

vm4

vm2

vm6

vm1 vm3

vm5

Server1

vm3

vm2vm1

• Контейнеры не резервируют RAM при старте (OverProvisioning)

• Контейнеры могут затребовать ресурсов больше, чем сейчас свободно на физической машине

• Облако не статично: количество компонент постоянно меняется

Page 11: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Чего хочется добиться?

• Непрерывная балансировка нагрузки кластера

• Защита от паразитного роста контейнеров

Page 12: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Distributed Resource Scheduler/Smart Live Migration

Page 13: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Умная миграция - Постановка задачи

• Непрерывность работы приложений• Состояние кластера должно действительно

оптимизироваться• Обеспечение HA/Anti-Affinity• Минимальное время• Защита от зацикливания• Защита от сбоев

Page 14: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Архитектура

Resource consumption

analyser

Hardware node

Inventory

Container metrics

historical storage

Migration task queue

List of available hardware

Hardware capabilities

Resource usage

Сontainer inventory

Takes migration tasks from the queue according to the priority

Sends the migration command to PVA

Updates the container locations

How much resources of each type are consumed by each container

Historical metric values to determine trends

Pluggable decision

making engine

Container location Container type Container status Maximum resource

consumption for a container

Container HA placement restrictions

Simple (aggregate estimates with weighs)

Drools planner based

Collects the required data Periodically requests

migrations proposals from decision making engine

Pushes migration tasks to the queue Distributed

coordination engine

Watch for failed migrations

Watch for hardware failures

Fixes errors

`

Migration task worker

Migration task worker

Migration watcherMigration

watcher

Page 15: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

CRIU – Checkpoint/Restore In Userspace

Физическая миграция контейнеров

Page 16: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Возможности миграции в Virtuozzo1. Processes2. Multithreading apps3. Virtual memory4. Opened files5. Shared file descriptors6. TCP connections7. UNIX Sockets

Page 17: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Алгоритмы миграции в Virtuozzo

1. Offline2. Simple Online3. Iterative online4. Lazy online5. Iterative lazy online

Page 18: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Математическая модель• Многомерная оптимизация задачи о

упаковке в контейнеры• RAM, CPU, Storage, LA, Network• упаковка объектов предопределённой формы• в конечное

число контейнеров предопределённой формы, таким способом, чтобы:

• число использованных контейнеров было наименьшим

• или количество или объём объектов были наибольшими

Page 19: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Bin Packaging

Page 20: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Математическая модель - Проблема

NP – полная задача:• Решение можно очень быстро проверить• Нет «Серебрянной пули», которая позволяет найти

оптимальное решение в приемлемое время

Page 21: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Простой алгоритм

1. Ищем наиболее загруженный сервер(RAM в приоритете)

2. Выбираем на нем самый оптимальный для перемещения контейнер:• Больше всего потребляющий RAM, CPU • Меньше всего HDD

3. Проблема – локальные минимумы

Page 22: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

OptaPlanner (ex. Drools Planner)• Employee shift rostering: timetabling nurses, repairmen, • Agenda scheduling: scheduling meetings, appointments• Educational timetabling: scheduling lessons, courses, exams,

conference presentations• Vehicle routing: planning vehicles (trucks, trains, boats,

airplanes) with freight and/or people• Financial optimization: investment portfolio optimization, risk

spreading• Bin packing: filling containers, trucks, ships and storage

warehouses, but also cloud computers nodes

Page 23: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Правила Drools - Жесткие ограничения

1. На Целевом сервере должно хватать ресурсов для перемещения(RAM, HDD)

2. Контейнер не может мигрировать на свой же сервер3. На этой Целевом сервере не должно быть контейнеров

того же окружения того же типа (Anti-affinity)

Page 24: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Правила Drools – Мягкие ограничения

1. Мигрировать наиболее загруженные по памяти и cpu контейнеры

2. Мигрировать наиболее легкие контейнеры (HDD)3. Целевой сервер должен быть наименее нагруженным

по LA и memUsed

Page 25: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Кластеризация - Hazelcast

• Migration Queue• Migration Task Worker• Migration Watcher

Page 26: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Тестирование - Создали симулятор облака

• 10-100 Серверов• 2000-100000 Контейнеров• 31 sec max

• Drools Benchmarking• https://github.com/Cloudslab/cloudsim/

Page 27: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Тестирование – реальный Benchmark

• Контейнер• 32 GB RAM• 1 TB Storage

• «Замерзание»• 0.5-2 секунд• В зависимости от интенсивности записи

Page 28: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Pets (Stateful) vs. Cattle (Stateless)

Высокая доступность и отказоустойчивость

Page 29: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

HA на базе Микросервисов (Stateless)

Page 30: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

HA между несколькими ЦОД• Anycast IP – дорого и привязано к

конкретным ЦОД• Global IP/Failover IP – доступно у некоторых

крупных игроков• Global DNS – можно реализовать где угодно

Page 31: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

HA между несколькими ЦОД• Глобальное

неизменное DNS-имя, независимо от ЦОД

• Уникальное DNS-имя для адресации внутри ЦОД

Page 32: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

HA и Гео-балансировка

Page 33: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Живая миграция между ЦОД

• «Замерзание» 2-9 секунд

Page 34: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Эвакуация в другой ЦОД

Page 35: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Отказоустойчивость для Stateful приложений

1. Как гарантированно сохранить и восстановить самые важные данные?

2. Что делать, если выйдет из строя 1,2,3…N серверов?

3. Что делать, если выпадет одна или несколько стоек?

4. Возможна ли отказоустойчивость, если у меня нет денег на SAN, который стоит как чугунный мост?

Page 36: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Решение1. Software-defined storage,

интегрированный с системой виртуализации

2. Обеспечивает непрерывную репликацию данных между физическими серверами

3. Обеспечивает сборку всех виртуальных машин / контейнеров в случае падения 1 или более физических серверов

Page 37: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Преимущества

1. Работает поверх 1Gbps Ethernet2. Работает на commodity – железе3. Обеспечивает скорость, сравнимую с

SAN, особенно на чтение4. Поддерживает geo-распределенную

конфигурацию5. Можно использовать объектное

хранилище. Совместимо с API S3

Page 38: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Недостатки1. Полезный объем сокращается в 3

раза (как минимум)2. Сеть – bottleneck. Нужна выделенная

сеть для данных с неблокирующим switch

3. Сетевые задержки критичны (8 сек. максимум)

4. Скорость записи – bottleneck, поэтому нужны небольшие SSD для кэширования

Page 39: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Компоненты

1. Сервисы хранения данных (chunks)2. Сервисы метаданных - арбитры3. Клиенты (система виртуализации)

Page 40: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Роли

Выделенные роли Совмещаемые роли

Page 41: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Архитектура развертывания в ЦОД

Неблокирующий switch

Page 42: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Уровни репликации

Page 43: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

1. Необходимо нечетное количество сервисов метаданных для арбитража

2. Кластер из 3 серверов переживает потерю 1 сервера

3. Кластер из 5 серверов переживает потерю 2 серверов, и.т.д.

Выживаемость

Page 44: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Особенности развертывания1. Система заточена по умолчанию

только для работы в L22. Для работы в L3 пришлось

допиливать1. Актуализацию IP-адресов в новом

сегменте2. Актуализацию DNS-имен

Page 45: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

1 ЦОД. Потеря одного сервераRegion A

10.0.0.0/16

Local Replica Set

HW1

CT1

CT2

CT3

HW2

CT3

HW3

CT1

CT2

Page 46: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

2 ЦОД с L3. Потеря нескольких серверов

Page 47: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Выводы1. Overprovisioning контейнеров можно

вылечить с помощью DRS, но нужна Live Migration (нет в LCX)

2. Live Migration можно использовать для построение гибридного облака на базе контейнеров

3. Для HA между ЦОД лучше всего подходит ориентация на DNS, а не на IP

4. SDS помогает автоматизировать DR для контейнеров с важными данными

Page 48: Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридном облаке»

Dmitry [email protected]

@lazarenkod