stringtranslate.com

Сердцебиение (вычисления)

В информатике тактовый сигнал — это периодический сигнал, генерируемый аппаратным или программным обеспечением для указания на нормальную работу или для синхронизации других частей компьютерной системы . [1] [2] Механизм тактового сигнала — один из распространенных методов в критически важных системах для обеспечения высокой доступности и отказоустойчивости сетевых служб путем обнаружения сетевых или системных сбоев узлов или демонов , принадлежащих сетевому кластеру , администрируемому главным сервером , с целью автоматической адаптации и перебалансировки системы путем использования оставшихся избыточных узлов в кластере для принятия на себя нагрузки отказавших узлов для предоставления постоянных услуг. [3] [1] Обычно тактовый сигнал отправляется между машинами с регулярным интервалом в порядке секунд; сообщение тактового сигнала . [4] Если конечная точка не получает тактовый сигнал в течение некоторого времени — обычно нескольких интервалов тактового сигнала — предполагается, что машина, которая должна была отправить тактовый сигнал, вышла из строя. [5] Сообщения Heartbeat обычно отправляются непрерывно на периодической или повторяющейся основе с момента запуска отправителя до его отключения. Когда пункт назначения обнаруживает отсутствие сообщений Heartbeat в течение ожидаемого периода прибытия, пункт назначения может определить, что отправитель вышел из строя, отключился или вообще больше не доступен.

Протокол сердцебиения

Протокол heartbeat обычно используется для согласования и мониторинга доступности ресурса, такого как плавающий IP-адрес , а процедура включает отправку сетевых пакетов всем узлам в кластере для проверки его достижимости . [3] Обычно, когда heartbeat запускается на машине, он выполняет процесс выборов с другими машинами в сети heartbeat, чтобы определить, какая машина, если таковая имеется, владеет ресурсом. В сетях heartbeat из более чем двух машин важно учитывать разделение, когда две половины сети могут функционировать, но не иметь возможности общаться друг с другом. В такой ситуации важно, чтобы ресурс принадлежал только одной машине, а не одной машине в каждом разделе.

Поскольку heartbeat предназначен для использования для индикации работоспособности машины, важно, чтобы протокол heartbeat и транспорт, на котором он работает, были максимально надежными. Вызвать отказ из-за ложной тревоги может быть крайне нежелательно, в зависимости от ресурса. Также важно быстро реагировать на фактический сбой, что еще больше подтверждает надежность сообщений heartbeat. По этой причине часто желательно, чтобы heartbeat работал более чем на одном транспорте; например, сегмент Ethernet, использующий UDP / IP , и последовательный канал.

«Принадлежность к кластеру» узла — это свойство сетевой достижимости : если мастер может взаимодействовать с узлом , он считается членом кластера и «мертвым» в противном случае. [6] Программа heartbeat в целом состоит из различных подсистем : [7]

Сообщения Heartbeat отправляются периодически с помощью таких методов, как широковещательная или многоадресная рассылка в более крупных кластерах. [6] Поскольку CM имеют транзакции по всему кластеру, наиболее распространенной схемой является отправка сообщений Heartbeat всем узлам и « ожидание » ответов в неблокируемой манере. [8] Поскольку сообщения Heartbeat или Keepalive составляют подавляющее большинство сообщений управления кластером, не связанных с приложениями, которые также отправляются всем членам кластера, основные критические системы также включают не- IP протоколы, такие как последовательные порты, для доставки Heartbeat. [9]

Проектирование и реализация

Каждый CM на главном сервере поддерживает конечный автомат с тремя состояниями для каждого узла, которым он управляет: Down, Init и Alive. [10] Всякий раз, когда присоединяется новый узел, CM изменяет состояние узла с Down на Init и транслирует «сообщение о загрузке», которое узел получает и выполняет набор процедур запуска. Затем он отвечает сообщением подтверждения, затем CM включает узел в качестве члена кластера и переводит состояние узла из Init в Alive. Каждый узел в состоянии Alive будет получать периодическое широковещательное сообщение heartbeat от подсистемы HS и ожидает подтверждения в течение определенного периода времени . Если CM не получил обратно сообщение подтверждения heartbeat, узел считается недоступным , и CM выполняет для этого узла переход из Alive в Down. [11] Процедуры или сценарии для запуска и действия, которые необходимо выполнить между каждым переходом состояния, являются деталями реализации системы.

Сеть Heartbeat

Heartbeat-сеть — это частная сеть , которая используется только узлами в кластере и недоступна извне кластера. Она используется узлами кластера для мониторинга состояния каждого узла и обмена сообщениями, необходимыми для поддержания работы кластера. Метод heartbeat использует характер FIFO сигналов, отправляемых по сети. Удостоверяясь, что все сообщения были получены, система гарантирует, что события могут быть правильно упорядочены. [12]

В этом протоколе связи каждый узел отправляет обратно сообщение в заданном интервале, скажем, delta , фактически подтверждая, что он жив и имеет сердцебиение. Эти сообщения рассматриваются как контрольные сообщения, которые помогают определить, что сеть не содержит задержанных сообщений. Узел-получатель, называемый «sync», поддерживает упорядоченный список полученных сообщений. Как только сообщение с меткой времени позже заданного отмеченного времени получено от каждого узла, система определяет, что все сообщения были получены, поскольку свойство FIFO гарантирует, что сообщения упорядочены. [13]

В общем, сложно выбрать дельту, которая будет оптимальной для всех приложений. Если дельта слишком мала, это потребует слишком много накладных расходов, а если она велика, это приведет к снижению производительности, поскольку все будет ждать следующего сигнала heartbeat. [14]

Смотрите также

Примечания

  1. ^ ab Hou & Huang 2003, стр. 1.
  2. ^ "Определение сердцебиения". Энциклопедия pcmag.com . Получено 7 октября 2020 г.
  3. ^ Робертсон 2000, стр. 1.
  4. ^ US 4710926, Дональд В. Браун, Джеймс В. Лет, Джеймс Э. Вандендорп, «Устранение неисправностей в распределенной системе обработки», опубликовано 1 декабря 1987 г. 
  5. ^ Кавазое Агилера, Маркос; Чен, Вэй; Туег, Сэм (1997). "Heartbeat: детектор сбоев без тайм-аутов для надежной связи" (PDF) . Распределенные алгоритмы . Берлин, Гейдельберг: Springer Berlin Heidelberg. стр. 126–140. doi :10.1007/bfb0030680. hdl :1813/7286. ISBN 978-3-540-63575-8. ISSN  0302-9743.
  6. ^ Робертсон 2000, стр. 2.
  7. ^ Робертсон 2000, стр. 1-2.
  8. ^ Робертсон 2000, стр. 2-3.
  9. ^ Робертсон 2000, стр. 5.
  10. ^ Ли, Ю и Ву 2009, стр. 2.
  11. ^ Ли, Ю и Ву 2009, стр. 2-3.
  12. ^ Николетсеас 2011, стр. 304.
  13. ^ Nikoletseas 2011, с. 304-305.
  14. ^ Николетсеас 2011, стр. 306.

Ссылки