스플릿 브레인을 자동으로 해결하는 DRBD 구성

스플릿 브레인을 자동으로 해결하는 DRBD 구성

drbd systemd 서비스로 관리되는 DRBD(액티브/패시브)와 리소스가 기본이 될 때마다 볼륨을 마운트하는 작은 스크립트가 포함된 2노드 클러스터를 실행하고 있습니다.

나는 항상 스플릿 브레인을 해결하고 항상 기본 노드를 하나 이상 갖고 두 시스템이 모두 다운되지 않는 한 어떤 경우에도 서비스를 제공할 수 있는 방식으로 DRBD를 구성하고 싶습니다.

다음 구성 을 시도했습니다 pri-lost-after-sb. "reboot"

after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;

그리고 on-suspended-primary-outdated force-secondary다른 조합도 있습니다.

하지만 저는 항상 클러스터가 잘못된 상태에 빠지고 분할 브레인에서 복구되지 않는 시나리오를 찾습니다. 일반적으로 StandAlone노드와 보조 노드에 접속합니다 force-io-failures(따라서 기본 노드에 또 다른 오류가 발생한 후에는 연결되어 있어도 이 보조 노드가 작동하지 않습니다).

데이터 손실 방지가 아니라 서비스 가동 시간을 최우선으로 생각한다는 점을 고려하여 이 설정의 견고성을 향상하기 위해 할 수 있는 다른 방법이 있습니까?

답변1

예전에는 유사한 클러스터를 설정하기 위해 여러 번 시도했습니다. DRBD는 설계상 손상되었으며 두 번째 이름으로 "분할 브레인"이 사용된다는 사실을 이해하기 전까지는 그랬습니다. DRBD9에서는 상황이 조금 나아졌지만(악몽이었던 8.xx와 비교하면) 여전히 프로덕션에서는 사용할 수 없습니다. 해결책은 단 하나뿐입니다. 시간을 절약하고 보다 안정적인 솔루션으로 마이그레이션하는 것입니다. 예를 들어, Ceph.

관련 정보