본문 바로가기
WIKI 기술 지식 베이스

Installing OpenSearch on Windows

원문 보기 위키 갱신

출처: 문서

본문

Windows에 OpenSearch 설치

다음 섹션에서는 zip 아카이브를 사용해 Windows에 OpenSearch를 설치하는 방법을 설명해요.

일반적으로 zip 아카이브를 통한 OpenSearch 설치는 몇 가지 단계로 나눌 수 있어요:

  1. OpenSearch를 다운로드하고 압축을 풀어요.
  2. (선택 사항) OpenSearch를 테스트해요.
    • 사용자 지정 구성을 적용하기 전에 OpenSearch가 실행되는지 확인해요.
    • 보안 없이(비밀번호 없음, 인증서 없음) 수행하거나, 패키지에 포함된 스크립트로 적용할 수 있는 데모 보안 구성을 사용해 수행할 수 있어요.
  3. 환경에 맞게 OpenSearch를 구성해요.
    • OpenSearch에 기본 설정을 적용하고 환경에서 사용하기 시작해요.

Windows용 OpenSearch 아카이브는 통합 JDK(Java Development Kit)를 포함해 OpenSearch를 실행하는 데 필요한 모든 것을 담고 있는 자체 완결형 디렉터리예요. 자체 Java 설치본이 있고 환경 변수 JAVA_HOME을 설정해 둔 경우, OPENSEARCH_JAVA_HOME 환경 변수가 설정되어 있지 않으면 OpenSearch는 해당 설치본을 사용해요. OPENSEARCH_JAVA_HOME 환경 변수를 설정하는 방법은 3단계: 환경에 OpenSearch 설정하기를 참고하세요.

사전 준비 사항

zip 유틸리티가 설치되어 있는지 확인하세요.

1단계: OpenSearch 다운로드 및 압축 풀기

Windows에 OpenSearch를 설치하려면 다음 단계를 수행하세요.

  1. opensearch-{{site.opensearch_version}}-windows-x64.zip{:target='_blank'} 아카이브를 다운로드하세요.

  2. 아카이브 내용을 추출하려면 마우스 오른쪽 버튼으로 클릭해 Extract All을 선택하세요. 또는 Windows에 포함된 tar 명령을 사용해 명령 프롬프트나 PowerShell에서 아카이브의 압축을 풀 수도 있는데, 대용량 아카이브에서는 이 방법이 더 빨라요:

    tar -xf opensearch-{{site.opensearch_version}}-windows-x64.zip
    

    {% include copy.html %}

추출 경로에 공백이 없도록 하세요. 공백이 있으면 OpenSearch가 시작되지 않아요. {: .warning}

2단계: (선택 사항) OpenSearch 테스트하기

구성 작업을 진행하기 전에 OpenSearch 설치를 테스트하는 것이 좋아요. 그렇지 않으면 나중에 문제가 생겼을 때 그 원인이 설치 문제인지, 설치 후 적용한 사용자 지정 설정인지 파악하기 어려울 수 있어요. 이 단계에서 OpenSearch를 테스트하는 빠른 방법은 두 가지예요:

  1. (보안 활성화) Windows 아카이브에 포함된 배치 스크립트를 사용해 일반 구성을 적용해요.
  2. (보안 비활성화) Security 플러그인을 수동으로 비활성화하고, 자체 사용자 지정 보안 설정을 적용하기 전에 인스턴스를 테스트해요.

배치 스크립트는 OpenSearch 인스턴스에 일반 구성을 적용해요. 이 구성은 몇 가지 환경 변수를 정의하고 자체 서명된 TLS 인증서도 적용해요. 대신 이 항목들을 직접 구성할 수도 있어요.

서비스가 제대로 구성되었는지만 확인하고 싶고 보안 설정은 직접 구성할 계획이라면, Security 플러그인을 비활성화하고 암호화나 인증 없이 서비스를 실행하는 방법을 택할 수도 있어요.

기본 구성 상태의 OpenSearch 노드(데모 인증서와 기본 비밀번호를 사용하는 사용자)는 프로덕션 환경에 적합하지 않아요. 노드를 프로덕션 환경에서 사용할 계획이라면 최소한 데모 TLS 인증서는 자체 TLS 인증서로 교체하고, 내부 사용자 및 비밀번호 목록을 업데이트해야 해요. 노드가 보안 요구 사항에 맞게 구성되었는지 확인하려면 추가 지침에 대해 보안 구성을 참고하세요. {: .warning}

옵션 1: 보안이 활성화된 상태에서 OpenSearch 설정 테스트하기

  1. 명령 프롬프트나 PowerShell에서 데모 배치 스크립트를 실행해요.

    1. 작업 표시줄의 Start 옆에 있는 검색 상자에 cmd를 입력해 명령 프롬프트를 열거나, powershell을 입력해 PowerShell을 열어요.

    2. OpenSearch 설치의 최상위 디렉터리로 이동해요.

      cd \path\to\opensearch-{{site.opensearch_version}}
      

      {% include copy.html %}

    3. 배치 스크립트를 실행해요. OpenSearch 2.12 이상에서는 관리자 비밀번호 요구 사항에 따라 사용자 지정 관리자 비밀번호를 지정해야 해요. 비밀번호를 설정하지 않으면 배치 스크립트가 OpenSearch를 시작하지 않은 채 종료돼요.

      명령 프롬프트에서는 다음 명령을 사용해요:

      set OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password>
      

      {% include copy.html %}

      PowerShell에서는 다음 명령을 사용해요:

      $env:OPENSEARCH_INITIAL_ADMIN_PASSWORD="<custom-admin-password>"
      

      {% include copy.html %}

      명령 프롬프트의 set 명령은 PowerShell에서 환경 변수를 설정하지 않으므로, 사용 중인 셸에 맞는 명령을 사용하도록 하세요. {: .note}

      그다음 배치 스크립트를 실행해요:

      .\opensearch-windows-install.bat
      

      {% include copy.html %}

  2. 새 명령 프롬프트를 열어 서버에 요청을 보내고 OpenSearch가 실행 중인지 확인해요. TLS 인증서가 자체 서명되었기 때문에 필요한 --insecure 플래그가 사용된 점에 유의하세요.

    • 포트 9200으로 요청을 보내요:

      curl.exe -X GET https://localhost:9200 -u "admin:<custom-admin-password>" --insecure
      

      {% include copy.html %}

      다음과 같은 응답을 받게 돼요:

      {
         "name" : "hostname-here",
         "cluster_name" : "opensearch",
         "cluster_uuid" : "7Nqtr0LrQTOveFcBb7Kufw",
         "version" : {
            "distribution" : "opensearch",
            "number" : <version>,
            "build_type" : <build-type>,
            "build_hash" : <build-hash>,
            "build_date" : <build-date>,
            "build_snapshot" : false,
            "lucene_version" : <lucene-version>,
            "minimum_wire_compatibility_version" : "7.10.0",
            "minimum_index_compatibility_version" : "7.0.0"
         },
         "tagline" : "The OpenSearch Project: https://opensearch.org/"
      }
      
    • 플러그인 엔드포인트를 조회해요:

      curl.exe -X GET https://localhost:9200/_cat/plugins?v -u "admin:<custom-admin-password>" --insecure
      

      {% include copy.html %}

      응답은 다음과 같아야 해요:

      name     component                            version
      hostname opensearch-alerting                  {{site.opensearch_version}}
      hostname opensearch-anomaly-detection         {{site.opensearch_version}}
      hostname opensearch-asynchronous-search       {{site.opensearch_version}}
      hostname opensearch-cross-cluster-replication {{site.opensearch_version}}
      hostname opensearch-custom-codecs             {{site.opensearch_version}}
      hostname opensearch-flow-framework            {{site.opensearch_version}}
      hostname opensearch-geospatial                {{site.opensearch_version}}
      hostname opensearch-index-management          {{site.opensearch_version}}
      hostname opensearch-job-scheduler             {{site.opensearch_version}}
      hostname opensearch-knn                       {{site.opensearch_version}}
      hostname opensearch-ltr                       {{site.opensearch_version}}
      hostname opensearch-ml                        {{site.opensearch_version}}
      hostname opensearch-neural-search             {{site.opensearch_version}}
      hostname opensearch-notifications             {{site.opensearch_version}}
      hostname opensearch-notifications-core        {{site.opensearch_version}}
      hostname opensearch-observability             {{site.opensearch_version}}
      hostname opensearch-reports-scheduler         {{site.opensearch_version}}
      hostname opensearch-search-relevance          {{site.opensearch_version}}
      hostname opensearch-security                  {{site.opensearch_version}}
      hostname opensearch-security-analytics        {{site.opensearch_version}}
      hostname opensearch-skills                    {{site.opensearch_version}}
      hostname opensearch-sql                       {{site.opensearch_version}}
      hostname opensearch-system-templates          {{site.opensearch_version}}
      hostname opensearch-ubi                       {{site.opensearch_version}}
      hostname query-insights                       {{site.opensearch_version}}
      

옵션 2: 보안이 비활성화된 상태에서 OpenSearch 설정 테스트하기

  1. opensearch-{{site.opensearch_version}}\config 폴더를 열어요.

  2. 텍스트 편집기로 opensearch.yml 파일을 열어요.

  3. Security 플러그인을 비활성화하려면 다음 줄을 추가해요:

    plugins.security.disabled: true
    

    {% include copy.html %}

  4. 변경 사항을 저장하고 파일을 닫아요.

  5. OpenSearch 설치의 최상위 디렉터리로 이동해 opensearch-{{site.opensearch_version}} 폴더를 열어요.

  6. opensearch-windows-install.bat 파일을 더블클릭해 기본 설치를 실행해요. 그러면 OpenSearch 인스턴스가 실행 중인 명령 프롬프트가 열려요.

  7. 새 명령 프롬프트를 열어 서버에 요청을 보내고 OpenSearch가 실행 중인지 확인해요. Security 플러그인이 비활성화되었기 때문에 HTTPS가 아닌 HTTP로 명령을 보내게 돼요.

    • 포트 9200으로 요청을 보내요:

      curl.exe -X GET http://localhost:9200
      

      {% include copy.html %}

      다음과 같은 응답을 받게 돼요:

      {
         "name" : "hostname-here",
         "cluster_name" : "opensearch",
         "cluster_uuid" : "7Nqtr0LrQTOveFcBb7Kufw",
         "version" : {
            "distribution" : "opensearch",
            "number" : "{{site.opensearch_version}}",
            "build_type" : "zip",
            "build_hash" : <build-hash>,
            "build_date" : <build-date>,
            "build_snapshot" : false,
            "lucene_version" : <lucene-version>,
            "minimum_wire_compatibility_version" : "2.19.0",
            "minimum_index_compatibility_version" : "2.0.0"
         },
         "tagline" : "The OpenSearch Project: https://opensearch.org/"
      }
      
    • 플러그인 엔드포인트를 조회해요:

      curl.exe -X GET http://localhost:9200/_cat/plugins?v
      

      {% include copy.html %}

      응답은 다음과 같아야 해요:

      name     component                            version
      hostname opensearch-alerting                  {{site.opensearch_version}}
      hostname opensearch-anomaly-detection         {{site.opensearch_version}}
      hostname opensearch-asynchronous-search       {{site.opensearch_version}}
      hostname opensearch-cross-cluster-replication {{site.opensearch_version}}
      hostname opensearch-custom-codecs             {{site.opensearch_version}}
      hostname opensearch-flow-framework            {{site.opensearch_version}}
      hostname opensearch-geospatial                {{site.opensearch_version}}
      hostname opensearch-index-management          {{site.opensearch_version}}
      hostname opensearch-job-scheduler             {{site.opensearch_version}}
      hostname opensearch-knn                       {{site.opensearch_version}}
      hostname opensearch-ltr                       {{site.opensearch_version}}
      hostname opensearch-ml                        {{site.opensearch_version}}
      hostname opensearch-neural-search             {{site.opensearch_version}}
      hostname opensearch-notifications             {{site.opensearch_version}}
      hostname opensearch-notifications-core        {{site.opensearch_version}}
      hostname opensearch-observability             {{site.opensearch_version}}
      hostname opensearch-reports-scheduler         {{site.opensearch_version}}
      hostname opensearch-search-relevance          {{site.opensearch_version}}
      hostname opensearch-security                  {{site.opensearch_version}}
      hostname opensearch-security-analytics        {{site.opensearch_version}}
      hostname opensearch-skills                    {{site.opensearch_version}}
      hostname opensearch-sql                       {{site.opensearch_version}}
      hostname opensearch-system-templates          {{site.opensearch_version}}
      hostname opensearch-ubi                       {{site.opensearch_version}}
      hostname query-insights                       {{site.opensearch_version}}
      

OpenSearch를 중지하려면 명령 프롬프트나 PowerShell에서 Ctrl+C를 누르거나, 명령 프롬프트나 PowerShell 창을 그냥 닫으면 돼요. {: .tip}

3단계: 환경에 OpenSearch 설정하기

OpenSearch를 사용해 본 적이 없는 사용자라면 서비스를 시작하는 데 도움이 되도록 권장 설정 목록이 필요할 수 있어요. 기본적으로 OpenSearch는 네트워크 인터페이스에 바인딩되지 않아 외부 호스트에서 접근할 수 없어요. 또한 보안 설정은 정의되어 있지 않거나(신규 설치), opensearch-windows-install.bat. 실행을 통해 보안 데모 스크립트를 호출한 경우 기본 사용자 이름과 비밀번호로 채워져 있어요. 다음 권장 사항을 따르면 OpenSearch를 네트워크 인터페이스에 바인딩할 수 있어요.

다음 권장 설정을 적용하면 다음 작업을 할 수 있어요:

  • OpenSearch를 호스트의 IP 또는 네트워크 인터페이스에 바인딩해요.
  • 초기 및 최대 JVM 힙 크기를 설정해요.
  • 번들로 제공되는 JDK를 가리키는 환경 변수를 정의해요.

다음 단계는 옵션 1에서 Security 플러그인에 필요한 TLS 인증서를 구성해 주는 보안 데모 스크립트를 실행했다고 가정해요. Security 플러그인이 활성화된 상태에서 TLS 구성 없이 OpenSearch를 시작하려 하면 시작에 실패해요. 옵션 2로 OpenSearch를 테스트했다면, plugins.security.disabled: false를 추가하는 대신 opensearch.yml에서 plugins.security.disabled: true 줄을 제거하세요. opensearch.yml에 같은 설정이 두 번 이상 포함되면 Duplicate Object property 오류가 발생해 OpenSearch 시작에 실패해요. 진행하기 전에 보안 구성을 참고하세요. {:.note}

구성 파일을 수정하기 전에는 항상 변경 전에 백업 사본을 저장하는 것이 좋아요. 백업 파일은 잘못된 구성으로 인해 발생한 문제를 되돌릴 때 사용할 수 있어요. {:.tip}

  1. opensearch-{{site.opensearch_version}}\config 폴더를 열어요.

  2. 텍스트 편집기로 opensearch.yml 파일을 열어요.

  3. 다음 줄을 추가해요:

    # Bind OpenSearch to the correct network interface. Use 0.0.0.0
    # to include all available interfaces or specify an IP address
    # assigned to a specific interface.
    network.host: 0.0.0.0
    
    # Unless you have already configured a cluster, you should set
    # discovery.type to single-node, or the bootstrap checks will
    # fail when you try to start the service.
    discovery.type: single-node
    
    # If you previously disabled the Security plugin in opensearch.yml,
    # be sure to re-enable it. Otherwise you can skip this setting.
    plugins.security.disabled: false
    

    {% include copy.html %}

  4. 변경 사항을 저장하고 파일을 닫아요.

  5. 초기 및 최대 JVM 힙 크기를 지정해요.

    1. opensearch-{{site.opensearch_version}}\config 폴더를 열어요.
    2. 텍스트 편집기로 jvm.options 파일을 열어요.
    3. 초기 및 최대 힙 크기를 수정해요. 시작점으로는 이 값을 사용 가능한 시스템 메모리의 절반으로 설정하는 것이 좋아요. 전용 호스트라면 워크플로 요구 사항에 따라 이 값을 늘릴 수 있어요.
      예를 들어 호스트 머신에 메모리가 8 GB 있다면, 초기 및 최대 힙 크기를 4 GB로 설정하는 것이 좋을 수 있어요:
    -Xms4g
    -Xmx4g
    

    {% include copy.html %}

    1. 변경 사항을 저장하고 파일을 닫아요.
  6. 포함된 JDK의 위치를 지정해요.

    1. 작업 표시줄의 Start 옆에 있는 검색 상자에 edit environment variables for your account 또는 edit the system environment variables를 입력해요. 시스템 환경 변수를 편집하려면 관리자 권한이 필요해요. 사용자 환경 변수는 시스템 환경 변수보다 우선 적용돼요.

더 알아보기 (Learn more)