관리 메뉴

개발하는 동그리

[Main Project] Nginx Load Balancer 설정 본문

스테이츠 코드(백엔드)/Main Project

[Main Project] Nginx Load Balancer 설정

개발하는 동그리 2022. 10. 3. 01:01
반응형
로드 밸런서 설정 (서버가 죽었을 때 다른 서버에서 정상 작동)
event {
	worker_connections 1024;
}

http {
	include mime.types
    
    // redirect all traffic to Https http 요청을 https 로 redirect
    server {
	    listen 80;
	    server_name [server_ip];
	    return 301 https://$host$reqeust_uri;
    }
    
    server {
    		
            listen 443 ssl http2;
            server_name [server_ip];
            
            root /sites/demo;
            index index.html
            
            ssl_certificate /etc/nginx/ssl/self.crt
            ssl_certificate_key /etc/nginx/ssl/self.key;
            
            location / {
            		try_files $uri $uri/ = 404;
                    proxy_pass http://back-end;  // <------- (1)
            }
    }
    // --------------------------(2) ---------------------
    upstream back-end {
    
    	server localhost:8080;
        server localhost:8081;
    }
     // --------------------------------------------------

 

Load Balencer  방식 설정 

  • round-robin : 랜덤 (default)
  • least-connected : 커넥션이 가장 적은 서버를 할당
  • ip-hash : 클라이언트 IP를 해쉬한 값을 기반으로 특정 서버를 할당

 

    }
    // --------------------------(2) ---------------------
    upstream back-end {
    
    	# least-conneced 설정
        least-conn;
        
        server localhost:8080; weight = 3; 
        server localhost:8081; max_fails = 5 fail_timeout=30s;
        server localhost:8082; backup;
        
        # IP hash 기반으로 하고 싶은 경우 설정
        # ip-hash
    }
     // --------------------------------------------------

 

옵션

  • weitht = n : 업스트림 서버의 비중을 나타내는데, 이 값을 2로 설정하면 설정하지 않은 다른 서버에 비해 두배 더 자주 선택된다. 
  • max_fails = n : n으로 지정한 횟수만큼 실패가 일어나면 서버가 죽은 것으로 간주한다. 
  • fail_timeout = n : max_fails가 지정된 상태에서 이 값이 설정한 시간만큼 응답하지 않으면 죽은것으로 간주한다. 
  • down : 해당 서버를 사용하지 않게 지정한다. (단, ip_hash; 지시어 설정에서만)
  • backup : 모든 서버가 동작하지 않을 때 backup으로 표시된 서버가 사용되고, 그 전에는 사용되지 않는다. 

반응형