개발일지

개발일지 70일차

index.ys 2023. 6. 9. 00:37

 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