Разделенный мозг - это компьютерный термин, основанный на аналогии с медицинским синдромом разделенного мозга . Он указывает на несоответствия данных или доступности, возникающие из-за обслуживания двух отдельных наборов данных с перекрытием по объему, либо из-за серверов в структуре сети , либо из-за состояния отказа, основанного на том, что серверы не обмениваются данными и не синхронизируют свои данные друг с другом. Этот последний случай также обычно называют сетевым разделом .
Хотя термин разделенный мозг обычно относится к состоянию ошибки, разделенный DNS (или разделенный горизонтальный DNS ) иногда используется для описания преднамеренной ситуации, когда внутренние и внешние службы DNS для корпоративной сети не обмениваются данными, так что отдельные DNS пространства имен должны администрироваться как для внешних компьютеров, так и для внутренних. Это требует двойного администрирования, и если есть доменное перекрытие в именах компьютеров, существует риск того, что одно и то же полное доменное имя (FQDN) может неоднозначно встречаться в обоих пространствах имен, относящихся к разным IP-адресам компьютеров. [1]
Кластеры с высокой доступностью обычно используют частное сетевое соединение с периодическим сигналом, которое используется для мониторинга работоспособности и статуса каждого узла в кластере. Например, синдром расщепленного мозга может возникнуть, когда все частные ссылки отключаются одновременно, но узлы кластера все еще работают, каждый из которых считает, что работает только один. Затем наборы данных каждого кластера могут случайным образом обслуживать клиентов посредством их собственных «идиосинкразических» обновлений набора данных без какой-либо координации с другими наборами данных. Это может привести к повреждению данных или другим несоответствиям данных, которые могут потребовать вмешательства оператора и очистки.
Подходы к работе с раздвоенным мозгом
Дэвидсон и др. [2], изучив несколько подходов к решению проблемы, классифицируют их как оптимистичные или пессимистические.
Оптимистичный подход просто позволяет разделенным узлам работать как обычно; это обеспечивает более высокий уровень доступности за счет принесения в жертву правильности. После устранения проблемы может потребоваться автоматическое или ручное согласование, чтобы кластер находился в согласованном состоянии. Одной из текущих реализаций этого подхода является Hazelcast , который выполняет автоматическое согласование своего хранилища ключей и значений. [3]
Пессимистические подходы жертвуют доступностью в обмен на последовательность. Как только обнаружено разделение сети, доступ к подразделам ограничивается, чтобы гарантировать согласованность. Типичный подход, описанный Coulouris et al. [4], заключается в использовании подхода, основанного на консенсусе кворума . Это позволяет подразделу с большинством голосов оставаться доступным, в то время как оставшиеся подразделы должны перейти в режим автоматического ограждения . Одной из текущих реализаций этого подхода является реализация наборов реплик MongoDB . [5] И еще одна такая реализация - репликация Galera для MariaDB и MySQL . [6]
Современные коммерческие универсальные кластеры высокой доступности обычно используют комбинацию периодических сетевых подключений между узлами кластера и хранилища свидетелей кворума . Проблема с двухузловыми кластерами заключается в том, что добавление устройства-свидетеля увеличивает стоимость и сложность (даже если оно реализовано в облаке), но без него, если тактовый сигнал не работает, члены кластера не могут определить, какое из них должно быть активным. В таких кластерах (без кворума), если член выходит из строя, даже если члены обычно назначают первичный и вторичный статусы хостам, существует как минимум 50% вероятность того, что двухузловой кластер высокой доступности полностью выйдет из строя, пока не будет обеспечено вмешательство человека. , чтобы предотвратить независимую активацию нескольких элементов, а также прямое противоречие или повреждение данных.
Рекомендации
- ^ Windows Server 2008 Active Directory, Настройка (2-е издание), Холм, Рюст, Рюст, Келлингтон, ISBN 978-0-7356-5193-7
- ^ Дэвидсон, Сьюзен; Гарсия-Молина, Гектор; Скин, Дейл (1985). «Согласованность в многораздельной сети: обзор». ACM Computing Surveys . 17 (3): 341–370. DOI : 10.1145 / 5505.5508 . hdl : 1813/6456 .
- ^ «Документация по Hazelcast» . Проверено 16 февраля 2015 года .
- ^ Кулурис, Джордж; Доллимор, Жан; Киндберг, Тим (2001). Распределенные системы: концепции и дизайн (3-е изд., 1-е, 2-е и 3-е впечатление. Изд.). Харлоу [ua]: Эддисон-Уэсли. ISBN 0201-61918-0.
- ^ «Основы репликации MongoDB» . Проверено 12 декабря 2012 года .
- ^ «Взвешенный кворум в кластере Galera» . Проверено 17 декабря 2015 года .