CloudFront 오리진 장애 조치를 통한 고가용성 최적화 - Amazon CloudFront

CloudFront 오리진 장애 조치를 통한 고가용성 최적화

고가용성을 필요로 하는 시나리오에 대한 오리진 장애 조치를 사용하여 이제 CloudFront를 설정할 수 있습니다. 시작하려면 2개의 오리진(기본 오리진 및 보조 오리진)이 포함된 오리진 그룹을 만듭니다. 기본 오리진을 사용할 수 없거나 실패를 나타내는 특정 HTTP 응답 상태 코드를 반환하는 경우 CloudFront는 자동으로 보조 오리진으로 전환합니다.

오리진 장애 조치를 설정하려면 최소 2개의 오리진이 있는 배포가 전제되어야 합니다. 다음으로, 2개의 오리진이 포함된 배포에 대한 오리진 그룹을 만들고 그 중 1개의 오리진을 기본 오리진으로 설정합니다. 마지막으로, 오리진 그룹을 사용하도록 캐시 동작을 생성하거나 업데이트합니다.

오리진 그룹을 설정하고 특정 오리진 장애 조치 옵션을 구성하는 단계는 오리진 그룹 생성 단원을 참조하십시오.

캐시 동작에 대한 오리진 장애 조치를 구성한 후에, CloudFront가 최종 사용자의 요청에 대해 다음을 수행합니다.

  • 캐시 적중이 있는 경우 CloudFront는 요청된 객체를 반환합니다.

  • 캐시 누락이 있는 경우, CloudFront는 오리진 그룹 내에서 기본 오리진으로 요청을 라우팅합니다.

  • 기본 원본이 HTTP 2xx 또는 3xx 상태 코드와 같이 장애 조치용으로 구성되지 않은 상태 코드를 반환하면 CloudFront는 요청된 객체를 뷰어에게 제공합니다.

  • 다음과 같은 문제가 발생하는 경우:

    • 기본 오리진이 장애 조치를 위해 구성된 HTTP 상태 코드를 반환합니다.

    • CloudFront가 기본 오리진 연결에 실패합니다.

    • 기본 오리진의 응답이 너무 오래 걸립니다(시간 초과).

    그러면 CloudFront는 요청을 오리진 그룹의 보조 오리진으로 라우팅합니다.

    참고

    비디오 콘텐츠 스트리밍과 같은 일부 사용 사례의 경우 CloudFront가 보조 오리진으로 신속하게 장애 조치하도록 할 수 있습니다. CloudFront가 보조 오리진으로 장애 조치하는 속도를 조정하려면 오리진 제한 시간 및 시도 횟수 제어 단원을 참조하십시오.

CloudFront는 이전 요청이 보조 오리진으로 장애 조치되는 경우에도 수신되는 모든 요청을 기본 오리진으로 라우팅합니다. CloudFront는 기본 오리진에 대한 요청이 실패한 후에만 보조 오리진에 요청을 보냅니다.

CloudFront는 최종 사용자 요청의 HTTP 메서드가 GET, HEAD 또는 OPTIONS인 경우에만 보조 오리진으로 장애 조치합니다. 최종 사용자가 다른 HTTP 메서드(예: POST, PUT 등)를 보내면 CloudFront는 장애 조치를 수행하지 않습니다.

다음 다이어그램에서는 오리진 장애 조치의 작동 방식을 보여 줍니다.

오리진 장애 조치의 작동 방식

오리진 그룹 생성

오리진 그룹을 생성하려면
  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home에서 CloudFront 콘솔을 엽니다.

  2. 오리진 그룹을 만들려는 분포를 선택합니다.

  3. 오리진 탭을 선택합니다.

  4. 배포에 둘 이상의 원본이 있는지 확인합니다. 그렇지 않으면 두 번째 원본을 추가합니다.

  5. 원본(Origins) 탭의 원본 그룹(Origin groups) 창에서 원본 그룹 생성(Create origin group)을 선택합니다.

  6. 오리진 그룹에 대한 오리진을 선택합니다. 오리진을 추가한 후 화살표를 사용하여 우선순위를 설정합니다. 즉, 기본 오리진과 보조 오리진을 지정합니다.

  7. 원본 그룹의 이름을 입력합니다.

  8. 장애 조치 기준으로 사용할 HTTP 상태 코드를 선택합니다. 상태 코드 400, 403, 404, 416, 500, 502, 503 또는 504의 어떠한 조합도 선택할 수 있습니다. 지정한 상태 코드 중 하나가 포함된 응답을 CloudFront에서 수신하면 보조 오리진으로 장애 조치됩니다.

    참고

    CloudFront는 최종 사용자 요청의 HTTP 메서드가 GET, HEAD 또는 OPTIONS인 경우에만 보조 오리진으로 장애 조치합니다. 최종 사용자가 다른 HTTP 메서드(예: POST, PUT 등)를 보내면 CloudFront는 장애 조치를 수행하지 않습니다.

  9. 원본 그룹 생성(Create origin group)을 선택합니다.

분산 캐시 동작에 대한 오리진 그룹을 오리진으로 지정해야 합니다. 자세한 내용은 명칭 단원을 참조하십시오.

오리진 제한 시간 및 시도 횟수 제어

기본적으로 CloudFront는 오리진 그룹의 기본 오리진에 최대 30초(각각 10초 동안 연결 시도 3회) 동안 연결을 시도한 후 보조 오리진으로 장애 조치합니다. 비디오 콘텐츠 스트리밍과 같은 일부 사용 사례의 경우 CloudFront가 보조 오리진으로 보다 신속하게 장애 조치하도록 할 수 있습니다. 다음 설정을 조정하여 CloudFront가 보조 오리진으로 장애 조치하는 속도에 영향을 줄 수 있습니다. 오리진이 보조 오리진이거나 오리진 그룹의 일부가 아닌 오리진인 경우 이러한 설정은 CloudFront가 HTTP 504 응답을 최종사용자에게 얼마나 빨리 반환하는지에 영향을 줍니다.

더욱 신속하게 장애 조치하려면 더 짧은 연결 제한 시간, 더 적은 연결 시도 횟수 또는 둘 다를 지정합니다. 사용자 지정 오리진(정적 웹 사이트 호스팅으로 구성된 Amazon S3 버킷 오리진 포함)의 경우 오리진 응답 제한 시간을 조정할 수도 있습니다.

오리진 연결 제한 시간

오리진 연결 제한 시간 설정은 오리진에 대한 연결을 설정하려고 할 때 CloudFront의 대기 시간에 영향을 줍니다. 기본적으로 CloudFront는 연결을 설정하기 위해 10초 동안 대기하지만 1~10초를 지정할 수 있습니다. 자세한 내용은 연결 제한 시간 단원을 참조하세요.

오리진 연결 시도 횟수

오리진 연결 시도 횟수 설정은 CloudFront가 오리진에 연결을 시도하는 횟수에 영향을 줍니다. 기본적으로 CloudFront에서는 세 번 연결을 시도하지만 1~3회를 지정할 수 있습니다. 자세한 내용은 연결 시도 단원을 참조하세요.

사용자 지정 오리진(정적 웹 사이트 호스팅으로 구성된 Amazon S3 버킷 포함)의 경우 이 설정은 또한 오리진 응답 제한 시간이 발생했을 때 CloudFront가 오리진에서 응답을 얻으려고 시도하는 횟수에 영향을 미칩니다.

오리진 응답 제한 시간
참고

이는 사용자 지정 오리진에만 적용됩니다.

오리진 응답 제한 시간 설정은 CloudFron가 오리진으로부터 응답을 수신(또는 전체 응답을 수신)하기 위해 대기하는 시간에 영향을 줍니다. 기본적으로 CloudFron는 30초 동안 대기하지만 1~60초를 지정할 수 있습니다. 자세한 내용은 응답 제한 시간(사용자 지정 오리진만 해당) 단원을 참조하세요.

이러한 설정을 변경하는 방법

CloudFront 콘솔에서 이러한 설정을 변경하려면

  • 새 오리진 또는 새 배포의 경우 리소스를 생성할 때 이러한 값을 지정하십시오.

  • 기존 배포의 기존 오리진의 경우 오리진을 편집할 때 이 값을 지정하십시오.

자세한 내용은 배포 설정 참조 단원을 참조하세요.

Lambda@Edge 함수와 함께 오리진 장애 조치 사용

Lambda@Edge 함수를 오리진 그룹에 설정한 CloudFront 배포와 함께 사용할 수 있습니다. Lambda 함수를 사용하려면, 캐시 동작을 생성할 때 오리진 그룹에 대한 오리진 요청 또는 오리진 응답 트리거에 이 함수를 지정합니다. 오리진 그룹과 함께 Lambda@Edge 함수를 사용하는 경우, 단일 최종 사용자 요청에 대해 함수를 두 번 트리거할 수 있습니다. 예를 들어 다음 시나리오를 고려해 보십시오.

  1. 오리진 요청 트리거를 사용하여 Lambda@Edge 함수를 생성합니다.

  2. Lambda 함수는 CloudFront가 (캐시 누락 시) 기본 오리진에 요청을 보낼 때 한 번 트리거됩니다.

  3. 기본 오리진은 장애 조치를 위해 구성된 HTTP 상태 코드로 응답합니다.

  4. Lambda 함수는 CloudFront가 보조 오리진에 동일한 요청을 보낼 때 다시 트리거됩니다.

다음 다이어그램에서는 오리진 요청이나 응답 트리거에 Lambda@Edge 함수가 포함된 경우 오리진 장애 조치가 작동하는 방식을 보여 줍니다.

오리진 장애 조치가 Lambda@Edge 함수와 함께 작동하는 방식

Lambda@Edge 트리거 사용에 대한 자세한 내용은 Lambda@Edge 함수에 대한 트리거 추가 단원을 참조하십시오.

DNS 장애 조치 관리에 대한 자세한 내용은 Amazon Route 53 개발자 안내서의 DNS 장애 조치 구성을 참조합니다.

오리진 장애 조치와 함께 사용자 지정 오류 페이지 사용

사용자 지정 오류 페이지를 오리진 장애 조치에 대해 설정되지 않은 오리진에 사용하는 경우와 유사한 방식으로 사용자 지정 오류 페이지를 오리진 그룹에 사용할 수 있습니다.

오리진 장애 조치를 사용할 때, CloudFront를 기본 오리진 또는 보조 오리진에 대해(또는 양쪽 모두에 대해) 사용자 지정 오류 페이지를 반환하도록 구성할 수 있습니다.

  • 기본 오리진에 대해 사용자 지정 오류 페이지 반환 — 장애 조치를 위해 구성되지 않은 HTTP 상태 코드를 기본 오리진에서 반환하는 경우 CloudFront는 사용자 지정 오류 페이지를 최종 사용자에게 반환합니다.

  • 보조 오리진에 대해 사용자 지정 오류 페이지 반환 — CloudFront가 보조 오리진에서 실패 상태 코드를 수신하면 CloudFront는 사용자 지정 오류 페이지를 반환합니다.

CloudFront에서 사용자 지정 오류 페이지를 사용하는 방법에 대한 자세한 내용은 사용자 지정 오류 응답 생성 단원을 참조하십시오.