5.7.4. 고정 세션
고정 세션 구현은 기본 라우터 구성에 따라 달라집니다. 기본 HAProxy 템플릿은 소스 IP를 기반으로 균형을 조정하는 balance source
지시문을 사용하여 고정 세션을 구현합니다. 또한 템플릿 라우터 플러그인에서는 서비스 이름과 네임스페이스를 기본 구현에 제공합니다. 이 명령은 피어 집합 간에 동기화되는 stick-tables 구현과 같은 고급 구성에 사용할 수 있습니다.
고정 세션을 사용하면 사용자 세션의 모든 트래픽이 동일한 포드로 이동하여 더 나은 사용자 환경을 만들 수 있습니다. 사용자의 요청을 충족하는 동안 Pod는 후속 요청에 사용할 수 있는 데이터를 캐시합니다. 예를 들어 5개의 백엔드 포드와 부하 분산 라우터가 있는 클러스터의 경우 동일한 포드가 이를 처리하는 라우터와 관계없이 동일한 웹 브라우저에서 웹 트래픽을 수신하는지 확인할 수 있습니다.
동일한 Pod로 라우팅 트래픽을 반환하는 동안은 보장할 수 없습니다. 그러나 HTTP 헤더를 사용하여 마지막 연결에서 사용되는 Pod를 판별하기 위해 쿠키를 설정할 수 있습니다. 사용자가 애플리케이션에 다른 요청을 보내면 브라우저가 쿠키를 다시 전송하고 라우터는 트래픽을 보낼 위치를 알고 있습니다.
클러스터 관리자는 다른 연결과 별도로 패스스루 경로의 고정을 해제하거나 고정을 완전히 끌 수 있습니다.
기본적으로 패스스루 경로에 대한 고정 세션은 소스
로드 밸런싱 전략을 사용하여 구현됩니다. ROUTER_TCP_BALANCE_SCHEME
환경 변수를 사용하고 haproxy.router.openshift.io/balance
경로 특정 주석을 사용하여 개별 경로에 대해 모든 통과 경로에 대해 기본값을 변경할 수 있습니다.
다른 유형의 경로는 기본적으로 leastconn
부하 분산 전략을 사용하며, ROUTER_LOAD_BALANCE_ALGORITHM
환경 변수를 사용하여 변경할 수 있습니다. haproxy.router.openshift.io/balance
경로 특정 주석을 사용하여 개별 경로에 대해 변경할 수 있습니다.
HTTP 트래픽을 볼 수 없기 때문에 통과 경로에서는 쿠키를 설정할 수 없습니다. 대신, 번호는 백엔드를 결정하는 소스 IP 주소를 기반으로 계산됩니다.
백엔드가 변경되면 트래픽이 잘못된 서버로 전환되어 스티키를 줄이면서 부하 분산기(소스 IP 숨기기)를 사용하는 경우 모든 연결에 대해 동일한 번호가 설정되고 트래픽이 동일한 포드로 전송됩니다.
또한 템플릿 라우터 플러그인에서는 서비스 이름과 네임스페이스를 기본 구현에 제공합니다. 이는 피어 집합 간에 동기화되는 stick-tables 구현과 같은 고급 구성에 사용할 수 있습니다.
이 라우터 구현에 대한 특정 구성은 라우터 컨테이너의 /var/lib/haproxy/conf 디렉터리에 있는 haproxy-config.template 파일에 저장됩니다. 파일을 사용자 지정할 수 있습니다.
소스
부하 분산 전략은 외부 클라이언트 IP 주소를 구분하지 않습니다. NAT 구성으로 인해 원래 IP 주소(HAProxy 원격)는 동일합니다. HAProxy 라우터가 hostNetwork: true
로 실행되지 않는 한 모든 외부 클라이언트는 단일 포드로 라우팅됩니다.