Я читаю о методах высокой доступности в виртуализации, но все решения, которые я вижу, работают более или менее так же, как более специализированные VRRP - когда хост выходит из строя, виртуальная машина загружается на другом хосте виртуализации. Если хранилище является общим (например, iSCSI), то «та же» виртуальная машина может быть загружена, поэтому для гостевой ОС это выглядит как сбой питания. Но если в ОЗУ хранятся важные данные (например, база данных в памяти), они все равно потеряны.
Тем не менее, можно было бы создать моментальный снимок работающей виртуальной машины с некоторым интервалом (к сожалению, для создания такого моментального снимка требуется много времени, поэтому его нельзя делать каждые, скажем, 10 секунд). Тогда другой хост виртуализации может загрузить такой снимок и продолжить работу ВМ «без перерыва» (плюс минус интервал времени).
Итак, мой вопрос: существуют ли какие-либо решения, которые автоматически «зеркалируют» виртуальные машины таким образом, чтобы после сбоя хоста виртуализации виртуальная машина могла быть «возобновлена» на другом хосте без заметного прерывания? Буквально как RAID1 виртуальных машин. Зеркало, которое полностью синхронизируется на уровне RAM.
1) Разверните кластер VMware vSphere и используйте отказоустойчивость https://www.vmware.com/files/pdf/techpaper/VMware-vSphere6-FT-arch-perf.pdf на ваших виртуальных машинах (как уже упоминалось выше).
2) Разверните кластер XenServer и используйте Remus https://wiki.xenproject.org/wiki/Remus.
Есть некоторые решения, которые могут переключать виртуальные машины без простоев. По крайней мере я знаю о HPE VSA и Starwinds. У них также есть бесплатные версии, так что вы можете их посмотреть.
Впрочем, насчет первого точно не знаю, сам еще не тестировал. Насчет второго - есть опция, в которой вы можете назначить объем ОЗУ на устройстве высокой доступности, и эта ОЗУ также реплицируется на другой узел. И переключение виртуальных машин без перезагрузки. Проверено с кластером Hyper-V.
Серверы не должны «просто выходить из строя», как вы описываете. Большинство людей не беспокоится об этом.
Однако это вариант использования Отказоустойчивость VMware (FT).
Это сделает то, о чем вы просите.
Если требуется асинхронная репликация с небольшой задержкой (как 10 секунд), то решение вида Зерто было бы подходящим.
К сожалению, нет, это невозможно сделать, да и вообще в этом нет необходимости. Даже базы данных в памяти могут выполнять зеркальное отображение и высокую доступность на уровне приложений, в этом случае нет необходимости в зеркальном отображении памяти. Просто запустите несколько экземпляров своей базы данных в памяти и позвольте начать зеркальное отображение! Он отказоустойчив, и вы даже можете выполнять любые обновления и обслуживание без простоев.
К сожалению, ответ нет, по крайней мере, для гипервизоров коммерческого / корпоративного уровня.
Хорошо, я исправлюсь: я никогда не использовал / не читал о Ксен + Ремус, и это кажется довольно интересным.
Я знаю про VMWare FT, но у него такие большие ограничения что я автоматически отбросил это. К счастью, некоторые из этих ограничений были сняты с последней версией VMWare. Однако в сценарии подключения к сети или ввода-вывода грубое влияние на производительность было бы слишком большим, чтобы его можно было терпеть.
В любом случае, из того, что я могу прочитать, оба основаны на концепции пропускной пункт: в основном, базовая виртуальная машина непрерывно мигрирует в реальном времени. Настоящая блокировка / зеркалирование ОЗУ намного дороже: несколько лет назад проект, основанный на Qemu / KVM, пытался сделать то же самое - и от него отказались из-за огромного снижения производительности, которое оно вызвало.