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 не работает. И не будет.
А теперь – вопросы!

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

  • 1.
    KVM в кластере Андрей Шетухин
  • 2.
    Задачи • Убрать“зоопарк” серверов • Гибко и автоматически перераспределять доступные ресурсы • Обеспечить отказоустойчивость сервисов • Упростить процедуры деплоймента и обслуживания
  • 3.
  • 4.
  • 5.
    Очевидное решение •Закупать одинаковые сервера ✔ • Виртуализировать сервисы • Распределить виртуальные среды по серверам
  • 6.
    Очевидное решение •Закупать одинаковые сервера ✔ • Виртуализировать сервисы ✔ • Распределить виртуальные среды по серверам
  • 7.
    Очевидное решение •Закупать одинаковые сервера ✔ • Виртуализировать сервисы ✔ • Распределить виртуальные среды по серверам
  • 8.
  • 9.
    Формализация задачи •Необходимо уметь распределять и мигрировать среды между серверами • С учетом массы параметров • Быстро • Независимо от времени суток
  • 10.
    Задача о рюкзаке • Эта задача не решается человеком • Особенно, когда рюкзаков много
  • 11.
  • 12.
    Задача о рюкзаке • Алгоритм решения есть: Wikipedia://Задача_о_ранце • Нет opensource проекта, решающего эту задачу для балансировки виртуальных машин
  • 13.
    Требования к системе • Автоматическая балансировка ВМ по нескольким критериям • Обеспечение live-миграции ВМ • Отказоустойчивость
  • 14.
    Требования к системе • И главное: возможность добавления и удаления серверов и/или ВМ “на лету”
  • 15.
    Iris Jongleur •Основан на библиотеке libvirt • Позволяет самостоятельно задавать параметры балансировки • Работает в кластере
  • 16.
    Iris Jongleur •Поддерживает несколько алгоритмов балансировки ВМ между серверами • Борется со split brain и запуском одной ВМ в двух местах одновременно
  • 17.
    Параметры балансировки •Нагрузка на CPU • Сетевой трафик • Отсутствие на сервере ВМ с такой же ролью • Что угодно на ваш вкус
  • 18.
    Компоненты • Хранилищеобразов ВМ • Сервера с KVM • Система балансировки Iris Jongleur
  • 19.
  • 20.
    Хранилище • Хранитобразы виртуальных машин • Каждый сервер кластера имеет доступ к хранилищу (у нас - через SAS network) • Доступность хранилища обеспечивается через multipath
  • 21.
  • 22.
    Система балансировки •Следит за серверами кластера • Распределяет ВМ между живыми серверами • Обеспечивает Live-миграцию и перезапуск ВМ
  • 23.
  • 24.
    Варианты балансировки •Максимальное использование ресурсов на каждом сервере • Максимальное задействование серверов в кластере
  • 25.
    Работа в кластере • При старте системы сервера подключаются друг к другу; все видят всех • Происходит выбор мастера • Мастер балансирует ВМ и рассылает команды остальным серверам на запуск ВМ
  • 26.
  • 27.
    Работа в кластере • Сервера следят друг за другом, периодически посылая ping-запросы • Если включается/выключается ВМ, перебалансировка не производится до тех пор, пока в этом нет необходимости
  • 28.
    Работа в кластере • Если отключается мастер, происходят перевыборы • Если одновременно выключается много серверов, система начинает проверку на split brain.
  • 29.
  • 30.
    Split brain •Если сервер теряет подключение более чем к 50%+1 серверу, он гасит запущенные на нем виртуальные машины • Остальные сервера, обнаружив недоступность соседа выжидают заданный таймаут и распределяют и перезапускают ВМ у себя
  • 31.
    Split brain •Для каждой ВМ можно указать свой таймаут остановки • Например, для фронтэнда – одну секунду, а для БД – несколько минут
  • 32.
    Цифры • Полнаяребалансировка по 5 критериям: • 10 серверов, 50 ВМ – 0.01 cек • 10 серверов, 100 ВМ – 0.08 сек • 20 серверов, 100 ВМ – 0.13 сек • 20 серверов, 200 ВМ – 0.9 cек • Скорость добавления ВМ – миллисекунды
  • 33.
  • 34.
    Ответы!  Да,это Opensource.  Да, скоро на Github.  Да, гостевая система любая.  Нет, на FreeBSD не работает. И не будет.
  • 35.
    А теперь –вопросы!