728x90
HTTP 부하 분산
HTTP 요청을 두 대 이상의 HTTP 서버로 분산하는 방법입니다. 이는 주로 웹 서버에서 동작하는 애플리케이션을 지원합니다.
예제 구성
upstream backend {
server 10.10.12.45:80 weight=1;
server app.example.com:80 weight=2;
server spare.example.com:80 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
TCP 부하 분산
TCP 연결을 두 대 이상의 TCP 서버로 분산하는 방법입니다. 이는 레이어 4(TCP/IP 4계층)에서 동작하며 연결을 맺고 데이터를 전송하는 과정에서 세션 상태를 유지해야 합니다.
예제 구성
stream {
upstream backend {
server read1.example.com:3306 weight=1;
server read2.example.com:3306 weight=2;
server 10.10.12.34:3306 backup;
}
server {
listen 3306;
proxy_pass mysql_read;
}
}
설정 경로
기본 설정 파일 경로는 conf.d
폴더입니다. stream
모듈을 이용한 설정은 별도의 stream.conf.d
폴더를 생성해 저장하고, 이를 nginx.conf
파일의 stream
블록에 추가하여 Nginx가 참조하도록 합니다.
UDP 부하 분산
UDP 요청을 두 대 이상의 UDP 서버로 분산하는 방법입니다.
예제 구성
stream {
upstream ntp {
server ntp1.example.com:123 weight=2;
server ntp2.example.com:123;
}
server {
listen 123 udp;
proxy_pass ntp;
}
}
패킷 재사용 예제
stream {
server {
listen 1195 udp reuseport;
proxy_pass 127.0.0.1;
}
}
HTTP와 TCP 부하 분산 방식의 차이
HTTP 부하 분산
- 연결 유지 여부: 상태를 유지하지 않음 (stateless)
- 세션 상태: 각 요청이 독립적
- 부하 분산 알고리즘: 간단한 라운드 로빈, IP 해시 등
- 프로토콜 레벨: 응용 계층
TCP 부하 분산
- 연결 유지 여부: 연결 지향형 프로토콜
- 세션 상태: 연결이 특정 서버에 유지되어야 함
- 부하 분산 알고리즘: Least Connections, IP 해시 등
- 프로토콜 레벨: 전송 계층
부하 분산 알고리즘
- Least Connections: 연결이 적은 서버를 우선 활용
- Least Time: 응답 속도가 빠른 서버를 우선 활용
- Round Robin: 서버의 가중치를 지정하여 사용
- Random: 임의 서버를 할당
- Generic Hash: 특정 문자열 기반 해시 활용
- IP Hash: IP 주소 기반 해시 사용
728x90
'Linux' 카테고리의 다른 글
[WEB] X-Forwarded 헤더는 무엇일까? (0) | 2024.08.07 |
---|---|
[Tomcat] Tomcat, web.xml 적용이 안되는 이유 (0) | 2024.07.18 |
[Jenkins] Gradle 버전 신규 추가 방법 (0) | 2024.07.16 |
[Server] Nginx, Apche, PHP, Tomcat 버전 정보 숨기기 (0) | 2024.06.28 |
[Server] Apache Permission denied 에러 (0) | 2024.06.28 |