Модификации kvm для работы в кластере, Андрей Шетухин

35
KVM в кластере Андрей Шетухин

Upload: ontico

Post on 15-Jun-2015

647 views

Category:

Internet


9 download

DESCRIPTION

Доклад Андрея Шетухина на HighLoad++ 2014.

TRANSCRIPT

Page 1: Модификации KVM для работы в кластере, Андрей Шетухин

KVM в кластереАндрей Шетухин

Page 2: Модификации KVM для работы в кластере, Андрей Шетухин

Задачи• Убрать “зоопарк” серверов

• Гибко и автоматически перераспределять доступные ресурсы

• Обеспечить отказоустойчивость сервисов

• Упростить процедуры деплоймента и обслуживания

Page 3: Модификации KVM для работы в кластере, Андрей Шетухин

Убрать “зоопарк” серверов

Page 4: Модификации KVM для работы в кластере, Андрей Шетухин

Убрать “зоопарк” серверов

Page 5: Модификации KVM для работы в кластере, Андрей Шетухин

Очевидное решение• Закупать одинаковые сервера ✔

• Виртуализировать сервисы

• Распределить виртуальные среды по серверам

Page 6: Модификации KVM для работы в кластере, Андрей Шетухин

Очевидное решение• Закупать одинаковые сервера ✔

• Виртуализировать сервисы ✔

• Распределить виртуальные среды по серверам

Page 7: Модификации KVM для работы в кластере, Андрей Шетухин

Очевидное решение• Закупать одинаковые сервера ✔

• Виртуализировать сервисы ✔

• Распределить виртуальные среды по серверам

Page 8: Модификации KVM для работы в кластере, Андрей Шетухин

Примерно так

Page 9: Модификации KVM для работы в кластере, Андрей Шетухин

Формализация задачи• Необходимо уметь распределять и

мигрировать среды между серверами

• С учетом массы параметров

• Быстро

• Независимо от времени суток

Page 10: Модификации KVM для работы в кластере, Андрей Шетухин

Задача о рюкзаке• Эта задача не решается человеком

• Особенно, когда рюкзаков много

Page 11: Модификации KVM для работы в кластере, Андрей Шетухин

Пичаль...

Page 12: Модификации KVM для работы в кластере, Андрей Шетухин

Задача о рюкзаке• Алгоритм решения есть:

Wikipedia://Задача_о_ранце

• Нет opensource проекта, решающего эту задачу для балансировки виртуальных машин

Page 13: Модификации KVM для работы в кластере, Андрей Шетухин

Требования к системе• Автоматическая балансировка ВМ по

нескольким критериям

• Обеспечение live-миграции ВМ

• Отказоустойчивость

Page 14: Модификации KVM для работы в кластере, Андрей Шетухин

Требования к системе• И главное: возможность добавления и

удаления серверов и/или ВМ “на лету”

Page 15: Модификации KVM для работы в кластере, Андрей Шетухин

Iris Jongleur• Основан на библиотеке libvirt

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

• Работает в кластере

Page 16: Модификации KVM для работы в кластере, Андрей Шетухин

Iris Jongleur• Поддерживает несколько алгоритмов

балансировки ВМ между серверами

• Борется со split brain и запуском одной ВМ в двух местах одновременно

Page 17: Модификации KVM для работы в кластере, Андрей Шетухин

Параметры балансировки• Нагрузка на CPU

• Сетевой трафик

• Отсутствие на сервере ВМ с такой же ролью

• Что угодно на ваш вкус

Page 18: Модификации KVM для работы в кластере, Андрей Шетухин

Компоненты• Хранилище образов ВМ

• Сервера с KVM

• Система балансировки Iris Jongleur

Page 19: Модификации KVM для работы в кластере, Андрей Шетухин

Хранилище

Page 20: Модификации KVM для работы в кластере, Андрей Шетухин

Хранилище• Хранит образы виртуальных машин

• Каждый сервер кластера имеет доступ к хранилищу (у нас - через SAS network)

• Доступность хранилища обеспечивается через multipath

Page 21: Модификации KVM для работы в кластере, Андрей Шетухин

Система балансировки

Page 22: Модификации KVM для работы в кластере, Андрей Шетухин

Система балансировки• Следит за серверами кластера

• Распределяет ВМ между живыми серверами

• Обеспечивает Live-миграцию и перезапуск ВМ

Page 23: Модификации KVM для работы в кластере, Андрей Шетухин

Варианты балансировки

Page 24: Модификации KVM для работы в кластере, Андрей Шетухин

Варианты балансировки• Максимальное использование ресурсов

на каждом сервере

• Максимальное задействование серверов в кластере

Page 25: Модификации KVM для работы в кластере, Андрей Шетухин

Работа в кластере• При старте системы сервера

подключаются друг к другу; все видят всех

• Происходит выбор мастера

• Мастер балансирует ВМ и рассылает команды остальным серверам на запуск ВМ

Page 26: Модификации KVM для работы в кластере, Андрей Шетухин

Работа в кластере

Page 27: Модификации KVM для работы в кластере, Андрей Шетухин

Работа в кластере• Сервера следят друг за другом,

периодически посылая ping-запросы

• Если включается/выключается ВМ, перебалансировка не производится до тех пор, пока в этом нет необходимости

Page 28: Модификации KVM для работы в кластере, Андрей Шетухин

Работа в кластере• Если отключается мастер, происходят

перевыборы

• Если одновременно выключается много серверов, система начинает проверку на split brain.

Page 29: Модификации KVM для работы в кластере, Андрей Шетухин

Split brain

Page 30: Модификации KVM для работы в кластере, Андрей Шетухин

Split brain• Если сервер теряет подключение более

чем к 50%+1 серверу, он гасит запущенные на нем виртуальные машины

• Остальные сервера, обнаружив недоступность соседа выжидают заданный таймаут и распределяют и перезапускают ВМ у себя

Page 31: Модификации KVM для работы в кластере, Андрей Шетухин

Split brain• Для каждой ВМ можно указать свой

таймаут остановки

• Например, для фронтэнда – одну секунду, а для БД – несколько минут

Page 32: Модификации KVM для работы в кластере, Андрей Шетухин

Цифры• Полная ребалансировка по 5 критериям:

• 10 серверов, 50 ВМ – 0.01 cек• 10 серверов, 100 ВМ – 0.08 сек• 20 серверов, 100 ВМ – 0.13 сек• 20 серверов, 200 ВМ – 0.9 cек

• Скорость добавления ВМ – миллисекунды

Page 33: Модификации KVM для работы в кластере, Андрей Шетухин

Вопросы?

Page 34: Модификации KVM для работы в кластере, Андрей Шетухин

Ответы! Да, это Opensource.

Да, скоро на Github.

Да, гостевая система любая.

Нет, на FreeBSD не работает. И не будет.

Page 35: Модификации KVM для работы в кластере, Андрей Шетухин

А теперь – вопросы!