2. Задачи
• Убрать “зоопарк” серверов
• Гибко и автоматически перераспределять
доступные ресурсы
• Обеспечить отказоустойчивость сервисов
• Упростить процедуры деплоймента и
обслуживания
9. Формализация задачи
• Необходимо уметь распределять и
мигрировать среды между серверами
• С учетом массы параметров
• Быстро
• Независимо от времени суток
10. Задача о рюкзаке
• Эта задача не решается человеком
• Особенно, когда рюкзаков много
12. Задача о рюкзаке
• Алгоритм решения есть:
Wikipedia://Задача_о_ранце
• Нет opensource проекта, решающего эту
задачу для балансировки виртуальных
машин
13. Требования к системе
• Автоматическая балансировка ВМ по
нескольким критериям
• Обеспечение live-миграции ВМ
• Отказоустойчивость
14. Требования к системе
• И главное: возможность добавления и
удаления серверов и/или ВМ “на лету”
15. Iris Jongleur
• Основан на библиотеке libvirt
• Позволяет самостоятельно задавать
параметры балансировки
• Работает в кластере
16. Iris Jongleur
• Поддерживает несколько алгоритмов
балансировки ВМ между серверами
• Борется со split brain и запуском одной ВМ в
двух местах одновременно
17. Параметры балансировки
• Нагрузка на CPU
• Сетевой трафик
• Отсутствие на сервере ВМ с такой же ролью
• Что угодно на ваш вкус
20. Хранилище
• Хранит образы виртуальных машин
• Каждый сервер кластера имеет доступ к
хранилищу (у нас - через SAS network)
• Доступность хранилища обеспечивается через
multipath
24. Варианты балансировки
• Максимальное использование ресурсов на
каждом сервере
• Максимальное задействование серверов в
кластере
25. Работа в кластере
• При старте системы сервера подключаются
друг к другу; все видят всех
• Происходит выбор мастера
• Мастер балансирует ВМ и рассылает команды
остальным серверам на запуск ВМ
27. Работа в кластере
• Сервера следят друг за другом, периодически
посылая ping-запросы
• Если включается/выключается ВМ,
перебалансировка не производится до тех пор,
пока в этом нет необходимости
28. Работа в кластере
• Если отключается мастер, происходят
перевыборы
• Если одновременно выключается много
серверов, система начинает проверку на split
brain.
30. Split brain
• Если сервер теряет подключение более чем к
50%+1 серверу, он гасит запущенные на нем
виртуальные машины
• Остальные сервера, обнаружив недоступность
соседа выжидают заданный таймаут и
распределяют и перезапускают ВМ у себя
31. Split brain
• Для каждой ВМ можно указать свой таймаут
остановки
• Например, для фронтэнда – одну секунду, а
для БД – несколько минут