세션 선호도 설정
웹 사이트를 로드하려면 웹 서버에서 여러 자산을 페치해야 합니다. CIS 세션 유사성은 동일한 클라이언트에서 동일한 오리진 웹 서버로 요청을 자동으로 지정하여 중복 네트워크 요청을 최소화합니다.
CIS는 클라이언트에 대한 초기 응답에 쿠키를 설정합니다. 후속 클라이언트 요청에서 쿠키를 사용하면 오리진을 사용할 수 없는 경우 해당 요청이 동일한 오리진으로 전송됩니다.
활성화되면 CIS 세션 선호도가 다음을 수행합니다.
- 클라이언트가 첫 번째 요청을 할 때 CIS는 클라이언트에
CFLib쿠키를 설정합니다. 쿠키는 요청이 전달되는 오리진을 인코딩합니다. - 동일한 클라이언트의 후속 요청은 오리진 서버가 정상 상태로 유지되는 한 쿠키 기간 동안 해당 오리진으로 전달됩니다.
- 쿠키가 만료되거나 오리진 서버가 비정상인 경우 CIS는 적절한 장애 복구 오리진을 인코딩하는 새 쿠키를 설정합니다.
30분에서 7일 사이에 사용자 정의 세션 TTL(초)을 지정하지 않는 한 모든 세션의 기본값은 23시간입니다. TTL을 준수하려면 세션 선호도 쿠키가 필요합니다. ' Always Use HTTPS '이 활성화되면 세션 쿠키는 안전합니다. 또한 크로스 사이트 스크립팅 공격을 방지하기 위해
쿠키에 대해 HttpOnly가 항상 활성화됩니다.
CLI에서 세션 어피니티 설정하기
CLI에서 글로벌 로드 밸런서를 생성할 때 세션 어피니티를 설정하려면 다음 단계를 따르십시오:
- IBM Cloud 계정에 로그인하십시오.
- 글로벌 로드 밸런서를 작성하십시오.
- 다음 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을 사용하지 않습니다. *Alwayssecure이 항상 설정되어 있으므로 쿠키는 HTTPS 연결을 통해서만 전송됩니다. *Neversecure은 설정되지 않으므로 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를 사용하여 글로벌 로드 밸런서를 생성하는 경우 다음 단계에 따라 세션 선호도를 설정하십시오.
-
올바른 변수로 API 환경을 설정하십시오.
-
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가 지원되지 않습니다.
-
-
모든 변수가 시작되면 세션 선호도를 사용하여 전역 로드 밸런서를 생성합니다.
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"
]
}
}'
samesite 를 None 로 설정하면 secure 를 Never 로 설정할 수 없습니다.