하트비트(컴퓨터)

Heartbeat (computing)

컴퓨터 과학에서, 하트비트는 정상적인 작동을 나타내거나 컴퓨터 시스템의 다른 부분을 동기화하기 위해 하드웨어 또는 소프트웨어에 의해 생성되는 주기적인 신호다.[1][2]하트비트 메커니즘은 시스템의 자동 적응 및 재조정 목적으로 마스터 서버가 관리하는 네트워크 클러스터에 속하는 노드 또는 데몬네트워크 또는 시스템 장애를 감지하여 네트워크 서비스높은 가용성내결함성을 제공하는 미션 크리티컬 시스템의 일반적인 기술 중 하나이다.클러스터의 나머지 중복 노드를 사용하여 지속적인 서비스를 제공하기 위해 실패한 노드의 로드를 인계받음으로써 [3][1]줄임말보통 심박수는 초의 순서로 일정한 간격으로 기계들 사이에 보내진다; 심장박동 메시지.[4]엔드포인트가 한 시간 동안(일반적으로 몇 개의 하트비트 간격) 하트비트를 수신하지 않는 경우 하트비트를 전송했어야 하는 시스템이 실패한 것으로 가정한다.[5]하트비트 메시지는 일반적으로 발신자의 시작부터 발신자의 종료까지 주기적 또는 반복적으로 전송된다.목적지가 예상 도착 기간 동안 하트비트 메시지 부족을 식별하는 경우, 목적지는 발신자가 실패, 종료 또는 일반적으로 더 이상 사용할 수 없다고 판단할 수 있다.

하트비트 프로토콜

일반적으로 하트비트 프로토콜은 유동 IP 주소와 같은 자원의 가용성을 협상하고 모니터링하는 데 사용되며, 이 절차에는 클러스터의 모든 노드에 네트워크 패킷을 전송하여 도달 가능성을 검증하는 과정이 포함된다.[3]일반적으로 시스템에서 하트비트가 시작되면 하트비트 네트워크의 다른 시스템으로 선택 프로세스를 수행하여 리소스를 소유한 시스템(있는 경우)을 결정한다.세 대 이상의 기계의 하트비트 네트워크에서, 네트워크의 두 반쪽이 기능할 수 있지만 서로 통신할 수 없는 파티셔닝을 고려하는 것이 중요하다.이와 같은 상황에서는 자원이 각 파티션에 있는 하나의 컴퓨터가 아니라 하나의 컴퓨터만이 소유하는 것이 중요하다.

심박동은 기계의 상태를 나타내기 위해 사용되기 때문에, 심박 프로토콜과 그것이 실행되는 전송은 가능한 한 신뢰할 수 있는 것이 중요하다.잘못된 경보로 인해 페일오버를 발생시키는 것은 자원에 따라 매우 바람직하지 않을 수 있다.또한 실제 장애에 신속하게 대응하여 심장 박동 메시지의 신뢰성을 더욱 공고히 하는 것이 중요하다.이러한 이유로, 예를 들어 UDP/IP를 사용하는 이더넷 세그먼트와 직렬 링크와 같은 두 개 이상의 전송에서 하트비트가 실행되는 것이 바람직하다.

노드의 "클러스터 멤버십"은 네트워크에 도달할 수 있는 속성이다. 마스터가 노드 x와) 통신할 수 있으면 클러스터의 멤버로 간주되고 그렇지 않으면 "죽음"으로 간주된다.[6]헤드비트 프로그램은 전체적으로 다양한 서브시스템으로 구성된다.[7]

  • Heartbeat Subsystem(HS): 일련의 keepalive 또는 "hear-beat messages"를 통해 클러스터 내에서 노드의 존재를 모니터링하는 하위 시스템.
  • 클러스터 관리자(CM): 클러스터 내의 하위 시스템(일반적으로 마스터 서버)으로, "클러스터 구성원"을 추적하고 어떤 노드에 어떤 리소스가 있는지 기록한다.
  • 클러스터 전환(CT): 노드가 클러스터에 가입하거나 탈퇴할 때, 이 하위 시스템은 이벤트를 트리거하여 로드를 분산시키기 위해 마스터를 재조정하고 재구성할 목적으로 이러한 발생을 추적할 책임이 있다.

하트비트 메시지는 더 큰 클러스터의 브로드캐스트멀티캐스트와 같은 기법을 통해 정기적으로 전송된다.[6]CM은 클러스터 전체에 걸쳐 트랜잭션이 있기 때문에 가장 일반적인 패턴은 모든 노드에 하트비트 메시지를 보내고 비차단 방식으로 응답을 "대기"하는 것이다.[8]하트비트 또는 지속성 메시지가 비응용 프로그램 관련 클러스터 제어 메시지(클러스터의 모든 구성원에게도 전달됨)의 압도적 다수를 차지하므로 주요 중요 시스템에도 하트비트를 전달하기 위해 직렬 포트와 같은 비 IP 프로토콜이 포함된다.[9]

설계 및 구현

마스터 서버의 모든 CM은 자신이 관리하는 각 노드(Down, Init, Alive)에 대해 세 개의 상태를 가진 유한 상태 기계를 유지한다.[10]새 노드가 가입할 때마다 CM은 노드의 상태를 다운에서 초기화(Init)로 변경하고 "부팅 메시지"를 브로드캐스트하며, 노드는 실행된 시동 절차 세트를 수신한다.그런 다음 CM은 수신확인 메시지로 응답하며, CM은 노드를 클러스터의 멤버로 포함하고 노드의 상태를 Init에서 Alive로 전환한다.Alive 상태의 모든 노드는 HS 하위 시스템으로부터 주기적인 브로드캐스트 하트비트 메시지를 수신하고 시간 초과 범위 내에서 다시 수신할 것으로 예상한다.CM이 확인 하트비트 메시지를 다시 수신하지 못한 경우 노드를 사용할 수 없는 것으로 간주되고 CM에 의해 해당 노드에 대해 활성에서 다운으로 상태 전환이 수행된다.[11]실행할 절차나 스크립트 및 각 상태 전환 간에 취할 조치는 시스템의 구현 세부사항이다.

하트비트 네트워크

하트비트 네트워크는 클러스터의 노드만 공유하는 전용 네트워크로, 클러스터 외부에서 액세스할 수 없다.클러스터 노드에서 각 노드의 상태를 모니터링하고 클러스터 작동 유지에 필요한 메시지를 서로 통신하기 위해 사용한다.하트비트 방법은 네트워크를 통해 전송되는 신호의 FIFO 특성을 사용한다.시스템은 모든 메시지가 수신되었는지 확인함으로써 이벤트가 올바르게 정렬될 수 있도록 보장한다.[12]

통신 프로토콜에서 모든 노드는 델타라고 하는 주어진 간격으로 메시지를 다시 보내는데, 사실상 그것이 살아 있고 심장 박동이 있다는 것을 확인한다.이러한 메시지는 네트워크에서 지연된 메시지를 포함하지 않는지 결정하는 데 도움이 되는 제어 메시지로 간주된다."동기"라고 불리는 수신기 노드는 수신된 메시지의 순서 목록을 유지한다.지정된 표시 시간보다 늦은 타임스탬프가 있는 메시지가 모든 노드에서 수신되면, FIFO 속성이 메시지 순서를 보장하므로 시스템은 모든 메시지가 수신되었다고 판단한다.[13]

일반적으로 모든 애플리케이션에 최적인 델타를 선택하기는 어렵다.델타가 너무 작으면 오버헤드가 너무 많이 필요하며, 클 경우 모든 것이 다음 하트비트 신호를 기다리기 때문에 성능이 저하된다.[14]

참고 항목

메모들

  1. ^ a b Hou & Huang 2003, 페이지 1.
  2. ^ "Definition of Heartbeat". pcmag.com Encyclopedia. Retrieved 7 October 2020.
  3. ^ a b 로버트슨 2000, 페이지 1
  4. ^ US 4710926, Donald W. Brown, James W. Leth, James E. Vandendorpe, "분산 처리 시스템의 오류 복구" 1987-12-01 출판
  5. ^ Kawazoe Aguilera, Marcos; Chen, Wei; Toueg, Sam (1997). "Heartbeat: A timeout-free failure detector for quiescent reliable communication" (PDF). Distributed Algorithms. Berlin, Heidelberg: Springer Berlin Heidelberg. pp. 126–140. doi:10.1007/bfb0030680. ISBN 978-3-540-63575-8. ISSN 0302-9743.
  6. ^ a b 로버슨 2000, 페이지 2
  7. ^ 로버슨 2000쪽 1-2페이지
  8. ^ 로버슨 2000, 페이지 2-3.
  9. ^ 로버슨 2000, 페이지 5
  10. ^ Li, Yu & Wu 2009, 페이지 2.
  11. ^ Li, Yu & Wu 2009, 페이지 2-3.
  12. ^ 니코렛세아스 2011, 페이지 304.
  13. ^ 니코렛세아스 2011 페이지 304-305.
  14. ^ 니코렛세아스 2011, 페이지 306.

참조