장애 조치(failover) 개요
장애 조치(failover) 개요
메시의 서비스가 비정상이 되거나 연결할 수 없을 때 Consul이 자동으로 트래픽을 장애 조치 서비스 인스턴스로 라우팅하도록 구성하는 방법을 설명해 드릴게요. 여러 데이터센터 간 장애 조치 전략을 하나씩 살펴보아요.
출처: 문서
본문
메시의 서비스는 여러 이유로 비정상이 되거나 연결할 수 없게 될 수 있지만, Consul이 자동으로 트래픽을 장애 조치 서비스 인스턴스로 또는 그곳에서 라우팅하도록 구성하면 인프라 문제와 관련된 일부 영향을 완화할 수 있어요. 이 문서는 Consul로 구현할 수 있는 장애 조치 전략에 대한 개요를 제공해요.
Consul의 서비스 장애 조치 전략
Consul에서 데이터센터 간 장애 조치 전략을 구현하는 여러 방법이 있어요. 배포 구성과 네트워크 요구 사항에 따라 다음 전략 중 하나를 채택할 수 있어요:
-
service resolver 구성 엔트리에서
Failover스탠자를 구성하여 어떤 서비스가 장애 조치되어야 하고 어떤 대상화 로직을 따라야 하는지 명시적으로 정의해요. -
각 서비스에 대해 geo-장애 조치를 자동화하는 데 사용할 수 있는 prepared query를 만들어요.
-
동일한 이름의 네임스페이스와 서비스 이름을 가진 파티션을 식별하여 기본 장애 조치 대상을 설정하는 sameness group을 만들어요.
다음 표는 서비스에 가장 적합한 접근 방식을 결정하는 데 도움이 되도록 여러 데이터센터 배포에서 이러한 전략을 비교해요.
Failover stanza |
Prepared query | Sameness groups | |
|---|---|---|---|
| Supports WAN federation | ✅ | ✅ | ❌ |
| Supports cluster peering | ✅ | ❌ | ✅ |
| Supports locality-aware routing | ✅ | ❌ | ✅ |
| Multi-datacenter failover strength | ✅ | ❌ | ✅ |
| Multi-datacenter usage scenario | 장애 조치 대상화를 위한 더 세분화된 로직을 가능하게 함. | 가장 가까운 데이터센터를 자동으로 대상화할 수 있는 중앙 정책. | 기존 멤버 구성을 편집하지 않고 그룹 크기를 변경함. |
| Multi-datacenter usage scenario | 특히 테스트나 디버깅 목적으로 단일 서비스 또는 서비스 하위 집합에 대한 장애 조치 구성 | 기본 데이터센터가 구성된 WAN 연동 배포. 쿼리 준비(prepared queries)는 피어 연결을 통해 복제되지 않음. | 일관되게 명명된 서비스와 네임스페이스가 있는 클러스터 피어링 배포. |
클러스터 피어링 연결은 Consul의 서비스 디스커버리 기능으로 동적 DNS 쿼리를 수행할 때 prepared query 요청 스키마의 Failover 필드를 지원하지만, 서비스 메시 장애 조치 시나리오에 대한 prepared query는 지원하지 않아요.
단일 데이터센터가 있는 서비스 메시의 장애 조치 구성
service resolver 구성 엔트리를 구현하고, 기본 서비스가 비정상이 되거나 연결할 수 없을 때 다른 서비스가 메시지를 교환할 수 있는 장애 조치 서비스 인스턴스 풀을 지정할 수 있어요. Consul 서비스 메시를 구현할 때 이 전략을 최소 기준선으로 채택하고 추가 장애 조치 전략을 계층화하여 애플리케이션 네트워크에 복원력을 구축할 것을 권장해요.
VM과 Kubernetes 배포 모두에서 service resolver 구성 엔트리에 장애 조치 서비스를 구성하는 방법의 예시는 장애 조치 구성을 참고해 주세요.
WAN 연동 데이터센터의 장애 조치 구성
네트워크에 WAN 연동된 여러 Consul 데이터센터가 있다면 prepared query로 장애 조치 서비스를 찾도록 애플리케이션을 구성할 수 있어요. prepared query는 복잡한 서비스 디스커버리 조회를 정의할 수 있게 해주는 구성이에요. 이 전략은 보조 데이터센터에 기본 데이터센터의 서비스 인스턴스와 동일한 이름을 가진 서비스 인스턴스가 있고 동일한 네임스페이스에 있는 경우에 의존해요.
자세한 내용은 prepared query로 geo-장애 조치 자동화 튜토리얼을 참고해 주세요.
피어링된 클러스터 및 파티션의 장애 조치 구성
피어 연결을 공유하는 여러 데이터센터 또는 파티션이 있는 네트워크에서는 각 데이터센터 또는 파티션이 독립적인 단위로 작동해요. 결과적으로 Consul은 같은 이름을 가진 서비스를, 같은 네임스페이스에 있더라도 서로 연관시키지 않아요.
이러한 유형의 네트워크에는 sameness group을 구성할 수 있어요. sameness group을 사용하면 동일한 네임스페이스에 동일한 서비스가 배포된 admin 파티션 그룹을 정의할 수 있어요. sameness group을 구성한 후에는 service resolver, exported service, service intention 구성 엔트리에서 SamenessGroup 매개변수를 참조할 수 있어, 매번 모든 클러스터 피어를 변경하지 않고도 그룹에 클러스터 피어를 추가하거나 제거할 수 있게 해줘요.
sameness group이 장애 조치 동작의 기본값으로 작동하도록 구성할 수 있어요. 또한 service resolver의 Failover 스탠자 또는 prepared query에서 sameness group을 참조할 수도 있어요. 자세한 내용은 sameness group 장애 조치를 참고해 주세요.
지역 인식 라우팅 (Locality-aware routing)
기본적으로 Consul은 인스턴스가 다른 네트워크 리전과 영역에 있더라도 클러스터의 모든 정상 업스트림 인스턴스에 트래픽을 분산해요. 동일한 리전과 영역의 업스트림으로 요청을 라우팅하도록 Consul을 구성하면 지연과 전송 비용을 줄일 수 있어요. 자세한 내용은 로컬 업스트림으로 트래픽 라우팅을 참고해 주세요.