Глава 5. Управление блокировками

Синхронизация доступа компонентов кластерной инфраструктуры к общим ресурсам осуществляется с помощью блокировок. В кластере Red Hat эти функции выполняет механизм распределенного управления блокировками (DLM, Distributed Lock Manager).
Менеджер блокировок регулирует доступ кластерному хранилищу (например, GFS2), предотвращая несогласованное изменение данных разными узлами.
DLM работает на всех узлах кластера и реализует распределенный механизм управления блокировками. GFS2 использует DLM для синхронизации доступа к файловой системе, CLVM — для синхронизации обновлений томов LVM, а rgmanager — для согласования состояний сервисов.

5.1. Модель блокирования DLM

Модель блокирования DLM предусматривает целый набор режимов блокировки для синхронной и асинхронной обработки запросов. Ресурсы могут блокироваться одним процессом монопольно или несколькими процессами в совместном режиме.
DLM может блокировать файлы, структуры данных, базы данных, исполняемые процедуры и другие объекты. Размер объекта определяет степень детализации — например, блокирование отдельных записей в базе данных обеспечивает более тонкую детализацию по сравнению с блокированием всей базы данных.
DLM поддерживает:
  • 6 режимов блокировки в зависимости от уровня доступа;
  • изменение режимов блокировки;
  • синхронную обработку запросов блокировки;
  • асинхронную обработку;
  • блоки состояния, откуда процессы смогут получать информацию о состоянии заблокированного ресурса.
DLM использует собственные механизмы для согласования блокировок между узлами, их восстановления при сбое узла и переноса блокировок на узел при его подключении к кластеру. Так как DLM интегрируется в существующую кластерную инфраструктуру, он предъявляет к ней собственные требования:
  • Подконтрольный узел должен входить в состав кластера.
  • В кластере должен быть набран необходимый кворум.
  • DLM должен иметь возможность обращаться к узлу по IP-адресу. Обычно для взаимодействия между узлами DLM использует TCP/IP, что накладывает определенные ограничения и требует, чтобы узел имел только один IP-адрес. Чтобы разрешить узлам иметь несколько IP-адресов, для DLM вместо TCP/IP можно настроить SCTP.
При выполнении вышеперечисленных условий DLM сможет работать в любых кластерных окружениях с открытым и закрытым кодом. Однако надо учитывать, что в разных окружениях тестирование DLM проводится в разных объемах, и это тоже может повлиять на принятие окончательного решения.