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