연합 클러스터 장애 시나리오
연합 클러스터 장애 시나리오 (Federated cluster failure scenarios)
노마드를 연합(federated) 모드로 실행할 때, 장애 상황과 그 영향은 권위 있는(authoritative) 리전이 영향을 받은 리전인지 여부와 장애의 유형에 따라 달라져요. 소프트(sotf) 장애에서는 리전의 서버가 쿼럼(quorum)을 잃었지만 노마드 프로세스는 여전히 실행 중이고, 살아 있으며, 연결 가능해요. 하드(hard) 장애에서는 리전 서버가 완전히 연결 불가능하며, 기본 하드웨어가 종료된(클라우드) 상태나 전원이 꺼진(온프레미스) 상태와 비슷해요.
다음 시나리오는 세 개의 연합 리전을 실행하는 노마드 배포를 가정해요:
asia-south-1europe-west-1— 권위 있는 리전us-east-1
출처: 문서
본문
연합 리전 장애: 소프트
이 상황에서는 asia-south-1 리전이 리더십을 잃었지만 서버는 연결 가능하고 살아 있어요.
영향을 받은 리전의 모든 서버 로그에는 다음과 같은 항목이 있어요.
[ERROR] nomad/worker.go:504: worker: failed to dequeue evaluation: worker_id=d19e6bb5-5ec9-8f75-9caf-47e2513fe28d error="No cluster leader"
- ✅ 리더십을 갖고 실행 중인 모든 연합 리전 사이에서 요청 전달(request forwarding)은 계속 동작해요.
- 🟨 영향받은 리전에 대한 직접 요청이든 요청 전달을 사용한 요청이든,
stale=true플래그를 사용하지 않는 한 API 요청은 실패해요. - ✅ 네임스페이스 같은 복제 객체의 생성과 삭제는 권위 있는 리전에 기록돼요.
- ✅ 리더십이 있는 연합 리전은 앞서 상세히 설명한 모든 객체를 계속 복제할 수 있어요.
- ✅ 리더십이 있는 모든 리전에서 로컬 ACL 토큰 생성을 계속할 수 있어요.
- ✅
multiregion블록이 없는 작업은 리더십이 있는 모든 리전에 배포돼요. - ❌
multiregion블록이 정의된 작업은 배포에 실패해요.
연합 리전 장애: 하드
이 상황에서는 asia-south-1 리전이 중단됐어요. 이 경우 다른 리전의 노마드 서버 로그에는 다음 예시와 비슷한 로그 항목이 나타나요.
[DEBUG] [email protected]/stdlog.go:58: nomad: memberlist: Failed UDP ping: asia-south-1-server-1.asia-south-1 (timeout reached)
[INFO] [email protected]/stdlog.go:60: nomad: memberlist: Suspect asia-south-1-server-1.asia-south-1 has failed, no acks received
[DEBUG] [email protected]/stdlog.go:58: nomad: memberlist: Initiating push/pull sync with: us-east-1-server-1.us-east-1 192.168.1.193:9002
[DEBUG] [email protected]/stdlog.go:58: nomad: memberlist: Failed UDP ping: asia-south-1-server-1.asia-south-1 (timeout reached)
[INFO] [email protected]/stdlog.go:60: nomad: memberlist: Suspect asia-south-1-server-1.asia-south-1 has failed, no acks received
- ✅ 리더십을 갖고 실행 중인 모든 연합 리전 사이에서 요청 전달은 계속 동작해요.
- ❌ 영향받은 리전에 대한 직접 요청이든 요청 전달을 사용한 요청이든 API 요청은 실패해요.
- ✅ 네임스페이스 같은 복제 객체의 생성과 삭제는 권위 있는 리전에 기록돼요.
- ✅ 리더십이 있는 연합 리전은 위에서 상세히 설명한 모든 객체를 계속 복제해요.
- ✅ 리더십을 갖고 실행 중인 모든 리전에서 로컬 ACL 토큰 생성을 계속할 수 있어요.
- ✅
multiregion블록이 없는 작업은 리더십이 있는 모든 리전에 배포돼요. - ❌
multiregion블록이 정의된 작업은 배포에 실패해요.
권위 있는 리전 장애: 소프트
이 상황에서는 europe-west-1 리전이 리더십을 잃었지만 서버는 연결 가능하고 살아 있어요.
권위 있는 리전의 서버 로그에는 다음 예시와 같은 항목이 있어요.
[ERROR] nomad/worker.go:504: worker: failed to dequeue evaluation: worker_id=68b3abe2-5e16-8f04-be5a-f76aebb0e59e error="No cluster leader"
- ✅ 리더십을 갖고 실행 중인 모든 연합 리전 사이에서 요청 전달은 계속 동작해요.
- 🟨 영향받은 리전에 대한 직접 요청이든 요청 전달을 사용한 요청이든,
stale=true플래그를 사용하지 않는 한 API 요청은 실패해요. - ❌ 네임스페이스 같은 복제 객체의 생성과 삭제는 실패해요.
- ❌ 연합 리전은 복제할 데이터를 읽을 수 있지만(stale 플래그를 사용하므로), 앞서 설명했듯이 권위 있는 리전에는 어떤 쓰기도 발생할 수 없어요.
- ✅ 리더십을 갖고 실행 중인 모든 연합 리전에서 로컬 ACL 토큰 생성을 계속할 수 있어요.
- ✅
multiregion블록이 없는 작업은 리더십을 갖고 실행 중인 모든 연합 리전에 배포돼요. - ❌
multiregion블록이 정의된 작업은 배포에 실패해요.
권위 있는 리전 장애: 하드
이 상황에서는 europe-west-1 리전이 중단됐어요. 이 경우 다른 리전의 노마드 서버 리더 로그에는 다음 예시와 비슷한 로그 항목이 나타나요.
[ERROR] nomad/leader.go:544: nomad: failed to fetch namespaces from authoritative region: error="rpc error: EOF"
[ERROR] nomad/leader.go:1767: nomad: failed to fetch policies from authoritative region: error="rpc error: EOF"
[ERROR] nomad/leader.go:2498: nomad: failed to fetch ACL binding rules from authoritative region: error="rpc error: EOF"
[ERROR] nomad/leader_ent.go:226: nomad: failed to fetch quota specifications from authoritative region: error="rpc error: EOF"
[ERROR] nomad/leader.go:703: nomad: failed to fetch node pools from authoritative region: error="rpc error: EOF"
[ERROR] nomad/leader.go:1909: nomad: failed to fetch tokens from authoritative region: error="rpc error: EOF"
[ERROR] nomad/leader.go:2083: nomad: failed to fetch ACL Roles from authoritative region: error="rpc error: EOF"
[DEBUG] nomad/leader_ent.go:84: nomad: failed to fetch policies from authoritative region: error="rpc error: EOF"
[ERROR] nomad/leader.go:2292: nomad: failed to fetch ACL auth-methods from authoritative region: error="rpc error: EOF"
[DEBUG] [email protected]/stdlog.go:58: nomad: memberlist: Failed UDP ping: europe-west-1-server-1.europe-west-1 (timeout reached)
[INFO] [email protected]/stdlog.go:60: nomad: memberlist: Suspect europe-west-1-server-1.europe-west-1 has failed, no acks received
[DEBUG] [email protected]/stdlog.go:58: nomad: memberlist: Failed UDP ping: europe-west-1-server-1.europe-west-1 (timeout reached)
- ✅ 리더십을 갖고 실행 중인 모든 연합 리전 사이에서 요청 전달은 계속 동작해요.
- ❌ 영향받은 리전에 대한 직접 요청이든 요청 전달을 사용한 요청이든 API 요청은 실패해요.
- ❌ 네임스페이스 같은 복제 객체의 생성과 삭제는 실패해요.
- ❌ 리더십이 있는 연합 리전은 로그에 나온 객체를 복제할 수 없어요.
- ✅ 리더십이 있는 모든 리전에서 로컬 ACL 토큰 생성을 계속할 수 있어요.
- ✅
multiregion블록이 없는 작업은 리더십이 있는 리전에 배포돼요. - ❌
multiregion블록이 정의된 작업은 배포에 실패해요.