Особенности применения ВМ для кластера
В случае применения виртуальных машин в целях построения отказоустойчивых кластеров на базе Pacemaker&Corosync важно понимать ряд особенностей. О них и поговорим.
Итак, о каких особенностях идет речь:
- fsync. Отказоустойчивость ряда систем управления базами данных (той же PostgreSQL) существенно завязана на возможность выполнить синхронизацию записи в постоянное хранилище (диск) и, соответственно, на корректную работу этого механизма. Различные гипервизоры по-разному реализуют кэширование дисковых операций, причем важно понимать, что некоторые из них не обеспечивают своевременный сброс данных из кэша в систему хранения;
- realtime corosync. Процесс corosync в кластере, работающем на основе Pacemaker, отвечает за обнаружение сбоев в узлах кластера. Чтобы, к примеру, этот процесс работал правильно, важно, чтобы операционная система гарантированно планировала его выполнение на процессоре (операционная система выделяет процессорное время). Также, в связи с вышеописанным, данный процесс имеет RT-приоритет (realtime). Если ОС виртуализирована, то в ней отсутствует возможность гарантировать такое планирование процессов, а это уже, в свою очередь, становится причиной ложного срабатывания кластерного программного обеспечения;
- fencing. Когда среда виртуализирована, то механизм фенсинга усложняется, так как он становится многоуровневым: на 1-ом уровне надо реализовать выключение ВМ через гипервизор, на 2-ом — выключение всего гипервизора (2-ой уровень срабатывает, если на 1-ом уровне фенсинга он корректно не отработал). Однако следует признать, что у некоторых гипервизоров возможность фенсинга отсутствует. Собственно говоря, в том числе и поэтому ВМ при построении отказоустойчивых кластеров рекомендуется не применять.
По материалам блога https://habr.com/ru/company/postgrespro/blog/.