ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Virtual IP
    IT/네트워크 2023. 9. 4. 11:28


    VIP
    VIP(Virtual IP)는 네트워크에서 여러 물리적 서버에 할당되는 가상의 단일 IP 주소입니다. 이는 로드 밸런싱, 고가용성, 재해 복구 등 다양한 목적으로 사용될 수 있습니다. 이렇게 하면, 한 대의 서버가 다운되더라도 다른 서버가 그 역할을 대신 할 수 있기 때문에 고가용성과 안정성이 향상됩니다.

     

    VIP는 실무에서 여러 가지 방법으로 활용됩니다. 여러 물리적 서버 또는 가상 서버가 하나의 서비스를 제공하는 경우, VIP를 사용하여 이 서버들을 하나의 IP 주소로 통합할 수 있습니다. 이렇게 하면 클라이언트는 VIP 주소만 알고 있어도 여러 서버 중 하나에 접속할 수 있습니다.

    실무에서 VIP의 주요 사용 사례
    로드 밸런싱: 여러 서버에 트래픽을 고르게 분배하고, 특정 서버가 과부하나 다운될 경우 다른 서버로 자동으로 트래픽을 전환합니다.
    고가용성: 한 서버가 실패할 경우, VIP가 자동으로 다른 서버로 트래픽을 전환하여 서비스 중단을 방지합니다.
    재해 복구: 지리적으로 분산된 여러 데이터 센터에 동일한 서비스를 구성하여, 하나의 센터에 문제가 발생하더라도 다른 센터에서 서비스를 계속할 수 있게 합니다.

     

    NGINX와 VIP
    NGINX는 VIP 구성을 지원하는 로드 밸런서 중 하나입니다. NGINX를 설정하여 여러 백엔드 서버에 트래픽을 분배하고, VIP를 통해 이러한 서버들을 하나의 endpoint로 노출시킬 수 있습니다.

     

     

    장점
    서비스의 안정성과 가용성이 높아집니다.
    유동적으로 리소스를 할당하거나 변경할 수 있습니다.

    단점
    VIP 자체에 문제가 발생하면, 그 아래의 모든 서버들에 영향을 미칠 수 있습니다.

     

     


     

    NGINX 설정에서 자주 사용되는 몇 가지 주요 설정

     

     

    기본적인 설정 조합

    • upstream 모듈을 사용해 백엔드 서버 그룹을 정의합니다.
    • server 블록을 설정하여 리스닝 포트와 서버 이름을 정의합니다.
    • location 블록 내에서 proxy_pass를 사용하여 로드 밸런싱을 설정합니다.

     

     

    1. upstream 모듈
    NGINX 설정 파일에 upstream 모듈을 사용하여 백엔드 서버를 정의합니다.

    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server: 백엔드 서버의 도메인 또는 IP 주소를 나열합니다.

     

     

    2. server 블록

    server 블록은 NGINX 서버 인스턴스를 정의합니다.

    server {
        listen 80;
        server_name example.com www.example.com;
    
        location / {
            proxy_pass http://backend;
        }
    }

    listen: 어떤 포트에서 NGINX가 리스닝할지 정의합니다.
    server_name: 도메인 이름을 설정합니다.

     

    3. location 블록

    location 블록은 특정 URI나 URI 패턴에 대한 처리를 정의합니다.

    location 블록 내에서 이 upstream을 사용하여 로드 밸런싱을 설정합니다.

    location / {
        proxy_pass http://backend;
    }

    proxy_pass: 들어오는 요청을 어느 upstream으로 전달할지 정의합니다.

     

     

    4. proxy_set_header (선택적)

    프록시 요청에 헤더를 추가하거나 수정할 수 있습니다.

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }

    proxy_set_header: 헤더를 설정합니다. $host는 요청의 Host 헤더를 그대로 사용한다는 의미입니다.
    이러한 설정을 통해 NGINX는 들어오는 HTTP 요청을 backend라고 정의된 여러 백엔드 서버 중 하나로 전달합니다.

     

     

     

    Final

    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
    
    server {
        listen 80;
        server_name example.com www.example.com;
    
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
        }
    }

    'IT > 네트워크' 카테고리의 다른 글

    로드 밸런싱(Load Balancing)  (0) 2023.09.04
Designed by Tistory.