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

Configuring OpenSearch

원문 보기 위키 갱신

출처: 문서

본문

OpenSearch 구성

OpenSearch의 모든 설정은 클러스터 설정이거나 인덱스 설정 중 하나예요. 클러스터 설정은 클러스터 전체 또는 개별 노드에 적용돼요. 인덱스 설정은 단일 인덱스에 적용되며 이름이 index.로 시작해요. 이 섹션의 설정 페이지에서는 네트워킹, 보안, 스레드 풀 같은 영역별로 묶인 클러스터 설정을 나열해요. 인덱스 설정에 대한 자세한 내용은 인덱스 설정 문서를 참고하세요.

설정은 정적 설정이거나 동적 설정이기도 해요. 설정이 정적인지 동적인지에 따라 OpenSearch가 실행 중일 때 변경할 수 있는지가 결정돼요.

다음 표는 클러스터 설정을 지정할 수 있는 방법을 정리한 거예요.

방법 설정 유형 적용 대상 변경 적용 시점
구성 파일 (opensearch.yml) 정적 및 동적 노드 노드 시작 시
시작 옵션 (커맨드라인 플래그 또는 환경 변수) 정적 및 동적 노드 노드 시작 시
클러스터 설정 API 동적 전용 클러스터 전체 즉시

클러스터 설정을 두 가지 이상 방법으로 지정하면 OpenSearch는 설정 우선순위를 기준으로 사용할 값을 결정해요.

정적 설정

정적 설정은 클러스터가 실행 중인 동안 업데이트할 수 없는 설정이에요. 정적 설정을 변경하려면 각 노드에서 opensearch.yml을 수정하거나 시작 플래그로 업데이트한 다음 노드를 재시작해야 해요. 일반적으로 정적 설정은 네트워킹, 클러스터 형성, 로컬 파일 시스템과 관련돼요. 자세한 내용은 클러스터 생성하기 문서를 참고하세요.

동적 설정

동적 설정은 클러스터가 실행 중인 동안에도 업데이트할 수 있는 설정이에요. 동적 설정은 클러스터 설정 API를 포함해 이 페이지의 어떤 방법으로든 지정할 수 있어요. 자세한 내용은 API를 사용해 클러스터 설정 업데이트하기를 참고하세요.

클러스터 전체에 적용되는 동적 설정에는 클러스터 설정 API를 사용하는 걸 추천해요. API로 업데이트한 설정은 모든 노드에 적용되기 때문에 클러스터 전체에서 구성이 일관되게 유지되고 구성 변경 내역도 추적하기 쉬워요. {: .tip}

구성 파일

opensearch.yml 파일은 각 노드의 /usr/share/opensearch/config/opensearch.yml(Docker) 또는 /etc/opensearch/opensearch.yml(대부분의 Linux 배포판)에서 찾을 수 있어요.

구성 디렉터리 위치를 변경하려면 OPENSEARCH_PATH_CONF 환경 변수를 설정하세요. 예를 들어 OPENSEARCH_PATH_CONF=/etc/opensearch와 같아요. 이 변수는 /etc/default/opensearch(Debian 패키지)와 /etc/sysconfig/opensearch(RPM 패키지)에서 가져와요.

커스텀 OPENSEARCH_PATH_CONF 변수를 설정하면 다른 기본 환경 변수는 로드되지 않아요.

opensearch.yml의 설정은 persistent나 transient로 표시되지 않아요. 다음 예시는 flat 형식을 사용해요:

cluster.name: my-application
action.auto_create_index: true
compatibility.override_main_response_version: true

데모 구성에는 프로덕션 워크로드에 OpenSearch를 사용하기 전에 수정해야 할 Security 플러그인 설정이 여러 개 들어 있어요. 자세한 내용은 Security 문서를 참고하세요.

(선택 사항) CORS 헤더 구성

다른 도메인의 OpenSearch 클러스터를 대상으로 동작하는 클라이언트 애플리케이션을 개발하는 경우, opensearch.yml에 헤더를 구성하면 같은 머신에서 로컬 애플리케이션을 개발할 수 있어요. 애플리케이션이 로컬에서 실행 중인 OpenSearch API를 호출할 수 있도록 Cross-Origin Resource Sharing을 사용하세요. opensearch.yml에 다음 줄을 추가하세요:

http.host: 0.0.0.0
http.port: 9200
http.cors.allow-origin: "http://localhost"
http.cors.enabled: true
http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
http.cors.allow-credentials: true

{% include copy.html %}

시작 시 구성 설정 지정하기

OpenSearch를 시작할 때는 커맨드라인 플래그나 환경 변수로 설정을 지정할 수 있어요. 이 설정은 시작하는 노드에만 적용돼요.

커맨드라인 플래그

시작 시 설정을 OpenSearch에 바로 전달하려면 -E 플래그를 사용하세요:

./opensearch -Ecluster.name=opensearch-cluster -Enode.name=opensearch-node1 -Ehttp.host=0.0.0.0 -Ediscovery.type=single-node

{% include copy.html %}

환경 변수

OpenSearch는 시작 프로세스를 구성하는 환경 변수를 읽어들여요. 예를 들어 JVM 옵션에는 OPENSEARCH_JAVA_OPTS를, 구성 디렉터리 위치에는 OPENSEARCH_PATH_CONF를 사용해요.

환경 변수로 OpenSearch 설정을 지정하려면 커스텀 환경 변수를 정의한 다음 opensearch.yml에서 ${ENV_VAR} 문법으로 참조하세요:

node.name: ${NODE_NAME}
cluster.name: ${CLUSTER_NAME}

{% include copy.html %}

환경 변수는 셸, systemd 서비스 파일, Docker 컨테이너에서 설정할 수 있어요.

셸

셸에서 환경 변수를 설정하려면 OpenSearch를 시작하기 전에 export하세요. 다음 명령어는 같은 셸 세션에서 실행하세요.

JVM 힙 크기를 설정하려면 OPENSEARCH_JAVA_OPTS 변수를 export하세요:

export OPENSEARCH_JAVA_OPTS="-Xms2g -Xmx2g"

{% include copy.html %}

구성 디렉터리 위치를 설정하려면 OPENSEARCH_PATH_CONF 변수를 export하세요:

export OPENSEARCH_PATH_CONF="/etc/opensearch"

{% include copy.html %}

그다음 OpenSearch를 시작하세요:

./opensearch

{% include copy.html %}

OpenSearch 설정을 직접 export하지는 마세요. 예를 들어 export discovery.type=single-node 같은 식으로요. 설정 이름에는 점이 들어 있는데, 대부분의 셸은 변수 이름에 점을 허용하지 않아요. 시작 시 설정을 바로 전달하려면 -E 플래그를 사용하세요. 자세한 내용은 커맨드라인 플래그를 참고하세요.

systemd 서비스 파일

OpenSearch를 systemd가 관리하는 서비스로 실행할 때는 서비스 오버라

설정 참조

다음 페이지들은 영역별로 그룹화된 클러스터 설정을 나열해요:

다음 페이지는 개별 인덱스에 적용되는 설정을 나열해요:

다음 페이지들은 그 밖의 구성 옵션을 설명해요:

관련 문서

클러스터 설정을 조회하고 업데이트하는 방법을 알아보려면 Cluster Settings API를 참조하세요.

더 알아보기 (Learn more)