Як зробити кластер віртуалок QEMU
Допустимо, є кластер, на якому передбачається запускати віртуальні вашини з використанням qemu-kvm. Звичайно, потрібне якесь загальне сховище, де лежатимуть образи. У разі, якщо хост завис (або здох), це буде виявлено кластерним програмним забезпеченням і всі віртуалки з цього хоста будуть перезапущені. А питання в наступному: адже якщо хост видихнув, то й дані в образи коректно дописати не встигли, так? І при перезапуску віртуалки ми отримаємо ФС зі збоєм, га? Навіть більше, якщо коректно реалізований STONITH, то у разі, припустимо, відмови лише мережного інтерфейсу (прибиральниця відключила кабель) і при збереженні працездатності лінка в SAN, нода буде грубо застрелена в голову.
Як уникнути такої ситуації?
треба розглянути кожну ситуацію зокрема.
1. якщо хост працює, але контрольна мережа впала і до нього не достукатися. у такому разі буде stonith який для віртуалки нічим не відрізнятиметься від повноцінного reset заліза, або не буде нічого, поки адмін сам не відновить мережу (це вже залежить від налаштувань). типовий failover cluster в принципі зводить всі збої до падіння заліза та перезапуску сервісів на іншому хості, та погана та віртуалка яка не здатна пережити reset без серйозних втрат.
2. якщо хост впав, і віртуалку перезапустили на іншому - в принципі вона постраждала не більше ніж якби бігла на тому самому залізі, що впав, плюс автоматичний перезапуск. Коротше суцільний прибуток, HA це все-таки не FT
До речі, #3 це основна причина використання nfs hard mount під віртуалки, щоб проблеми з доступом до дисків одночасно відображалися гіпервізором, а не йшли в буфер.