로드 밸런싱은 주로 자원에 대한 최적화, 처리량 최대화, 지연율 최소화를 해준다. nginx는 여러 애플리케이션 서버에 트래픽을 분산해주고, 퍼포먼스를 향상시켜주고, 확장성, 신뢰성을 바탕으로 매우 효율적인 Http 로드밸런싱을 제공해준다.
로드밸런싱은 다음과 같은 메소드를 제공한다.
1. 라운드 로빈(round-robin)
2. 가장 접속량이 적은 서버에 할당(Least-connected)
3. 다음 요청은 전에 들어왔던 서버에 할당(ip-hash)
다음은 로드밸런싱의 기본값(default) 세팅이다. (Round-robin)
http {
upstream application {
server www.server1.com;
server www.server2.com;
server www.server3.com;
}
이 환경 설정에서 내용을 변경하지 않으면 라운드 로빈(round-robin) 방식으로 요청이 동등하게 분산된다. 여기서 upstream이라는 건 웹 애플리케이션 서버를 의미한다. 즉 application 이라는 그룹망에 3개(server, server2, server3)의 웹 애플리케이션 서버가 존재한다.
Least-connected
upstream application {
least_conn;
server www.server1.com;
server www.server2.com;
server www.server3.com;
}
least_conn 을 입력하게 되면, 요청이 들어오면 그룹 안에 가장 접속량이 적은 서버에 할당되는 방식이다. 그래서 nginx는 많은 요청을 가진 서버에 더 이상 과부하를 걸리지 않게 해준다.
ip-hash
upstream application {
ip_hash;
server www.server1.com;
server www.server2.com;
server www.server3.com;
}
ip_hash를 입력하게 되면 다음 요청이 들어오게 되면 그 전에 들어왔던 서버에 할당되어진다. ip_hash가 작동하는 원리는 클라이언트 ip가 hashing key으로써 한 group에서 서버가 결정된다. 이 방식은 그 서버가 접속이 불가능한 상황을 제외하고는 같은 클라이언트는 계속 같은 서버로 할당되는 것을 보장받는다.
weight
upstream myapp1 {
server www.server1.com weight=3;
server www.server2.com;
server www.server3.com;
}
예를 들어 요청이 5이 왔다면 server1에서는 3를 나머지 server2, server3은 각각 1씩 주어진다. Least-connected나 ip-hash 같은 경우는 유동적인 반면에 weight 같은 경우는 고정적인 방식인 것을 알 수 있다.
참고 http://nginx.org/en/docs/http/load_balancing.html
'web' 카테고리의 다른 글
공개 키와 개인 키: 암호화의 기초 이해 (0) | 2023.10.31 |
---|---|
HTTP 상태 코드: 웹 통신의 기초 이해하기 (0) | 2023.08.13 |
http vs https (0) | 2018.11.13 |
스프링 구동 원리 (0) | 2018.03.23 |
MVC/Vo, Dao, Service (0) | 2018.03.12 |