Nginx Load balancing

wi_label·2021년 2월 10일
2

Web Server

목록 보기
4/6
post-thumbnail

1. 프록시 설정

한 웹 서버 안에는 여러 서버가 있을 수 있다.

그 각각의 서버들도 자기의 서버가 있고 웹서버 안에 있는 이상 메인도메인(퍼블릭 ip) 안에서 프라이빗 ip를 가지고 있는 것이다.

프록시 설정을 하면 퍼블릭 ip를 거친 요청만이 프라이빗 ip로의 요청 마무리를 통해 요청을 통한 원하는 응답을 가질 수 있다.

클라이언트가 서버의 자원을 자기 맘대로 쥐락펴락 못하려면 웹서버의 퍼블릭 ip, 웹 서버 안에서의 프라이빗 ip 를 모두알면 안된다.

클라이언트는 퍼블릭 ip만 알고있는 상황에서 요청을 하고, 이 퍼블릭 ip를 거치는 과정에서 여러 보안적 이슈를 해결할 수 있다.

그 다음에 프록시의 역할, 즉 요청하는 프라이빗 ip로의 연결을 대리(proxy)하는것이 바로 프록시 서버의 역할이다.

여기서의 보안적 장점, 그리고 안전한 요청만을 받아 웹 서버 안에서 자동으로 요청하는 서버 ip로 연결해준다는 것에서 프록시 설정이 중요해지는 것이다.

2. 로드밸런싱

로드밸런싱도 프록시와 원리는 비슷하다.

웹 서버의 퍼블릭 ip(DNS)로의 요청을 받아 웹 서버 안에서 원하는 서버에다가 그 요청을 전달하는 것이다.

하지만 문맥, 필요한 상황이 정해져있다.

바로 요청들을 웹 서버 안에서 서로 다른 여러 서버에다가 나눈다는 것이 아니고

한 웹서버에 같은 서버를 여러개 배치(쌍둥이)하고 수많은 클라이언트의 같은 자원 요청했을 때,

한 서버에다 그 요청을 링크하는것이 아니고 여러개의 같은 서버(쌍둥이)에다가 그 요청들을 나누는 것이다.

어차피 그 서버들은 쌍둥이, 즉 같은 내용이기 때문에 응답또한 당연히 같다.

중복, 반복되는 요청을 여러 같은 서버들이 나누어 전담함으로써 과부하로 인한 서버에러를 피할 수 있는 것이다.

#nginx.conf

upstream server-proxy { //로드밸런싱 블록, 이름을 server-proxy 로 설정하였다.
        server 15x.xxx.xxx.x1:8090;
        server 15x.xxx.xxx.x2:8090;
}
server {
        listen 8443 ssl http2;
        server_name xxxxxxxx.com;
        location / {
                proxy_pass http://server-proxy; //upstream에서 설정한 로드밸런싱 이름을 적는다.
        }
}
profile
옥은 부서질 지언정 흰 빛을 잃지 않고, 대나무는 불에 탈 지언정 그 곧음을 잃으려 하지 않는다.

0개의 댓글