최적의 안정성을 위한 CIS 배치 관리
IBM Cloud® Internet Services 배치에 대한 최적의 안정성을 얻기 위해 유용한 DNS 구성 및 글로벌 로드 밸런서를 설정할 수 있습니다. 안정성을 높이기 위해, 페이지 규칙을 사용하여 오리진 서버나 캐시에 문제가 있어도 고객에게 웹 컨텐츠가 전달되도록 할 수 있습니다. 이 문서는 CIS 배치를 최적으로 안정화하기 위한 몇 가지 우수 사례를 자세히 설명합니다.
일반적으로는 다음의 우수 사례를 권장합니다.
- CIS 프록시 서버 및 기타 기능을 활용하도록 DNS를 설정합니다.
- 하나 이상의 글로벌 로드 밸런서를 사용하여 사이트 트래픽을 균등하게 분배합니다.
- 캐싱 및 기타 옵션을 관리하는 적합한 페이지 규칙을 설정합니다.
각각의 이러한 항목은 보다 안정적인 CIS 배치를 작성하는 데 사용할 수 있는 특정 기능을 제공합니다.
참고로, CIS 인터페이스는 보안, 안정성 및 성능 섹션으로 구성되어 있습니다.
DNS 설정
DNS 구성 설정을 시작하려면 탐색 메뉴에서 DNS를 선택하십시오.
안정성을 위해 DNS를 설정하고 관리하는 방법에 대한 자세한 내용은 CIS 에 대한 도메인 이름 시스템 설정을 참조하세요.
글로벌 로드 밸런서 설정
글로벌 로드 밸런서 설정을 시작하려면 탐색 메뉴에서 글로벌 로드 밸런서를 선택하십시오.
글로벌 로드 밸런서 설정 및 관리에 대한 자세한 내용은 글로벌 로드 밸런서 개념을 참조하세요.
페이지 규칙을 사용하여 안정성 향상
다음 목록은 사이트의 안정성을 극대화하기 위한 몇 가지 권장 페이지 규칙 설정을 보여줍니다.
- 오리진 캐시 제어
- URL 전달
시간이 경과된(stale) 컨텐츠 제공
서버가 다운된 경우 오래된 콘텐츠 제공 설정을 사용하여 사이트의 제한된 버전을 온라인 상태로 유지할 수 있습니다.
오래된 콘텐츠 제공을 사용하면 서버가 다운되더라도 CIS 에서 캐시의 페이지를 제공하므로 방문자는 방문하려는 페이지 중 일부를 계속 볼 수 있습니다. 방문자는 자신이 오프라인 브라우징 모드에 있음을 알려주는 페이지 맨 위의 메시지를 봅니다. 시간이 경과된(stale) 컨텐츠 제공에서는 HTTP 상태 503을 리턴하지만 503은 다른 많은 웹 애플리케이션에서도 사용됩니다. 서버가 다시 온라인 상태로 돌아오면 CIS는 일반 브라우징으로 유연하게 사용자를 다시 범핑합니다.
CIS의 캐시에 요청된 페이지가 없는 경우, 방문자는 요청 중인 웹 사이트 페이지가 오프라인 상태임을 알려주는 오류 페이지를 봅니다.
오래된 컨텐츠 제공 설정
보존된 콘텐츠 제공를 활성화하려면 다음 단계를 따르세요.
- 탐색 메뉴를 사용하여 성능 > 캐싱으로 이동합니다.
- 보존된 콘텐츠 제공를 토글합니다.
시간이 경과된(stale) 컨텐츠 제공의 제한사항
-
Serve Stale Content는 인터넷 아카이브와 통합됩니다. CIS 는 지난 5시간 동안
200
HTTP 상태가 있는 가장 인기 있는 URL을 크롤링합니다. 즉, 오리진 서버가 작동 중지되면 사이트의 일부 페이지만 볼 수 있습니다. -
최근에 추가된 사이트에는 사이트의 대용량 캐시가 없습니다. 즉, 사이트를 추가한 지 며칠 되지 않은 경우 부실 콘텐츠 제공이 작동하지 않을 수 있습니다.
-
서버가 작동 중지된 경우에 CIS는 개인용 컨텐츠를 표시하거나 양식 제출(POST)을 처리하지 않습니다. 방문자에게
error on checkout
페이지 또는items require a login to view
이 표시됩니다. -
시간이 경과된(stale) 컨텐츠 제공을 트리거하려면 웹 서버가 502 또는 504 제한시간 초과라는 표준 HTTP 오류 코드를 리턴해야 합니다. 오래된 콘텐츠 제공은 CIS 에서 오리진에 연결하는 데 문제가 발생하거나(오류 521 및 523), 시간 초과(522 및 524), SSL 오류(525 및 526) 또는 알 수 없는 오류(520)가 발생하는 경우에도 작동합니다. 시간이 경과된(stale) 컨텐츠 제공은 기타 HTTP 응답 코드에 대해서는 트리거되지 않습니다(예: 404s, 500, 503, 데이터베이스 연결 오류, 내부 서버 오류 또는 서버의 빈 응답).
-
"에지 캐시 만기 TTL"로 인해 시간이 경과된(stale) 컨텐츠 제공 캐시가 해당 간격으로 영구 제거되므로 시간이 경과된(stale) 컨텐츠 제공은 "에지 캐시 만기 TTL"이 캐싱 빈도보다 짧은 상태에서 "모두 캐시" 페이지 규칙이 사용되는 경우 작동되지 않습니다.
오리진 캐시 제어
오리진 캐시 제어 페이지 규칙 설정을 사용하여 오리진에서 캐시되는 컨텐츠와 해당 컨텐츠의 업데이트 빈도를 판별할 수 있습니다(이는 안정성과 성능에 영향을 줌). 기본적으로, 설정이 변경되지 않았으며 캐싱을 방지하는 헤더가 오리진 서버에서 전송되지 않은 경우에는 CIS가 특정 확장자의 모든 정적 컨텐츠를 캐시합니다. 이러한 유형의 컨텐츠에는 이미지, CSS 및 Javascript가 포함됩니다. 이 캐싱은 주로 성능상의 이유로 수행됩니다.
오리진 캐시 제어를 설정하려면 페이지 규칙을 사용하여 컨텐츠의 각 리소스와 관련하여 원하는 동작을 제공하는 특정 헤더를 켜십시오. 오리진 캐시 제어의 사용법을 이해하려면 컨텍스트 제공을 위해 CIS의 전체 캐싱 동작 및 페이지 규칙에 대한 좀 더 일반적인 설명이 필요합니다. 이에 대해서는 다음 몇 개의 절에서 다룹니다. 일반적으로 캐싱을 제어하기 위해 사용할 수 있는 세 가지 방법이 존재하며 오리진 캐시 제어는 두 번째 방법입니다.
오리진 캐시 제어 설정은 인터넷 우수 사례 및 RFC에 가장 가까이 접근하고자 하는 캐싱 규칙을 호출합니다(주로 재인증과 관련하여). 예를 들어, max-age=0
의 CIS 기본 작동은 전혀 캐시하지 않는 반면 오리진 캐시 제어 캐시 설정은 캐시합니다. 그러나 항상 재검증하지는 않습니다.
오리진 캐시 제어 설정
다음 단계에 따라 Origin 캐시 제어를 활성화하십시오.
- 탐색 메뉴를 사용하여 성능에서 페이지 규칙을 선택하십시오.
- 사용자 도메인을 참조하는 URL 패턴으로 페이지 규칙을 작성하십시오.
- 토글을 켜서 오리진 캐시 제어 설정을 추가합니다.
- 리소스 프로비저닝을 선택하십시오.
페이지 규칙 우선순위
이러한 특정 페이지 규칙은 전체 캐싱에 우선 적용됩니다.
-
페이지 규칙의 캐시 레벨이
Bypass
(으)로 설정된 경우 해당 페이지 규칙과 일치하는 리소스는 캐시되지 않습니다. CIS은(는) 여전히 프록시 역할을 하며 다른 성능 기능은 활성 상태로 유지됩니다. 하지만 컨텐츠는 당사 캐시에서 제공되는 대신 오리진 서버에서 직접 페치됩니다. -
페이지 규칙에서 캐시 레벨이
Cache everything
으로 설정된 경우에는 해당 페이지 규칙과 일치하는 리소스가 캐시됩니다. 이 페이지 규칙 설정을 사용하는 것은 CIS 에 HTML을 포함하여 CIS 이 정적으로 간주하는 것 이상의 리소스를 캐시하도록 지시하는 유일한 방법입니다.
페이지 규칙이 설정되지 않은 경우 CIS는 리소스 확장에 기반한 Standard
캐싱 모드를 사용합니다. CIS는 정적 리소스만 캐싱합니다.
오리진 Cache-Control 헤더
CIS 캐시를 변경하는 두 번째 방법은 오리진에서 보낸 캐싱 헤더를 사용하는 것입니다. CIS은(는) 이러한 설정을 존중하지만 Edge Cache TTL 페이지 규칙 설정을 지정하여 이를 재정의할 수 있습니다. 다음은 CIS 에서 원본에서 캐시할 리소스를 결정할 때 고려하는 헤더입니다:
-
Cache-Control 헤더가
private
,no-store
,no-cache
또는max-age=0
으로 설정되거나 응답에 쿠키가 있는 경우, CIS는 리소스를 캐시하지 않습니다. 참고로, 민감한 자료는 캐시되지 않아야 하므로 해당 경우에는 이러한 헤더 중 하나의 사용을 고려할 수 있습니다. -
Cache-Control 헤더가
public
으로 설정되어 있으며max-age
가 0보다 큰 경우 또는Expires
헤더가 미래의 임의 시점에 설정된 경우에는 리소스가 캐시됩니다.
RFC 규칙에 따르면 Cache-Control: max-age
는 Expires
헤더에 우선합니다. 둘 다 표시되고 서로 충돌하면 max-age
가 우선합니다.
s-maxage
헤더 사용
캐싱 작동 및 브라우저 캐싱 작동을 함께 제어하는 세 번째 방법은 s-maxage
Cache-Control 헤더를 사용하는 것입니다.
일반적으로 CIS는 max-age
지시문을 준수합니다.
Cache-Control: max-age=1000
하지만 브라우저와 다른 캐시 시간 초과를 지정하려면 CIS s-maxage
을 사용할 수 있습니다. 다음 예는 CIS 에 200초 동안 개체를 캐시하고 브라우저에 60초 동안 개체를 캐시하도록 지시합니다.
Cache-Control: s-maxage=200, max-age=60
기본적으로 s-maxage
은 역방향 프록시만 따르도록 되어 있으므로 브라우저는 이를 무시해야 하지만 (CIS)이 있는 경우 s-maxage
에 우선순위를 부여합니다. CIS는 브라우저 캐시 설정과 max-age
헤더 중 더 높은 값을 따릅니다.
안정성을 위한 페이지 규칙 및 캐시 제어 헤더의 요약
요약하자면 캐싱과 관련하여 안정성을 위해 고려할 일부 기본 영역은 다음과 같습니다.
-
오리진의 캐싱 헤더를 확인하여 캐시 가능한 리소스에 대한 대체 헤더가 없는지 확인하십시오(
Cache-Control
및Expires
). -
CIS는 기본적으로 리턴 코드에 따라 다음 TTL로 항상 정적 컨텐츠를 캐시합니다.
200 301 120m; 302 303 20m; 403 5m; for reliability 404 5m; any 0s;
-
추가로 캐시하려면 URL에서 캐시 레벨이
Cache everything
로 설정된 페이지 규칙을 작성하십시오(이 URL을 요청할 때 웹 서버가 404를 리턴하면 5m에 대해서만 이 결과가 캐시됨). -
URL에서 캐싱을 방지하려면 캐시 레벨을
Bypass
로 설정하여 페이지 규칙을 작성하십시오.
URL 전달
컨텐츠가 항상 사용 가능하도록 하려면 사이트가 사용 불가능할 때 사용되는 URL 전달 설정으로 페이지 규칙을 작성하십시오.
URL 전달을 사용하는 경우에는 모든 트래픽을 다른 URL로 전송하므로 기타 모든 설정이 사용되지 않습니다.
URL 전달 설정
URL 전달을 사용으로 설정하려면 다음 단계를 수행하십시오.
- 탐색 메뉴를 사용하여 성능에서 페이지 규칙을 선택하십시오.
- 사용자 도메인을 참조하는 URL 패턴으로 페이지 규칙을 작성하십시오.
- URL 전달 설정을 추가합니다.
- 전달 유형을 선택하고 대상 URL을 입력합니다.
- 리소스 프로비저닝을 선택하십시오.
URL 전달 예제
누구나 다음의 URL에 쉽게 접근할 수 있도록 하고자 한다고 가정하십시오.
*www.example.com/+
*example.com/+
이 패턴은 다음과 일치합니다.
http://example.com/+
http://www.example.com/+
https://www.example.com/+
https://blog.example.com/+
https://www.blog.example.com/+
다음과는 일치하지 않습니다.
http://www.example.com/blog/+ [extra directory before the +]
http://www.example.com+ [no trailing slash]
일단 원하는 내용과 일치하는 패턴이 작성되면 URL 전달 설정을 추가하고 전달 유형을 선택한 후에 대상 URL을 입력하십시오. 예를 들어, 다음과 같습니다.
https://plus.google.com/yourid
리소스 프로비저닝을 선택하십시오. 수 초 내에 패턴과 일치하는 모든 요청이 지정된 경로 재지정을 통해 새 URL로 전달됩니다.
고급 전달 옵션
기본 경로 재지정을 사용하는 경우(예: 루트 도메인을 www.yourdomain.com
으로 전달)에는 URL의 다른 부분이 유실됩니다. 예를 들어 패턴을 설정할 수 있습니다.
example.com
그리고 이를 다음으로 전달합니다.
http://www.example.com
그러나 누군가가 다음을 입력합니다.
example.com/some-particular-page.html
그러면 이는 다음으로 경로 재지정됩니다.
www.example.com
대체 대상:
www.example.com/some-particular-page.html
솔루션은 변수를 사용하는 것입니다. 각각의 와일드카드는 전달 주소에서 참조될 수 있는 변수에 대응됩니다. 변수는 $
와 그 이후의 숫자로 표시됩니다. 첫 번째 와일드카드를 참조하려면 $1
을 사용하고, 두 번째 와일드카드를 참조하려면 $2
를 사용합니다. 나머지도 마찬가지입니다. 이전 예제의 루트에서 www
로의 전달을 고정시키려면 동일한
패턴을 사용하십시오.
example.com/*
그리고 전달할 트래픽에 대해 다음 URL을 설정하십시오.
http://www.example.com/$1
이 경우에 누군가가 다음으로 이동합니다.
example.com/some-particular-page.html
이는 다음으로 경로 재지정됩니다.
http://www.example.com/some-particular-page.html