Nginx Sticky
Sticky Cookie
Nginx plus에서 제공하는 기술로 Nginx가 쿠키를 생성하고 추적한다. 특정 사용자의 요청을 항상 동일한 서버로만 보내게 하여 부하 분산에 효율을 높인다.
클라우드환경의 경우는 해당 기능이 비효율적일 수 있다.
Sticky cookie는 다음과 같이 사용할 수 있다.
upstream backend{
server back1.example.com;
server back2.example.com;
sticky cookie (name) [expires=time [domain] [httponly] [secure] [path=path];
}
Sticky Learn
부하 분산 중 세션 지속을 위한 기법이다. Nginx plus에서 제공하는 기술로 upstream에서 생성한 쿠키를 찾아내어 추적하는 방식이다.
최대 1만 6000개의 세션 정보를 저장 가능하며 세션 정보 쿠키는 개발 언어, 환경마다 다른데 이것을 지원한다.
http {
upstream backend {
zone backend 64k;
server backend1.example.com;
server backend2.example.com;
sticky learn
create=$upstream_cookie_sessionid
lookup=$cookie_sessionid
zone=client_sessions:1M
timeout=1h;
}
...
create로 세션 쿠키를 지정하고 lookup에서 확인한다. zone은 공유 메모리 영역으로 이름과 크기를 지정한다.
Sticky Route
더 정교한 로드 밸런싱을 위한 기능이다. 최초 요청은 지정된 upstream 설정대로 동작하며 이후에 upstream 서버에서 보낸 세션, 쿠키를 통해 그리고 URI 정보를 통해 동작한다.
Health Check
장애가 없는 서버만 Upstream서버로 사용하기 위해서 health check기능을 활용할 수 있다. nginx 오픈소스 버전은 passive체크만 가능하며 plus버전에서 active 체크가 가능하다.
Passive Check
요청을 먼저 보낸 후 time out이 발생하였는지 확인하여 장애 여부를 판단하는 방식이다.
upstream backend {
server back1.exmaple.com:1111 max_fails=1 fail_timeout=10s;
}
max fails는 재요청 시 최대 허용이며 fail_timeout은 time out 기준값이다. 기본적으로 활성화되어 있으며 max_fails의 기본값은 1 fail_timeout의 기본값은 10이다.
Active Check(Nginx plus)
Upstream 서버가 백엔드 서버의 상태를 주기적으로 확인하는 기능이다. 서버가 정상적으로 동작하는지 확인하고, 문제의 서버가 탐지될 시 로드 밸런싱에서 제외할 수 있다.
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
zone backend 64k;
health_check interval=30s fails=3 passes=2 uri=/;
}
match status_ok {
status 200-299;
}
server {
location / {
proxy_pass http://backend;
}
}
}
status가 200대 이고 30초마다 /
경로에 대한 GET
요청으로 헬스체크를 진행한다.
match 지시자 내에 header, body 등의 지시자로 추가적인 http응답에 대한 검사가 가능하다.
stream {
upstream tcp_backend {
server 127.0.0.1:12345;
server 127.0.0.1:12346;
}
upstream udp_backend {
server 127.0.0.1:12347;
server 127.0.0.1:12348;
}
server {
listen 1234; # TCP 트래픽을 수신
proxy_pass tcp_backend;
}
server {
listen 1235 udp; # UDP 트래픽을 수신
proxy_pass udp_backend;
}
}
'Infra > Nginx' 카테고리의 다른 글
Nginx Load Balancing 기능 1 (0) | 2024.05.15 |
---|---|
Nginx 기본 (0) | 2024.03.27 |
댓글