S3가 오프라인 상태가 될 때 내 사이트를 온라인으로 유지하는 좋은 전략은 무엇입니까?


32

S3가 오프라인 상태가 될 때 내 사이트를 온라인으로 유지하는 좋은 전략은 무엇입니까?

S3 US East 1이 오프라인 상태가되면 전체 사이트를 오프라인으로 만들지 않도록 앱을 어떻게 구성 / 구조화해야합니까?

이런 상황에서 다양 화하는 가장 좋은 전략은 무엇입니까?


무엇을 시도 했습니까?
030

답변:


26

2015 년 3 월 Amazon AWS 리전 간 S3 복제를 지원 한다고 발표했습니다 . S3의 특정 지역이 오프라인 상태가되면 다른 지역의 미러에서 파일을 제공 할 수 있습니다.

출처 : https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/

다른 지역으로 전환하여 인프라를 온라인 상태로 유지하는 방법은 복잡하지만 S3는 비교적 작고 간단한 구성 요소입니다. Netflix는 Chaos Gorilla에서의 경험에 관한 훌륭한 기사 를 가지고 있습니다.

이는 지연 시간 증가와 같은 서비스 저하에도 적용됩니다. 의존하는 서비스가 완전히 오프라인 일 때만이 아닙니다. Netflix에 대한 기사도 있습니다 : Chaos Engineering Upgraded .


작동하는지 확인하는 전략은 작동하는지 테스트하는 것입니다. 백업, 코드 등도 마찬가지입니다. 테스트를 실행할 때 준비 환경 (있는 경우) 또는 개발 환경 (있는 경우)이 복제 된 사이트에서 작동하는 것이 좋습니다.
Evgeny

Netflix는 백업 계획이 실제로 작동하는지 확인하기 위해 전체 지역을 오프라인으로 전환하는 것으로 알려져 있습니다.
Evgeny

Netflix가 Amazon과 함께
가던 시절

10

당신이 요구하는 것은 기본적으로 고 가용성입니다. 시스템의 가용성을 높이려면 다음 세 가지가 필요합니다.

  1. 단일 장애 지점 제거
  2. 엔드 포인트에서 다른 엔드 포인트로 전환하는 메커니즘
  3. 고장을 감지하는 방법

단일 장애 지점 제거

S3의 경우, 포인트 # 1은 Sv 교차 리전 복제에 의해 Evgeny가 지적한대로 해결됩니다 .

그러나 복제는 즉각적이지 않으므로 응용 프로그램 복제를 인식할지 여부를 확인해야합니다. 정전이 발생하는 경우 소스 버킷에 기록 된 내용이 아직 대상 버킷에 복제되지 않았을 수 있습니다. 애플리케이션이 이러한 시나리오를 어떻게 처리 할 것인지 생각해야합니다. 이는 실제로 데이터 유형, 수행 대상 및 최종 사용자 또는 관리 기대치에 따라 다릅니다.

엔드 포인트에서 다른 엔드 포인트로 전환하는 메커니즘

S3의 경우, 중단이 발생하면 애플리케이션이 버킷 A에서 읽기 / 쓰기를 중지하고 버킷 B를 대신 사용하기를 원합니다.

이것을 달성하는 방법은 내가 아는 한 지금 당장 당신에게 달려 있습니다. 다른 일부 AWS 서비스는 완전히 투명한 페일 오버를 제공하지만 현재 S3에 대해서는 그러한 점을 알지 못합니다.

이를 달성하기위한 다양한 방법이 있습니다. 한 가지 예는 트래픽을 적절한 버킷으로 라우팅하는 프록시를 사용하는 것입니다. 중단 중에는 중단의 영향을받지 않는 버킷으로 트래픽을 라우팅하도록 프록시를 업데이트 / 변경합니다. 또 다른 예는 애플리케이션 구성을 동적으로 만들고 키-값 저장소에 저장하는 것입니다. 응용 프로그램이 업데이트 된 속성에 대해 KV 저장소를 자주 읽는 경우 읽고 쓰는 위치를 전환 할 수 있습니다 (예 : Spring Cloud는 "EnvironmentChange"리스너를 지원함).

고장을 감지하는 방법

글쎄, 그게 쉽다고 생각합니다. 쓰기 + 읽기 루프를 설정하고 무언가가 바르지 않으면 경고하십시오. :)

결산 메모

  • 애플리케이션이 버킷에 쓰는 경우 페일 오버시 어떤 일이 발생하는지 고려해야합니다. 모든 기록이 대상 버킷에 작성 되었습니까? 대상 버킷에 대한 쓰기를 허용 할 수 있습니까 (새 "기본"으로 만들기)? 주의 깊게 계획하면 분할 또는 업데이트 손실 시나리오를 피할 수 있습니다.
  • SLA에 따라 포인트 # 2 및 # 3을 자동화 또는 자동으로 지정할 수 있습니다. 이를 위해서는 추가 계획, 툴링 및 테스트가 필요하지만 잘 작성된 스크립트는 항상 인간보다 더 빠르고 예측 가능한 방식으로 반응합니다 (실패는 또한 사람의 개입이 위험한 한밤중에 일어나는 성가신 습관을 가지고 있습니다.
  • 교차 리전 복제조차도 단일 장애 지점을 완전히 제거하지는 않습니다. 물론, 지역이 무너지면 당신은 보호됩니다. 그러나 미국 전역의 AWS 중단이 발생하면 어떻게됩니까? Azure는 작년에 전체적으로 중단되었지만 2014 년에도 중단되었습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.