nginx
- WAS의 부담을 덜어주기 위한 중계서버
- 리버스 프록시
- 클라이언트 요청시 master nginx process가 수신하여 worker process가 요청을 처리
- master process가 부모 process로 실행 worker process가 자식 process로 실행
- 비동기처리 가능
로드밸런싱
- 서버가 부담하는 부하를 분산해주는 장치
- 보통 700명 이상의 유저가 생성되었을때 로드밸런스 적용
로드밸런싱 방법
- scale up : 기존 서버의 성능을 높임 (컴퓨터의 부품)
- scale out : 여러대의 서버를 두어 트래픽을 분산 물리적 or 논리적 ( nginx )
로드밸런싱 구현
- 80번 포트에 요청이 들어오면 3001번포트부터 3003포트에 열려있는 3개의 서버로 로드밸런싱 진행
- 기본값은 round robbin = 요청을 순서대로 3001=> 3002=> 3003 포트 순서대로 처리함
- least_conn = 서버에 할당된 가중치를 고려해 연결 수가 가장 적은 서버로 연결
- ip_hash = 한번 요청받은 서버가 있을때 해당서버에만 계속 요청 ex) 192.158.246.25은 3002번 포트로만 계속해서 접속
- least_time = 연결수가 가정적으면서 평균 응답시간이 가장적은 쪽을 선택해서 분배
upstream 업스트림이름{
#ip별로 균등하게 서버분배 defalut는 round robbin
ip_hash
server ubuntu주소:3001
server ubuntu주소:3002
server ubuntu주소:3003
}
server{
listen 80
server_name 푸댕푸댕.net;
location / { #root경로로 요청시
proxy_pass http://nodejs_servers;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
ubutu 명령어
- conf파일 설정후 nginx 파일 재실행 명령어
service nginx reload
- nginx 파일 유효성 검사
# Test the config
sudo nginx -t