NGINX 뒤의 스토리지 축소

제 생각에는 NGINX 소개가 필요하지 않습니다. 가장 널리 사용되는 HTTP 서버 및 리버스 프록시 중 하나입니다. 이를 통해 마이크로서비스 또는 모놀리식 애플리케이션을 라우팅하고 다음을 담당하도록 할 수 있습니다.
  • TSL 암호화
  • 기본 HTTP 인증
  • 공용 URL을 서비스 또는 응용 프로그램에 매핑
  • 로드 밸런싱

  • 다음은 NGINX의 일반적인 사용 사례입니다.



    Reduct Storage은 TSL 암호화 및 토큰 인증을 지원하지만 NGINX가
    유용한:
  • 스토리지 엔진을 기존 인프라에 통합합니다.
  • TSL 인증서를 자동으로 얻기 위해 CertBot 또는 기타 도구를 사용합니다.
  • 하나의 노드에 여러 개의 Reduction Storage 인스턴스가 있습니다.

  • 마지막 사례는 Reduct Storage가 비동기 단일 스레드 애플리케이션이기 때문에 특히 유용할 수 있습니다. 이것은 스토리지 엔진을 매우 강력하고 효율적으로 만들지 만 확장하려면 새 인스턴스를 가동해야 합니다.

    이 튜토리얼에서는 Docker Compose를 사용하여 두 개의 Reduct Storage 인스턴스를 시작하고 NGINX에서 하위 경로를 사용하여 분할하는 방법을 보여드리겠습니다.

    Docker Compose 구성



    먼저 docker-compose.yml 파일을 준비해야 합니다.

    version: "3"
    services:
      storage-1:
        image: reductstorage/engine:latest
        environment:
          RS_API_BASE_PATH: "storage-1/"  # API available on http://storage-1/storage-1
        volumes:
          - ./storage-1:/data             # separated volume for data
    
      storage-2:
        image: reductstorage/engine:latest
        environment:
          RS_API_BASE_PATH: "storage-2/"
        volumes:
          - ./storage-2:/data   
    
      nginx:
        image: nginx:alpine
        volumes:
          - ./nginx/nginx.conf:/etc/nginx/nginx.conf    # pass customised configuration to NGINX
        depends_on:
          - storage-1
          - storage-2
        ports:
          - "80:80"                       # public port
    


    여기에서 두 개의 완전히 독립적인 스토리지 엔진을 볼 수 있습니다. 서로 다른 볼륨을 사용하고 API 경로가 다릅니다.
    기본적으로 HTTP API 및 웹 콘솔은 http(s)://hostname:port/ 에서 액세스할 수 있지만 변수를 사용하여 변경할 수 있습니다.RS_API_BASE_PATH . 실제로 NGINX를 사용하여 storage-1 및 storage-2 경로를 다른 인스턴스에 매핑하고 유지할 수 있습니다.
    기본 API 경로이지만 웹 콘솔이 작동을 멈춥니다.

    또한 엔진의 포트를 게시하지 않는다는 점에 유의해야 합니다. 유일한 공용 포트는 NGINX에서 사용하는 80입니다. 우리는 엔진을 비공개 영역에 유지하고 리버스 프록시를 통해 액세스합니다.

    NGINX 구성



    이제 NGINX를 설정해야 합니다. 이를 위해 자체 파일nginx.conf을 생성하고 컨테이너에 볼륨으로 마운트합니다.
    전체 구성here을 찾을 수 있습니다. 변경 사항은 다음과 같습니다.

    http {
        /* default configuration */
    
        upstream storage-1 {
            server storage-1:8383;
        }
    
        upstream storage-2 {
            server storage-2:8383;
        }
    
        server {
            listen 80;
            server_name nginx;
    
            location /storage-1/ {
                proxy_pass http://storage-1/storage-1/;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
            }
    
            location /storage-2/ {
                proxy_pass http://storage-2/storage-2/;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
            }
        }
    


    아이디어는 매우 간단합니다. 스토리지 엔진을 업스트림 서버 storage-1 및 storage-2로 지정합니다. 그 다음에
    위치 지시어를 사용하여 경로/storage-1//storage-2/를 업스트림 서버에 매핑합니다.

    모든 것을 docker-compose up와 함께 실행하면 http://127.0.0.1/storage-1/http://127.0.0.1/storage-2/에서 사용 가능한 두 엔진을 모두 찾을 수 있습니다.

    결론



    Reduct Storage에는 데이터에 액세스할 수 있는 HTTP API가 있으므로 NGINX, Apache, K8S 등과 같은 다른 기술과 함께 쉽게 사용하고 인프라에 통합할 수 있습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

    추신



    rawpixel.com에 대해 featured image 감사합니다.

    좋은 웹페이지 즐겨찾기