[DevOps] NGINX

홍건의·2024년 9월 16일
0

DevOps

목록 보기
4/4

엔진엑스 개요

매 요청마다 프로세스나 쓰레드가 생성되는 것이 아니라 비동기 이벤트 기반의 구조로 작동한다.
1. 정적 파일을 처리하는 HTTP서버로의 역할
2. 응용 프로그램 서버에 요청을 보내는 리버시 프록시
3. 비동기 처리방식

헬스 체크

서버가 정상인지 확인하는 작업을 의미한다. 능동적(Active) 방식과 수동적(Passive) 방식으로 나뉜다. Passive 방식만 무료 오픈소스 버전에서 사용가능하다.
max_fails 매개변수fail_timeout 매개변수로 조정한다.

업스트림 서버

NGINX 뒷단에 있는 실제로 서비스 로직 처리하는 원 서버를 의미.

/etc/nginx/nginx.conf 파일 내 NGINX UPSTREAM

proxy-pass 지시자를 통해 nginx가 받은 request를 넘겨줄 서버들을 정의한다.

nginx와 뒷단 application을 연결하는 내부 통신에도 request마다 세션을 만들고 TCP Handshaking가 일어난다. 그리고 이는 응답속도 지연이 될 가능성이 있다.
i) 다수의 TIME-WAIT 소켓
ii) 불필요한 TCP HandShaking

로그 위치

access_log : /var/log/nginx/access.log
error_log : /var/log/nginx/error.log

server {
	listen 80;
    server-name localhost;
    
    location / {
    	proxy-pass http://localhost:40001;
    }
}

upstream backend {
	server ~~:40000 weight = 1;
    server localhost:40002 weight = 2;
}

server {
	listen 80;
    server_name localhost;
    
    location / {
    	proxy_pass http://backend;
    }
}

부하분산 알고리즘

1. 라운드로빈

2. 리스트 커넥션

3. 리스트 타임

4. 제너릭 해시

5. 랜덤

6. IP 해시

1번의 방법을 제외하고는 작업이 다른 특성을 갖거나, 뒷단의 서버가 다른 스펙을 갖는 경우에 고려해봄직 하다.

profile
Backend Developer

0개의 댓글

관련 채용 정보