100% 가동 시간을 위한 분할 뇌 클러스터 복구

NCache .NET, Java, Python, Node.js를 위한 매우 빠르고 확장 가능한 인메모리 분산 캐시입니다. 미션 크리티컬 애플리케이션의 프로덕션 환경에서 널리 사용됩니다. 높은 가용성과 100% 가동 시간을 보장하기 위해, NCache 풍부한 고가용성 기능을 제공합니다. 이러한 기능 중 하나는 클러스터에서 분할 브레인을 감지하고 해결하여 다운타임을 방지하는 기능입니다.

분할 뇌 클러스터란 무엇인가?

NCache ~을 창조하다 자가 치유 동적 캐시 클러스터 TCP를 통해 서로 통신하는 여러 서버로 구성됩니다. 모든 캐시 서버는 클러스터 내에서 상호 연결됩니다. 클러스터의 멤버십은 런타임에 유지되며 서버와 클라이언트 모두와 공유됩니다.

그러나 모든 분산 시스템과 마찬가지로 NCache 클러스터는 하나 이상의 캐시 서버가 클러스터 내 나머지 서버와 연결이 끊어지는 상황에 직면할 수 있습니다. 이는 일반적으로 네트워크 장애로 인해 발생합니다.

이런 상황이 발생하면 각 캐시 서버 세트는 자신을 원래 캐시 클러스터의 남은 서버로 간주하고 다른 캐시 서버는 다운되었다고 가정합니다. 따라서 '분할 뇌(Split Brain)'라는 용어가 사용되는데, 의학 용어로 이는 좌뇌가 우뇌를 인식하지 못하는 것을 의미합니다. 캐시 클라이언트도 비슷한 방식으로 분할될 수도 있고, 원래 클러스터 멤버십을 기반으로 모든 캐시 서버와 계속 통신할 수도 있습니다.

자동 복구 메커니즘이 없으면 스플릿 브레인 시나리오에서 두 개의 독립적인 클라이언트 그룹이 동일한 데이터의 서로 다른 버전을 동시에 업데이트하여 데이터 불일치 및 무결성 충돌이 발생합니다.

4단계 다이어그램은 다음을 보여줍니다. NCache 5개 노드로 구성된 클러스터가 하위 클러스터로 분할되고, 승자 클러스터가 식별되며, 패자 클러스터가 자동으로 복구되어 단일 클러스터로 통합됩니다. NCache 클러스터.
NCache 분할뇌 자동 복구 워크플로

이로 인해 오류가 발생합니다. 캐시 작업 그리고 가장 중요한 것은 데이터 무결성 문제입니다. 각 "분할된 클러스터"는 이제 클라이언트에 의해 독립적으로 업데이트되는 자체 데이터 사본을 갖게 됩니다. 결국 동일한 데이터의 두 개 이상의 사본이 동기화 없이 업데이트되어 불일치가 발생합니다.

방법 NCache 분산된 클러스터에서 분할뇌 현상을 감지할 수 있을까요?

NCache 분할 브레인 클러스터가 발생할 때 자동으로 감지하는 기능이 있습니다. 일반적으로 캐시 관리자는 NCache 관리 센터 또는 필요한 PowerShell cmdlet 클러스터에서 캐시 서버를 제거하면 이러한 이벤트가 기록됩니다. 따라서 분할 브레인의 경우 각 하위 클러스터는 로그 이벤트 Windows 이벤트 로그에 일부 원래 멤버가 떠났음을 나타냅니다. 따라서 분할 브레인(Split Brain)의 경우 NCache 관리자는 거의 모든 캐시 서버에서 "노드 남음" 이벤트를 확인하고 "손실된 서버"에 다시 연결을 시도합니다.

분할된 하위 클러스터 간의 네트워크 연결이 복구된 후에야 분할 브레인 발생을 감지합니다. 이 경우 각 하위 클러스터는 Windows 이벤트 로그에 이벤트를 기록하고 캐시 관리자에게 이를 알립니다. 이메일 알림 스플릿 브레인이 발생했다는 것입니다.

어떻게합니까 NCache 분할뇌 자동 회복 기능?

분할 브레인 복구를 활성화하세요 config.ncconf 추가하여 아래에 태그 태그. 이 태그를 True로 설정하면 클러스터 분할 브레인 문제를 감지할 수 있습니다. 단, 이 기능은 파티션-복제본 토폴로지에서만 사용할 수 있습니다.

<cache-settings...>
  <split-brain-recovery enable="True" detection-interval="60"/> 
</cache-settings>

탐지 단계에서, NCache TCP 기반 하트비트를 사용하여 노드 상태를 모니터링합니다. 네트워크 분할이 발생하면 클러스터는 구성된 설정을 기반으로 분할 지점을 식별합니다. 감지 간격감지되면, NCache 다수 노드 규칙 또는 복합 클러스터 규칙을 적용하여 "승자"를 결정합니다.

NCache 다음 기준에 따라 우승 클러스터를 결정합니다.

  • 다수결 원칙: 노드 수가 가장 많은 서브 클러스터가 승자로 선정됩니다.
  • 복잡도 법칙: 노드 수가 같을 경우, 내부 구성과 연결성이 가장 복잡한 서브 클러스터가 우선권을 갖습니다.

사용자가 분할 브레인 시나리오에서 자동 복구를 구성한 경우, 모든 하위 클러스터는 서로 협상하여 "승자"를 결정합니다. 이 작업이 완료되면 다른 하위 클러스터는 데이터를 삭제하고 기존 클러스터에 새로 가입하는 노드처럼 동작하여 해당 클러스터에 가입합니다.

어떤 하위 클러스터가 승리할지 결정하는 규칙은 간단합니다. 멤버 노드 수가 가장 많은 하위 클러스터가 승리합니다. 여러 하위 클러스터의 멤버 노드 수가 같은 경우, 코디네이터의 IP 주소가 가장 작은 하위 클러스터가 승리합니다.

다음에 무엇을할지?

자주 묻는 질문 (FAQ)

NCache 이 시스템은 두 가지 주요 규칙에 기반한 "승자 클러스터" 논리를 사용합니다. 첫 번째는 노드 수가 더 많은 하위 클러스터가 승리하는 다수결 규칙이고, 두 번째는 노드 수가 같을 경우 내부 구성이 가장 복잡한 하위 클러스터가 승리하는 복잡성 규칙입니다. "패자" 하위 클러스터는 자동으로 재시작되어 승자 클러스터에 다시 합류합니다.

자동 복구 과정 동안 "패자" 하위 클러스터는 "승자" 클러스터와 동기화하기 위해 로컬 데이터를 폐기해야 합니다. 이는 클러스터 전체의 데이터 일관성을 보장하고 두 개의 독립적인 파티션이 서로 다를 때 발생하는 무결성 충돌을 방지합니다.

NCache 현재 이 기능은 특히 분할 복제본(PR) 토폴로지에 대한 자동 스플릿 브레인 감지 및 복구를 지원합니다. 이 토폴로지는 데이터 중복성과 파티션 처리가 중요한 고가용성 분산 캐싱에 가장 일반적으로 사용됩니다.

네. 동안 NCache config.ncconf 파일의 split-brain-recovery 태그를 통해 자동화된 복구 메커니즘을 제공합니다. 분할된 데이터를 병합하기 전에 수동 개입이나 관리자 검증이 필요한 환경이라면 이 값을 False로 설정할 수 있습니다.

문의하기

전화

+1 214-619-2601 (미국)

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.