클러스터 수준 페일오버
클러스터 수준 페일오버 (Cluster-level Failover)
주 클러스터에 장애가 났을 때 애플리케이션을 중단 없이 계속 운영하고 싶다면, 클러스터 수준 페일오버가 큰 도움이 돼요. 이 기능은 주(primary) 클러스터에서 하나 이상의 백업 클러스터로 Pulsar 클라이언트의 접속을 자동 또는 수동으로 전환시켜 주죠. 이 글에서는 개념, 이점, 사용 사례, 동작 원리를 정리해 드릴게요.
출처: 문서
본문
이 장에서는 클러스터 수준 페일오버의 개념, 이점, 사용 사례, 제약 조건, 사용법, 동작 원리와 더 많은 정보를 설명해요.
클러스터 수준 페일오버의 개념
- 자동 클러스터 수준 페일오버
- 수동(관리자 주도) 클러스터 수준 페일오버
자동 클러스터 수준 페일오버는 사용자가 설정한 감지 정책에 따라 페일오버 이벤트를 감지하면, Pulsar 클라이언트가 주 클러스터에서 하나 이상의 백업 클러스터로 자동으로 매끄럽게 전환되도록 지원해요.
수동(관리자 주도) 클러스터 수준 페일오버는 Pulsar 클라이언트가 주 클러스터에서 하나 이상의 백업 클러스터로 전환되도록 지원해요. 이 전환은 관리자가 수동으로 설정해요.
주 클러스터가 다시 정상 작동하면 Pulsar 클라이언트는 주 클러스터로 다시 전환할 수 있어요. 대부분의 경우 사용자는 이 사실조차 알아차리지 못할 거예요. 사용자는 중단이나 타임아웃 없이 애플리케이션과 서비스를 계속 사용할 수 있어요.
클러스터 수준 페일오버를 왜 사용하나요?
클러스터 수준 페일오버는 장애 허용(fault tolerance), 지속적 가용성, 고가용성을 함께 제공해요. 다음과 같은 이점이 있어요 (이 외에도 더 많아요):
- 비용 절감: 데이터 손실 없이 서비스가 자동으로 전환되고 복구돼요.
- 관리 간소화: 즉각적인 사용자 개입이 필요 없어서 비즈니스를 "항상 켜짐(always-on)" 방식으로 운영할 수 있어요.
- 안정성과 견고성 향상: 지속적인 성능을 보장하고 서비스 다운타임을 최소화해요.
클러스터 수준 페일오버는 언제 사용하나요?
클러스터 수준 페일오버는 여러 방식으로 환경을 보호해요. 대표적으로:
- 재해 복구: 클러스터 수준 페일오버는 주 클러스터의 운영 워크로드를 하나 이상의 백업 클러스터로 자동으로 매끄럽게 전환해, 데이터 손실을 최소화하고 복구 시간을 줄여줘요.
- 계획된 마이그레이션: 운영 워크로드를 기존 클러스터에서 새 클러스터로 옮기고 싶다면, 클러스터 수준 페일오버로 마이그레이션 효율을 높일 수 있어요. 예를 들어 페일오버 이벤트가 발생했을 때 데이터 마이그레이션이 원활한지 테스트하고, 마이그레이션 전에 가능한 문제와 위험을 식별할 수 있어요.
클러스터 수준 페일오버는 언제 트리거되나요?
- 자동 클러스터 수준 페일오버
- 수동(관리자 주도) 클러스터 수준 페일오버
자동 클러스터 수준 페일오버는 Pulsar 클라이언트가 오랜 시간 동안 주 클러스터에 연결할 수 없을 때 트리거돼요. 여기에는 여러 이유가 있을 수 있어요:
- 네트워크 장애: 인터넷 연결이 끊김.
- 전원 장애: 주 클러스터의 종료 시간이 시간 제한을 초과함.
- 서비스 오류: 주 클러스터에서 오류 발생 (예: 시간 제한 때문에 주 클러스터가 작동하지 않음).
- 저장 공간 손상: 주 클러스터에 저장 공간이 충분하지 않지만, 백업 서버의 해당 저장 공간은 정상 작동함.
수동(관리자 주도) 클러스터 수준 페일오버는 관리자가 스위치오버를 수동으로 설정할 때 트리거돼요.
클러스터 수준 페일오버는 왜 실패할 수 있나요?
당연한 이야기지만, 활성 Pulsar 클라이언트가 백업 클러스터에 도달할 수 없으면 클러스터 수준 페일오버는 성공하지 못해요. 여기에는 여러 이유가 있을 수 있어요:
- 전원 장애: 백업 클러스터가 종료되었거나 정상적으로 작동하지 않음.
- 저장 공간 손상: 주/백업 클러스터 모두 저장 공간이 충분하지 않음.
- 페일오버가 시작됐지만, 오류로 인해 어떤 클러스터도 가용 클러스터의 역할을 수행할 수 없고 주 클러스터도 정상적으로 서비스를 제공하지 못하는 경우.
- 수동으로 스위치오버를 시작했지만 서비스를 백업 클러스터 서버로 전환할 수 없는 경우, 시스템은 서비스를 주 클러스터로 되돌리려 시도해요.
- 주/백업 클러스터 사이 또는 두 백업 클러스터 사이에서 인증 또는 권한 부여에 실패한 경우.
클러스터 수준 페일오버의 제약 조건은 무엇인가요?
현재 클러스터 수준 페일오버는 데이터 손실을 막기 위한 프로브(probe)를 수행할 수 있지만, 백업 클러스터의 상태를 확인할 수는 없어요. 백업 클러스터가 정상이 아니라면 데이터를 생산하거나 소비할 수 없어요.
클러스터 수준 페일오버와 지오레플리케이션의 관계는 무엇인가요?
클러스터 수준 페일오버는 안정성과 견고성을 높이기 위한 지오레플리케이션의 확장 기능이에요. 클러스터 수준 페일오버는 지오레플리케이션에 의존하며, 아래와 같은 차이점이 있어요.
| 영향 | 클러스터 수준 페일오버 | 지오레플리케이션 |
|---|---|---|
| 관리자의 작업 부하가 큰가요? | 아니요 또는 어쩌면. - 자동 페일오버의 경우 사용자가 설정한 정책에 따라 클러스터 전환이 자동으로 트리거돼요. - 수동(관리자 주도) 페일오버의 경우 관리자가 수동으로 전환을 트리거해요. | 네. 클러스터가 실패하면 즉각적인 관리 개입이 필요해요. |
| 데이터 손실이 발생하나요? | 아니요. 자동 및 수동 페일오버 모두에서, 실패한 주 클러스터가 메시지를 백업 클러스터로 즉시 복제하지 않으면 Pulsar 클라이언트는 복제되지 않은 메시지를 소비할 수 없어요. 주 클러스터가 복구되고 Pulsar 클라이언트가 다시 전환하면 복제되지 않은 데이터도 여전히 소비할 수 있어요. 따라서 데이터가 손실되지 않아요. - 자동 페일오버의 경우 서비스가 데이터 손실 없이 자동으로 전환·복구돼요. - 수동(관리자 주도) 페일오버의 경우 서비스가 수동으로 전환·복구되며 데이터 손실이 발생할 수 있어요. | 네. Pulsar 클라이언트와 DNS 시스템에는 캐시가 있어요. 관리자가 DNS를 주 클러스터에서 백업 클러스터로 전환하면 캐시 트리거 타임아웃에 시간이 걸려 클라이언트 복구 시간이 지연되고 메시지를 생산하거나 소비하지 못할 수 있어요. |
| Pulsar 클라이언트 실패가 발생하나요? | 아니요 또는 어쩌면. - 자동 페일오버의 경우 서비스가 자동으로 전환·복구되어 Pulsar 클라이언트는 실패하지 않아요. - 수동(관리자 주도) 페일오버의 경우 서비스는 수동으로 전환·복구되지만, 관리자가 조치를 취하기 전에 Pulsar 클라이언트는 실패해요. | 위와 동일해요. |
클러스터 수준 페일오버는 어떻게 동작하나요?
이 장에서는 클러스터 수준 페일오버의 동작 과정을 설명해요. 더 자세한 구현 내용은 PIP-121을 보세요.
- 자동 클러스터 수준 페일오버
- 수동(관리자 주도) 클러스터 수준 페일오버
자동 페일오버 클러스터에서 주 클러스터와 백업 클러스터는 서로의 가용성을 인지하고 있어요. 자동 페일오버 클러스터는 관리자 개입 없이 다음 작업을 수행해요:
- Pulsar 클라이언트가
checkInterval에 정의된 간격으로 프로브 작업을 실행해요. - 프로브 작업이 주 클러스터의 장애 시간이
failoverDelay파라미터에 설정된 시간을 초과한 것을 발견하면, 사용 가능한 정상 클러스터를 찾기 위해 백업 클러스터를 검색해요. 2a) 정상 백업 클러스터가 있으면 Pulsar 클라이언트가secondary에 정의된 순서대로 백업 클러스터로 전환해요. 2b) 정상 백업 클러스터가 없으면 Pulsar 클라이언트는 전환을 수행하지 않고, 프로브 작업은 계속해서 사용 가능한 백업 클러스터를 찾아요. - 프로브 작업이 주 클러스터가 정상 작동하는지 확인해요.
3a) 주 클러스터가 돌아오고 지속적인 정상 시간이
switchBackDelay에 설정된 시간을 초과하면 Pulsar 클라이언트가 주 클러스터로 다시 전환해요. 3b) 주 클러스터가 돌아오지 않으면 Pulsar 클라이언트는 전환을 수행하지 않아요.
수동(관리자 주도) 페일오버 클러스터는 관리자 개입으로 다음 작업을 수행해요:
- Pulsar 클라이언트가
checkInterval에 정의된 간격으로 프로브 작업을 실행해요. - 프로브 작업이
urlProvider로 설정된 URL 공급자 서비스에서 서비스 URL 설정을 가져와요. 2a) 서비스 URL 설정이 변경되면, 프로브 작업은 대상 클러스터의 상태를 확인하지 않고 대상 클러스터로 전환해요. 2b) 서비스 URL 설정이 변경되지 않으면 Pulsar 클라이언트는 전환을 수행하지 않아요. - Pulsar 클라이언트가 대상 클러스터로 전환하면, 프로브 작업은
checkInterval에 정의된 간격으로 URL 공급자 서비스에서 서비스 URL 설정을 계속 가져와요. 3a) 서비스 URL 설정이 변경되면, 프로브 작업은 대상 클러스터의 상태를 확인하지 않고 대상 클러스터로 전환해요. 3b) 서비스 URL 설정이 변경되지 않으면 전환을 수행하지 않아요.
클러스터 수준 페일오버 사용법
클러스터 수준 페일오버 구성을 보세요.
더 알아보기 (Learn more)
- 지오레플리케이션 — 클러스터 수준 페일오버가 의존하는 복제 개념을 이해해요.
- 클러스터 수준 페일오버 구성 — 실제로
checkInterval,failoverDelay,secondary같은 파라미터를 설정해 보세요. - 아키텍처 개요 — 클러스터와 브로커 구조를 파악해요.