세션 선호도 설정

웹 사이트를 로드하려면 웹 서버에서 여러 자산을 페치해야 합니다. CIS 세션 유사성은 동일한 클라이언트에서 동일한 오리진 웹 서버로 요청을 자동으로 지정하여 중복 네트워크 요청을 최소화합니다.

CIS는 클라이언트에 대한 초기 응답에 쿠키를 설정합니다. 후속 클라이언트 요청에서 쿠키를 사용하면 오리진을 사용할 수 없는 경우 해당 요청이 동일한 오리진으로 전송됩니다.

활성화되면 CIS 세션 선호도가 다음을 수행합니다.

  • 클라이언트가 첫 번째 요청을 할 때 CIS는 클라이언트에 CFLib 쿠키를 설정합니다. 쿠키는 요청이 전달되는 오리진을 인코딩합니다.
  • 동일한 클라이언트의 후속 요청은 오리진 서버가 정상 상태로 유지되는 한 쿠키 기간 동안 해당 오리진으로 전달됩니다.
  • 쿠키가 만료되거나 오리진 서버가 비정상인 경우 CIS는 적절한 장애 복구 오리진을 인코딩하는 새 쿠키를 설정합니다.

30분에서 7일 사이에 사용자 정의 세션 TTL(초)을 지정하지 않는 한 모든 세션의 기본값은 23시간입니다. TTL을 준수하려면 세션 선호도 쿠키가 필요합니다. ' Always Use HTTPS '이 활성화되면 세션 쿠키는 안전합니다. 또한 크로스 사이트 스크립팅 공격을 방지하기 위해 쿠키에 대해 HttpOnly가 항상 활성화됩니다.

CLI에서 세션 어피니티 설정하기

CLI에서 글로벌 로드 밸런서를 생성할 때 세션 어피니티를 설정하려면 다음 단계를 따르십시오:

  1. IBM Cloud 계정에 로그인하십시오.
  2. 글로벌 로드 밸런서를 작성하십시오.
  3. 다음 CLI 변수를 설정하십시오:

세션 어피니티 쿠키에 특정 SameSite 구성이 필요한 경우, CIS 에서는 기본 동작에 의존하지 말고 및 값을 samesite secure 과 다르게 설정할 Auto 것을 권장합니다. 이렇게 하면 구성 변경(즉, 항상 HTTPS 사용 )으로 인해 SameSite 쿠키 속성의 값이 변경되지 않습니다.

session_affinity: 올바른 값은 cookie, none입니다.

ttl: 이 로드 밸런서의 세션 어피니티 쿠키가 생성된 후 만료되기까지 남은 시간(초 단위). ' 1800, ' 604800' 사이의 유효한 값입니다. 기본값은 82800 입니다.

session_affinity_attributes: 세션 어피니티 쿠키의 속성.

samesite

유효값은 다음과 같습니다. * Auto (기본값): 항상 HTTPS 사용을 활성화하면 세션 선호도 쿠키가 Lax 모드를 사용하고, 비활성화하면 쿠키가 None 모드를 사용합니다. * None' : 모든 요청과 함께 쿠키가 전송됩니다. * Lax: 쿠키가 에이펙스 도메인으로만 전송됩니다(예: ' example.com). * Strict' : 쿠키는 첫 번째 당사자(방문한 도메인)가 생성합니다.

secure

유효값은 다음과 같습니다. * Auto (기본값): 항상 HTTPS 사용을 활성화하면 세션 선호도 쿠키가 samesite 속성에서 secure 을 사용하고, 비활성화하면 쿠키가 secure 을 사용하지 않습니다. * Always secure 이 항상 설정되어 있으므로 쿠키는 HTTPS 연결을 통해서만 전송됩니다. * Never secure 은 설정되지 않으므로 HTTPS HTTP 연결 모두에서 쿠키를 전송할 수 있습니다.

drain_duration

선택사항입니다. 오리진에서 활성 세션을 소모하는 시간(초)입니다. 시간이 경과하면 기존 세션이 모두 종료되며, 이 필드는 로드 밸런서에서 세션 선호도가 활성화된 경우에만 사용됩니다.

zero_downtime_failover

선택사항입니다. 일시적인 네트워크 문제 발생 시 풀 내의 엔드포인트로 트래픽을 자동으로 전송합니다. 값은 다음과 같습니다: * none (기본값): 장애 조치가 수행되지 않으며 사용자에게 오류가 표시될 수 있습니다. * temporary: 원래 고정된 엔드포인트를 사용할 수 있을 때까지 트래픽이 다른 엔드포인트로 전송됩니다. * sticky' : 세션 선호도 쿠키가 업데이트되고 필요에 따라 후속 요청이 새 엔드포인트로 전송됩니다.

HTTP 헤더를 통한 세션 어피니티에 대해서는 Sticky Zero-Downtime Failover가 지원되지 않습니다.

예를 들어, 다음과 같습니다.

ibmcloud cis glb-update fc72db47cee8290eaef292cda6e1619a 12b68758126546e0d129c7bbadfa87f0 --json '{"session_affinity":"cookie","session_affinity_ttl":1800,"session_affinity_attributes":{"samesite":"Auto","secure":"Auto"}}'

API를 사용한 세션 어피니티 설정

세션 선호도는 글로벌 로드 밸런서의 속성이며, 다음 엔드포인트를 사용하여 설정할 수 있습니다:

' session_affinity, ' session_affinity_ttl' , ' session_affinity_attributes ' 매개변수를 사용하여 세션 선호도 동작을 사용자 지정합니다.

HTTP 헤더로 세션 선호도를 활성화하려면 session_affinity 값을 header 으로 설정하고 HTTP 헤더 이름을 session_affinity_attributes.headers 에 추가합니다.

API를 사용하여 글로벌 로드 밸런서를 생성하는 경우 다음 단계에 따라 세션 선호도를 설정하십시오.

  1. 올바른 변수로 API 환경을 설정하십시오.

  2. API 명령에 사용할 변수에 다음 값을 저장하십시오.

    • session_affinity, "없음" 또는 "기본값"으로 지정되지 않는 한 로드 밸런서가 사용하는 세션 선호도 유형을 지정합니다. 유효한 값은 없음입니다.cookie,ip_cookie.
    • session_affinity_ttl, 이는 세션 어피니티의 수명입니다.
    • session_affinity_attributes 포함하고있는:
      • samesite 구성합니다 SameSite 선호도 쿠키의 속성입니다. 유효한 값은 ' Auto, ' Lax' , ' None' , ' Strict; 기본값은 ' Auto 입니다.

      • secure 세션 선호도 쿠키에 Secure 속성을 구성합니다. 유효한 값은 ' Auto, ' Always' , ' Never ' ; 기본값은 ' Auto 입니다.

      • drain_duration 배수 기간의 값(초)입니다.

      • zero_downtime_failover '(선택 사항)은 일시적인 네트워크 문제 발생 시 풀 내의 엔드포인트로 트래픽을 자동으로 전송합니다. 값 값은 ' temporary, ' sticky' , 기본값은 ' none' 입니다.

        HTTP 헤더를 통한 세션 어피니티에 대해서는 Sticky Zero-Downtime Failover가 지원되지 않습니다.

  3. 모든 변수가 시작되면 세션 선호도를 사용하여 전역 로드 밸런서를 생성합니다.

curl -X POST   https://api.cis.cloud.ibm.com/v1/:crn/zones/:zone_id/load_balancers   -H 'content-type: application/json'   -H 'x-auth-user-token: Bearer xxxxxx'   -d '{
    "description": "",
    "proxied": true,
    "enabled": true,
    "name": "www.example.com",
    "session_affinity": "none",
    "session_affinity_ttl": 5000,
    "steering_policy": "geo",
    "fallback_pool": "4112ba6c2974ec43886f90736968e838",
    "default_pools": [
        "6563ebae141638f92ebbdc4a821bef8c",
        "4112ba6c2974ec43886f90736968e838"
    ],
    "pop_pools": {},
    "region_pools": {
        "EEU": [
            "4112ba6c2974ec43886f90736968e838"
        ],
        "ENAM": [
            "6563ebae141638f92ebbdc4a821bef8c"
        ],
        "WEU": [
            "4112ba6c2974ec43886f90736968e838"
        ],
        "WNAM": [
            "6563ebae141638f92ebbdc4a821bef8c"
        ]
    }
}'

samesiteNone 로 설정하면 secureNever 로 설정할 수 없습니다.