Модификации kvm для работы в кластере, Андрей Шетухин
DESCRIPTION
Доклад Андрея Шетухина на HighLoad++ 2014.TRANSCRIPT
KVM в кластереАндрей Шетухин
Задачи• Убрать “зоопарк” серверов
• Гибко и автоматически перераспределять доступные ресурсы
• Обеспечить отказоустойчивость сервисов
• Упростить процедуры деплоймента и обслуживания
Убрать “зоопарк” серверов
Убрать “зоопарк” серверов
Очевидное решение• Закупать одинаковые сервера ✔
• Виртуализировать сервисы
• Распределить виртуальные среды по серверам
Очевидное решение• Закупать одинаковые сервера ✔
• Виртуализировать сервисы ✔
• Распределить виртуальные среды по серверам
Очевидное решение• Закупать одинаковые сервера ✔
• Виртуализировать сервисы ✔
• Распределить виртуальные среды по серверам
Примерно так
Формализация задачи• Необходимо уметь распределять и
мигрировать среды между серверами
• С учетом массы параметров
• Быстро
• Независимо от времени суток
Задача о рюкзаке• Эта задача не решается человеком
• Особенно, когда рюкзаков много
Пичаль...
Задача о рюкзаке• Алгоритм решения есть:
Wikipedia://Задача_о_ранце
• Нет opensource проекта, решающего эту задачу для балансировки виртуальных машин
Требования к системе• Автоматическая балансировка ВМ по
нескольким критериям
• Обеспечение live-миграции ВМ
• Отказоустойчивость
Требования к системе• И главное: возможность добавления и
удаления серверов и/или ВМ “на лету”
Iris Jongleur• Основан на библиотеке libvirt
• Позволяет самостоятельно задавать параметры балансировки
• Работает в кластере
Iris Jongleur• Поддерживает несколько алгоритмов
балансировки ВМ между серверами
• Борется со split brain и запуском одной ВМ в двух местах одновременно
Параметры балансировки• Нагрузка на CPU
• Сетевой трафик
• Отсутствие на сервере ВМ с такой же ролью
• Что угодно на ваш вкус
Компоненты• Хранилище образов ВМ
• Сервера с KVM
• Система балансировки Iris Jongleur
Хранилище
Хранилище• Хранит образы виртуальных машин
• Каждый сервер кластера имеет доступ к хранилищу (у нас - через SAS network)
• Доступность хранилища обеспечивается через multipath
Система балансировки
Система балансировки• Следит за серверами кластера
• Распределяет ВМ между живыми серверами
• Обеспечивает Live-миграцию и перезапуск ВМ
Варианты балансировки
Варианты балансировки• Максимальное использование ресурсов
на каждом сервере
• Максимальное задействование серверов в кластере
Работа в кластере• При старте системы сервера
подключаются друг к другу; все видят всех
• Происходит выбор мастера
• Мастер балансирует ВМ и рассылает команды остальным серверам на запуск ВМ
Работа в кластере
Работа в кластере• Сервера следят друг за другом,
периодически посылая ping-запросы
• Если включается/выключается ВМ, перебалансировка не производится до тех пор, пока в этом нет необходимости
Работа в кластере• Если отключается мастер, происходят
перевыборы
• Если одновременно выключается много серверов, система начинает проверку на split brain.
Split brain
Split brain• Если сервер теряет подключение более
чем к 50%+1 серверу, он гасит запущенные на нем виртуальные машины
• Остальные сервера, обнаружив недоступность соседа выжидают заданный таймаут и распределяют и перезапускают ВМ у себя
Split brain• Для каждой ВМ можно указать свой
таймаут остановки
• Например, для фронтэнда – одну секунду, а для БД – несколько минут
Цифры• Полная ребалансировка по 5 критериям:
• 10 серверов, 50 ВМ – 0.01 cек• 10 серверов, 100 ВМ – 0.08 сек• 20 серверов, 100 ВМ – 0.13 сек• 20 серверов, 200 ВМ – 0.9 cек
• Скорость добавления ВМ – миллисекунды
Вопросы?
Ответы! Да, это Opensource.
Да, скоро на Github.
Да, гостевая система любая.
Нет, на FreeBSD не работает. И не будет.
А теперь – вопросы!