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

Network settings

원문 보기 위키 갱신

출처: 문서

본문

네트워크 설정

OpenSearch는 REST API를 통해 외부 클라이언트와의 통신을 구성하기 위해 HTTP 설정을 사용하고, OpenSearch 내부의 노드 간 통신을 위해 전송 설정을 사용해요.

이 설정을 적용하는 방법을 알아보려면 OpenSearch 구성을 참조해요.

OpenSearch는 다음과 같은 일반적인 네트워크 설정을 지원해요.

  • network.host (Static, list): OpenSearch 노드를 주소에 바인딩해요. 0.0.0.0을 사용하면 사용 가능한 모든 네트워크 인터페이스를 포함하고, 특정 인터페이스에 할당된 IP 주소를 지정할 수 있어요. network.host 설정은 network.bind_host와 network.publish_host가 동일한 값일 때 이 둘을 결합한 것이에요. network.host의 대안으로 필요에 따라 network.bind_host와 network.publish_host를 별도로 구성할 수 있어요. 고급 네트워크 설정을 참조해요.

  • http.port (Static, single value or range): OpenSearch 노드를 HTTP 통신을 위한 사용자 지정 포트 또는 포트 범위에 바인딩해요. 주소 또는 주소 범위를 지정할 수 있어요. 기본값은 9200-9300이에요.

  • transport.port (Static, single value or range): OpenSearch 노드를 노드 간 통신을 위한 사용자 지정 포트에 바인딩해요. 주소 또는 주소 범위를 지정할 수 있어요. 기본값은 9300-9400이에요.

고급 네트워크 설정

OpenSearch는 다음과 같은 고급 네트워크 설정을 지원해요.

  • network.bind_host (Static, list): OpenSearch 노드를 들어오는 연결을 위한 주소 또는 주소들에 바인딩해요. 기본값은 network.host의 값이에요.

  • network.publish_host (Static, list): OpenSearch 노드가 클러스터의 다른 노드에 게시하여 연결할 수 있도록 하는 주소 또는 주소들을 지정해요.

일반 TCP 설정

OpenSearch는 HTTP 및 전송 계층을 포함한 모든 네트워크 연결에 적용되는 다음과 같은 TCP 설정을 지원해요.

  • network.tcp.keep_alive (Static, Boolean): OpenSearch에서 사용하는 모든 TCP 연결(HTTP 및 전송 계층 포함)에 대해 TCP keep-alive를 활성화하거나 비활성화해요. 활성화하면 운영 체제가 주기적으로 keep-alive 패킷을 보내서 끊어진 연결을 감지해요. 기본값은 true예요.

  • network.tcp.no_delay (Static, Boolean): 모든 TCP 연결에 대해 TCP_NODELAY 옵션을 활성화하거나 비활성화해요. 활성화하면 Nagle 알고리즘이 비활성화되어 네트워크 트래픽 증가를 대가로 작은 메시지의 지연 시간을 줄일 수 있어요. 이는 HTTP 및 전송 연결 모두에 적용돼요. 기본값은 true예요.

  • network.tcp.receive_buffer_size (Static, byte unit): OpenSearch에서 사용하는 모든 TCP 연결에 대한 TCP 수신 버퍼 크기를 설정해요. 이는 HTTP 및 전송 연결 모두에 영향을 미쳐요. 버퍼가 크면 높은 대역폭 연결의 처리량을 향상시킬 수 있어요. 기본적으로 명시적으로 설정되지 않으며 운영 체제 기본값을 사용해요.

  • network.tcp.reuse_address (Static, Boolean): 모든 TCP 연결에 대해 TCP 주소를 재사용할 수 있는지 제어해요. 이는 HTTP 및 전송 연결 모두의 소켓 바인딩 동작에 영향을 미쳐요. 기본값은 Windows가 아닌 머신에서는 true이고 Windows에서는 false예요.

  • network.tcp.send_buffer_size (Static, byte unit): OpenSearch에서 사용하는 모든 TCP 연결에 대한 TCP 송신 버퍼 크기를 설정해요. 이는 HTTP 및 전송 연결 모두에 영향을 미쳐요. 버퍼가 크면 높은 대역폭 연결의 처리량을 향상시킬 수 있어요. 기본적으로 명시적으로 설정되지 않으며 운영 체제 기본값을 사용해요.

  • network.server (Static, Boolean): 네트워크 서버 기능을 활성화해요. 기본값은 true예요.

  • network.tcp.keep_count (Static, integer): 연결이 끊기기 전까지의 TCP keep-alive 프로브 수예요. 기본값은 -1(시스템 기본값)이에요. 최소값은 -1이에요.

  • network.tcp.keep_idle (Static, integer): TCP keep-alive 프로브를 시작하기 전의 시간(초)이에요. 기본값은 -1(시스템 기본값)이에요. 최소값은 -1이에요. 최대값은 300이에요.

  • network.tcp.keep_interval (Static, integer): TCP keep-alive 프로브 사이의 시간 간격(초)이에요. 기본값은 -1(시스템 기본값)이에요. 최소값은 -1이에요. 최대값은 300이에요.

  • network.tcp.connect_timeout (Static, time unit): 모든 네트워크 계층에서 TCP 연결을 설정하기 위한 시간 제한을 설정해요. 이 설정은 HTTP 및 전송 연결 모두에 적용되며, 시간 초과 전에 연결이 설정될 때까지 기다리는 시간을 제어해요. 기본값은 30s예요.

고급 HTTP 설정

OpenSearch는 HTTP 통신을 위한 다음과 같은 고급 네트워크 설정을 지원해요.

  • http.host (Static, list): HTTP 통신을 위한 OpenSearch 노드의 주소를 설정해요. http.host 설정은 http.bind_host와 http.publish_host가 동일한 값일 때 이 둘을 결합한 것이에요. http.host의 대안으로 필요에 따라 http.bind_host와 http.publish_host를 별도로 구성할 수 있어요.

  • http.bind_host (Static, list): OpenSearch 노드가 들어오는 HTTP 연결을 수신하기 위해 바인딩하는 주소 또는 주소들을 지정해요.

  • http.publish_host (Static, list): OpenSearch 노드가 HTTP 통신을 위해 다른 노드에 게시하는 주소 또는 주소들을 지정해요.

  • http.compression (Static, Boolean): 해당하는 경우 Accept-Encoding을 사용한 압축 지원을 활성화해요. HTTPS가 활성화된 경우 기본값은 false이고, 그렇지 않으면 기본값은 true예요. HTTPS에 대해 압축을 비활성화하면 BREACH 공격과 같은 잠재적인 보안 위험을 완화하는 데 도움이 돼요. HTTPS 트래픽에 대해 압축을 활성화하려면 http.compression을 명시적으로 true로 설정해요.

  • http.max_header_size: (Static, string) 요청에 허용되는 모든 HTTP 헤더의 최대 총 크기예요. 기본값은 16KB예요.

  • http.compression_level (Static, integer): 압축이 활성화된 경우 HTTP 응답에 사용할 압축 수준을 정의해요. 유효한 값은 1(최소 압축)부터 9(최대 압축)까지의 범위예요. 값이 높을수록 압축률은 좋지만 CPU 리소스를 더 많이 사용해요. 기본값은 3이에요.

  • http.max_chunk_size (Static, byte unit): 요청 및 응답 처리를 위한 HTTP 청크의 최대 크기를 설정해요. 이 설정은 HTTP 메시지가 전송을 위해 더 작은 조각으로 나뉘는 방식을 제어해요. 청크 크기가 크면 큰 요청의 처리량이 향상될 수 있지만 메모리 사용량이 증가할 수 있어요. 기본값은 8kb예요.

  • http.max_content_length (Static, byte unit): HTTP 요청에 허용되는 최대 콘텐츠 길이를 설정해요. 이 제한을 초과하는 요청은 거부돼요. 이 설정은 매우 큰 요청으로 인한 메모리 문제를 방지하는 데 도움이 돼요. 기본값은 100mb예요.

  • http.max_initial_line_length (Static, byte unit): 초기 요청 라인에서 HTTP URL에 허용되는 최대 길이를 설정해요. 이 제한을 초과하는 URL은 거부돼요. 기본값은 4kB예요.

  • http.max_warning_header_count (Static, integer): 클라이언트에 대한 HTTP 응답에 포함될 수 있는 최대 경고 헤더 수를 설정해요. 경고 헤더는 요청 처리에 대한 추가 정보를 제공해요. 기본값은 제한 없음(무제한)이에요.

  • http.max_warning_header_size (Static, byte unit): 클라이언트에 대한 HTTP 응답에서 모든 경고 헤더의 최대 총 크기를 설정해요. 이는 응답 헤더가 너무 커지는 것을 방지하는 데 도움이 돼요. 기본값은 제한 없음(무제한)이에요.

  • http.pipelining.max_events (Static, integer): HTTP 연결이 닫히기 전에 메모리에 대기열에 추가될 수 있는 최대 이벤트 수를 설정해요. 이 설정은 파이프라인된 HTTP 요청의 메모리 사용량을 관리하는 데 도움이 돼요. 기본값은 10000이에요.

  • http.publish_port (Static, integer): HTTP 클라이언트가 이 노드와 통신할 때 사용해야 하는 포트를 지정해요. 이 설정은 클러스터 노드가 프록시나 방화벽 뒤에 있고 실제 http.port가 네트워크 외부에서 직접 접근할 수 없을 때 유용해요. 기본값은 http.port를 통해 할당된 실제 포트예요.

  • http.tcp.no_delay (Static, Boolean): HTTP 연결에 대한 TCP_NODELAY 옵션을 제어해요. 활성화하면 Nagle 알고리즘이 비활성화되어 네트워크 트래픽 증가를 대가로 작은 메시지의 지연 시간을 줄일 수 있어요. 기본값은 true예요.

HTTP CORS 설정

OpenSearch는 HTTP에 대한 다음과 같은 CORS(Cross-Origin Resource Sharing) 설정을 지원해요.

  • http.cors.enabled (Static, Boolean): HTTP 요청에 대한 CORS를 활성화하거나 비활성화해요. 활성화하면 OpenSearch가 CORS 사전 요청을 처리하고 요청 출처가 허용된 경우 적절한 Access-Control-Allow-Origin 헤더로 응답해요. 비활성화하면 OpenSearch가 Origin 요청 헤더를 무시하여 CORS를 효과적으로 비활성화해요. 기본값은 false예요.

  • http.cors.allow-origin (Static, list): CORS 요청에 허용되는 출처를 지정해요. 와일드카드(*)를 사용하여 모든 출처를 허용할 수 있지만 이는 보안 위험으로 간주돼요. 또한 값을 슬래시로 감싸서 정규 표현식을 사용할 수 있어요(예: /https?:\/\/localhost(:[0-9]+)?/). 기본값은 허용되는 출처가 없음이에요.

  • http.cors.allow-methods (Static, list): CORS 요청에 허용되는 HTTP 메서드를 지정해요. 기본값은 OPTIONS, HEAD, GET, POST, PUT, DELETE예요.

  • http.cors.allow-headers (Static, list): CORS 요청에 허용되는 HTTP 헤더를 지정해요. 기본값은 X-Requested-With, Content-Type, Content-Length예요.

  • http.cors.allow-credentials (Static, Boolean): CORS 응답에 Access-Control-Allow-Credentials 헤더를 포함할지 제어해요. 이 헤더는 이 설정이 true인 경우에만 반환돼요. 기본값은 false예요.

  • http.cors.max-age (Static, time unit): 브라우저가 CORS 사전 요청 OPTIONS의 결과를 캐시해야 하는 기간을 정의해요. 브라우저는 실제 교차 출처 요청을 하기 전에 CORS 설정을 확인하기 위해 사전 요청을 보내요. 기본값은 1728000초(20일)예요.

HTTP 오류 처리 설정

OpenSearch는 다음과 같은 HTTP 오류 처리 설정을 지원해요.

  • http.detailed_errors.enabled (Static, Boolean): HTTP 응답 출력에 상세 오류 메시지 및 스택 추적을 포함할지 제어해요. false로 설정하면 error_trace 요청 매개변수가 지정되지 않는 한 간단한 오류 메시지만 반환돼요(상세 오류가 비활성화된 경우 오류가 반환됨). 기본값은 true예요.

HTTP 디버깅 설정

OpenSearch는 HTTP 통신 추적을 위한 다음과 같은 HTTP 디버깅 설정을 지원해요.

  • http.tracer.include (Dynamic, list): HTTP 추적에 포함할 HTTP 요청 경로 또는 와일드카드 패턴의 쉼표로 구분된 목록을 지정해요. 구성된 경우 이러한 패턴과 일치하는 HTTP 요청만 로그에 추적돼요. 이 설정은 특정 HTTP 엔드포인트 또는 API 호출을 디버깅하는 데 유용해요. 기본값은 [](빈 목록, HTTP 추적이 활성화되면 모든 요청을 추적함)이에요.

  • http.tracer.exclude (Dynamic, list): HTTP 추적에서 제외할 HTTP 요청 경로 또는 와일드카드 패턴의 쉼표로 구분된 목록을 지정해요. 이러한 패턴과 일치하는 HTTP 요청은 HTTP 추적이 활성화된 경우에도 로그에 추적되지 않아요. 이 설정은 빈번하거나 중요하지 않은 엔드포인트의 노이즈를 줄이는 데 유용해요. 기본값은 [](빈 목록, HTTP 추적이 활성화되면 제외 없음)이에요.

  • http.netty.receive_predictor_size (Static, byte size): Netty HTTP 전송에 대한 초기 수신 버퍼 크기 예측값이에요. 기본값은 64kb예요.

  • http.netty.worker_count (Static, integer): Netty HTTP 전송을 위한 작업자 스레드 수예요. 기본값은 0(자동 감지)이에요.

  • http.read_timeout (Static, time unit): HTTP 연결에 대한 읽기 시간 제한이에요. 기본값 0은 읽기 시간 제한이 없음을 의미해요. 기본값은 0이에요. 최소값은 0이에요.

  • http.reset_cookies (Static, Boolean): HTTP 응답에서 쿠키를 재설정할지 여부예요. 쿠키가 일반적으로 필요하지 않으므로 기본적으로 비활성화돼요. 기본값은 false예요.

  • http.tcp.keep_alive (Static, Boolean): HTTP 연결에 대해 TCP keep-alive를 활성화해요. 기본값은 true예요.

  • http.tcp.keep_count (Static, integer): 연결이 끊기기 전까지의 TCP keep-alive 프로브 수예요. 기본값은 시스템 기본값이에요. 최소값은 -1이에요.

  • http.tcp.keep_idle (Static, integer): TCP keep-alive 프로브를 시작하기 전의 시간(초)이에요. 기본값은 시스템 기본값이에요. 최소값은 -1이에요. 최대값은 300이에요.

  • http.tcp.keep_interval (Static, integer): TCP keep-alive 프로브 사이의 시간 간격(초)이에요. 기본값은 시스템 기본값이에요. 최소값은 -1이에요. 최대값은 300이에요.

  • http.tcp.receive_buffer_size (Static, byte size): HTTP 연결에 대한 TCP 수신 버퍼 크기예요. 기본값은 시스템 기본값이에요.

  • http.tcp.reuse_address (Static, Boolean): HTTP 연결에 대해 TCP 주소 재사용을 활성화해요. 기본값은 시스템 기본값이에요.

  • http.tcp.send_buffer_size (Static, byte size): HTTP 연결에 대한 TCP 송신 버퍼 크기예요. 기본값은 시스템 기본값이에요.

Experimental HTTP settings

OpenSearch는 다음과 같은 실험적 HTTP 설정을 지원해요.

  • http.protocol.http3.enabled (Static, Boolean): 운영 체제와 아키텍처에서 지원하는 경우 HTTP/3 프로토콜을 활성화해요. 기본값은 false예요.

    HTTP/3 전송은 현재 실험 단계이므로 주의해서 사용해야 해요. {: .warning}

    대상 서버가 HTTP/3를 지원하는지 미리 확인할 수 없어요. 또한 기존 HTTP/1.1 또는 HTTP/2 연결은 HTTP/3로 업그레이드할 수 없어요. HTTP/1.1과 HTTP/2는 TCP 스트림 기반이지만 HTTP/3는 UDP 데이터그램 위의 QUIC을 사용하기 때문이에요. 활성화하면 HTTP/3 전송은 기본적으로 HTTP/1.1 및 HTTP/2 전송과 동일한 포트에서 사용할 수 있어요. {: .note}

    이 구현은 네이티브 라이브러리에 의존하며 HTTP/1.1 및 HTTP/2 전송과 달리 직접 NIO 버퍼를 사용해요. 네이티브 메모리 사용량을 추정할 때 이 점을 고려하세요.

    HTTP/3는 기본적으로 안전하며 HTTP 전송에 SSL/TLS가 활성화된 경우에만 사용할 수 있어요. OpenSearch는 Alt-Svc 헤더를 사용하여 HTTP/3 가용성을 알려요. 예를 들면 다음과 같아요.

    < HTTP/2 200
    < alt-svc: h3=":9200"; ma=3600
    < x-opensearch-version: OpenSearch/3.5.0 (opensearch)
    < content-type: application/json; charset=UTF-8
    < content-length: 572
    

    다음 플랫폼과 아키텍처가 지원돼요.

    • Linux/Aarch64
    • Linux/x86_64
    • OSX/Aarch64
    • Windows/x86_64

Advanced transport settings

OpenSearch는 다음과 같은 고급 전송 설정을 지원해요.

  • transport.host (Static, list): 전송 통신을 위한 OpenSearch 노드의 주소를 설정해요. transport.host 설정은 transport.bind_host와 transport.publish_host가 동일한 값일 경우 이 둘을 결합한 것이에요. transport.host의 대안으로 필요에 따라 transport.bind_host와 transport.publish_host를 별도로 구성할 수 있어요.

  • transport.bind_host (Static, list): OpenSearch 노드가 들어오는 전송 연결을 수신하기 위해 바인딩할 주소를 지정해요.

  • transport.publish_host (Static, list): OpenSearch 노드가 다른 노드에 전송 통신을 위해 게시하는 주소를 지정해요.

  • transport.netty.boss_count (Static, integer): Netty 전송의 보스 스레드 수예요. 기본값은 1이고 최소값은 1이에요.

  • transport.netty.receive_predictor_max (Static, byte size): Netty 전송의 최대 수신 버퍼 크기 예측값이에요. 기본값은 64kb예요.

  • transport.netty.receive_predictor_min (Static, byte size): Netty 전송의 최소 수신 버퍼 크기 예측값이에요. 기본값은 64kb예요.

  • transport.netty.receive_predictor_size (Static, byte size): Netty 전송의 초기 수신 버퍼 크기 예측값이에요. 기본값은 64kb예요.

  • transport.ssl.dual_mode.enabled (Static, Boolean): 전송 계층의 이중 모드 SSL(SSL 및 비SSL 모두)을 활성화해요. 기본값은 false예요.

Transport connection settings

OpenSearch는 다양한 유형의 작업을 위해 노드 간에 설정되는 연결 수를 제어하는 다음과 같은 전송 연결 설정을 지원해요.

  • transport.connections_per_node.bulk (Static, integer): 벌크 인덱싱 및 벌크 업데이트 요청과 같은 벌크 작업 전용 노드당 연결 수를 설정해요. 이 연결은 노드 간의 높은 처리량 데이터 전송 작업을 처리해요. 값이 높을수록 대규모 클러스터에서 벌크 작업 성능이 향상될 수 있지만 더 많은 네트워크 리소스를 소비해요. 기본값은 3이고 최소값은 1이에요.

  • transport.connections_per_node.ping (Static, integer): 핑 작업 및 노드 간 기본 연결 확인에 사용되는 노드당 연결 수를 설정해요. 핑 연결은 클러스터 상태 모니터링 및 노드 검색에 사용돼요. 기본값은 1이고 최소값은 1이에요.

  • transport.connections_per_node.recovery (Static, integer): 복제본 복구 및 샤드 리밸런싱을 포함한 샤드 복구 작업 전용 노드당 연결 수를 설정해요. 복구 연결은 복구 프로세스 중에 노드 간 샤드 데이터 전송을 처리해요. 값이 높을수록 복구 작업 속도가 빨라질 수 있지만 네트워크 부하가 증가할 수 있어요. 기본값은 2이고 최소값은 1이에요.

  • transport.connections_per_node.reg (Static, integer): 일반 클러스터 작업, 검색 요청 및 관리 작업에 사용되는 노드당 일반 연결 수를 설정해요. 이는 대부분의 노드 간 통신을 위한 기본 연결이에요. 일반 작업이 가장 일반적이므로 이 설정은 가장 높은 기본값을 가져요. 기본값은 6이고 최소값은 1이에요.

  • transport.connections_per_node.state (Static, integer): 클러스터 상태 동기화 및 메타데이터 작업에 사용되는 노드당 연결 수를 설정해요. 상태 연결은 클러스터 상태 업데이트, 매핑 변경 및 기타 메타데이터 작업의 배포를 처리해요. 기본값은 1이고 최소값은 1이에요.

Transport debugging settings

OpenSearch는 전송 통신 추적을 위한 다음과 같은 전송 디버깅 설정을 지원해요.

  • transport.tracer.include (Dynamic, list): 전송 추적에 포함할 전송 작업 또는 패턴의 쉼표로 구분된 목록을 지정해요. 구성하면 이 패턴과 일치하는 전송 통신만 로그에 추적돼요. 이 설정은 특정 내부 OpenSearch 작업을 디버깅하는 데 유용해요. 기본값은 [](빈 목록, 전송 추적이 활성화되면 모든 작업을 추적함)예요.

  • transport.tracer.exclude (Dynamic, list): 전송 추적에서 제외할 전송 작업 또는 패턴의 쉼표로 구분된 목록을 지정해요. 이 패턴과 일치하는 전송 통신은 전송 추적이 활성화된 경우에도 로그에 추적되지 않아요. 이 설정은 빈번하거나 중요하지 않은 작업으로 인한 노이즈를 줄이는 데 유용해요. 기본값은 [](빈 목록, 전송 추적이 활성화되면 제외 없음)예요.

Transport profile settings

OpenSearch는 다양한 유형의 연결에 대해 여러 전송 프로필을 구성할 수 있는 다음과 같은 전송 프로필 설정을 지원해요.

전송 프로필을 사용하면 다양한 유형의 연결에 대해 서로 다른 인터페이스의 여러 포트에 바인딩할 수 있어요. default 프로필은 다른 프로필의 폴백 역할을 하며 이 노드가 클러스터의 다른 노드에 연결하는 방식을 제어해요. 각 전송 프로필에 대해 다음 설정을 구성할 수 있어요.

  • transport.profiles.<profile_name>.port (Dynamic, single value or range): 이 전송 프로필에 바인딩할 포트 또는 포트 범위를 설정해요. 다른 프로필은 다른 포트를 사용하여 트래픽 유형을 분리할 수 있어요.

  • transport.profiles.<profile_name>.bind_host (Dynamic, list): 이 전송 프로필이 들어오는 연결을 위해 바인딩할 네트워크 인터페이스를 지정해요. 다른 프로필은 다른 네트워크 인터페이스에 바인딩할 수 있어요.

  • transport.profiles.<profile_name>.publish_host (Dynamic, list): 이 전송 프로필이 다른 노드에 게시하여 연결할 수 있도록 하는 주소를 지정해요. 바인드 주소가 외부에서 접근 가능한 주소와 다를 때 유용해요.

  • transport.profiles.<profile_name>.tcp.no_delay (Dynamic, Boolean): 이 전송 프로필의 연결에 대한 TCP_NODELAY 옵션을 제어해요. 활성화하면 작은 메시지의 지연 시간을 줄이기 위해 Nagle의 알고리즘을 비활성화해요.

  • transport.profiles.<profile_name>.tcp.keep_alive (Dynamic, Boolean): 이 전송 프로필의 연결에 대한 SO_KEEPALIVE 옵션을 제어해요. 활성화하면 운영 체제가 주기적인 keep-alive 패킷을 보내 죽은 연결을 감지해요.

  • transport.profiles.<profile_name>.tcp.keep_idle (Dynamic, time unit): TCP keep alive 프로브를 보내기 시작하기 전에 연결이 유휴 상태여야 하는 시간을 설정해요. JDK 11 이상의 Linux 및 Mac에서만 사용할 수 있어요. 기본값은 -1(시스템 기본값 사용)이에요.

  • transport.profiles.<profile_name>.tcp.keep_interval (Dynamic, time unit): 이 전송 프로필의 연결에 대한 TCP keep alive 프로브 간격을 설정해요. JDK 11 이상의 Linux 및 Mac에서만 사용할 수 있어요. 기본값은 -1(시스템 기본값 사용)이에요.

  • transport.profiles.<profile_name>.tcp.keep_count (Dynamic, integer): 연결이 끊어지기 전에 확인되지 않을 수 있는 TCP keep alive 프로브 수를 설정해요. JDK 11 이상의 Linux 및 Mac에서만 사용할 수 있어요. 기본값은 -1(시스템 기본값 사용)이에요.

  • transport.profiles.<profile_name>.tcp.reuse_address (Dynamic, Boolean): 이 전송 프로필의 소켓에 대한 SO_REUSEADDR 옵션을 제어하여 소켓 종료 후 주소 재사용을 허용해요.

  • transport.profiles.<profile_name>.tcp.send_buffer_size (Dynamic, byte unit): 이 전송 프로필의 연결에 대한 TCP 전송 버퍼 크기를 설정해요. 버퍼가 클수록 높은 대역폭 연결의 처리량이 향상될 수 있어요.

  • transport.profiles.<profile_name>.tcp.receive_buffer_size (Dynamic, byte unit): 이 전송 프로필의 연결에 대한 TCP 수신 버퍼 크기를 설정해요. 버퍼가 클수록 높은 대역폭 연결의 처리량이 향상될 수 있어요.

Advanced transport settings

OpenSearch는 다음과 같은 고급 전송 설정을 지원해요.

  • transport.compress (Static, Boolean): 모든 노드 간 전송 통신에 DEFLATE 압축을 활성화해요. 활성화하면 노드 간에 전송되는 데이터가 압축되어 네트워크 대역폭 사용량이 줄어들어 느린 네트워크 링크로 연결된 클러스터에 유용할 수 있어요. 그러나 압축은 압축 및 압축 해제 작업에 CPU 오버헤드를 추가해요. 기본값은 false예요.

  • transport.connect_timeout (Static, time unit): 노드 간 새 전송 연결을 설정하기 위한 제한 시간을 설정해요. 연결 시도가 이 시간 제한 내에 완료되지 않으면 실패한 것으로 간주해요. 이 설정은 응답하지 않거나 연결할 수 없는 노드에 연결하려고 할 때 노드가 무기한 중단되는 것을 방지하는 데 도움이 돼요. 기본값은 30s예요.

  • transport.ping_schedule (Static, time unit): 노드 간 전송 연결을 유지하기 위해 애플리케이션 수준 핑 메시지를 보내는 간격을 구성해요. 양수 값으로 설정하면 노드가 주기적인 핑 메시지를 보내 유휴 연결 시간 초과를 감지하고 방지해요. 이 값을 -1로 설정하면 애플리케이션 수준 핑이 비활성화돼요. 일반적으로 TCP keep-alive 설정이 모든 연결 유형에 대해 더 포괄적인 연결 모니터링을 제공하므로 이를 사용하는 것이 좋아요. 기본값은 -1(비활성화)이에요.

  • transport.publish_port (Static, integer): 다른 노드가 전송 통신을 위해 이 노드에 연결할 때 사용해야 하는 포트를 지정해요. 이 설정은 노드가 프록시, 방화벽 또는 NAT 구성 뒤에 있어 실제 바인드 포트가 외부에서 접근 가능한 포트와 다를 때 특히 유용해요. 지정하지 않으면 다른 노드는 transport.port 설정에 의해 결정된 포트를 사용해요. 기본값은 transport.port를 통해 할당된 실제 포트예요.

Transport TCP 설정

OpenSearch는 노드 간 통신을 위한 저수준 TCP 동작을 제어하는 다음과 같은 전송 계층 TCP 설정을 지원해요.

  • transport.tcp.keep_alive (Static, Boolean): 노드 간 전송 연결에 TCP keep-alive를 활성화해요. 활성화되면 운영 체제가 주기적으로 keep-alive 패킷을 보내서 끊긴 연결을 감지하고 연결 상태를 유지해요. 이렇게 하면 네트워크 장애와 응답 없는 노드를 더 빨리 감지할 수 있어요. 기본값은 true예요.

  • transport.tcp.keep_count (Static, integer): 연결이 끊어져 종료된 것으로 간주되기 전에 응답 없이 보낼 수 있는 TCP keep-alive 프로브 수를 설정해요. 이 설정은 TCP keep-alive가 활성화된 경우에만 적용돼요. 기본값은 -1(시스템 기본값 사용)이에요. 최솟값은 -1이에요.

  • transport.tcp.keep_idle (Static, integer): 전송 연결이 TCP keep-alive 프로브를 보내기 시작하기 전에 유휴 상태여야 하는 시간(초)을 설정해요. 이 설정은 유휴 연결에 대해 keep-alive 메커니즘이 활성화되는 시점을 제어해요. 기본값은 -1(시스템 기본값 사용)이에요. 최솟값은 -1이에요. 최댓값은 300이에요.

  • transport.tcp.keep_interval (Static, integer): 전송 연결에 대한 TCP keep-alive 프로브 간의 시간 간격(초)을 설정해요. keep-alive 프로브가 시작되면 이 설정이 전송 빈도를 결정해요. 기본값은 -1(시스템 기본값 사용)이에요. 최솟값은 -1이에요. 최댓값은 300이에요.

  • transport.tcp.receive_buffer_size (Static, byte unit): 전송 연결에 대한 TCP 수신 버퍼 크기를 설정해요. 이는 운영 체제가 들어오는 전송 메시지에 대해 버퍼링하는 데이터 양을 제어해요. 버퍼가 크면 대역폭이 높은 노드 간 통신의 처리량이 향상될 수 있지만 더 많은 메모리를 소비해요. 기본값은 -1(시스템 기본값 사용)이에요.

  • transport.tcp.reuse_address (Static, Boolean): 전송 연결에 대한 SO_REUSEADDR 소켓 옵션을 제어해요. 활성화되면 전송 계층이 연결 종료 후 즉시 TCP 주소를 재사용할 수 있어서 빠른 노드 재시작이나 높은 연결 전환율에 유용해요. 기본값은 운영 체제에 따라 달라요(일반적으로 비Windows 시스템에서는 true, Windows에서는 false).

  • transport.tcp.send_buffer_size (Static, byte unit): 전송 연결에 대한 TCP 송신 버퍼 크기를 설정해요. 이는 운영 체제가 나가는 전송 메시지에 대해 버퍼링하는 데이터 양을 제어해요. 버퍼가 크면 대역폭이 높은 노드 간 통신의 처리량이 향상될 수 있지만 더 많은 메모리를 소비해요. 기본값은 -1(시스템 기본값 사용)이에요.

  • transport.tcp.no_delay (Static, Boolean): 노드 간 전송 연결에 대한 TCP_NODELAY 옵션을 제어해요. 활성화되면 Nagle 알고리즘이 비활성화되어 네트워크 트래픽 증가를 대가로 작은 메시지의 지연 시간을 줄일 수 있어요. 이 설정은 낮은 지연 시간이 중요한 클러스터 통신에 특히 중요해요. 기본값은 true예요.

  • transport.tcp.compress (Static, Boolean): 노드 간 전송 계층 통신에 DEFLATE 압축을 활성화해요. 활성화되면 압축 및 해제에 추가 CPU 오버헤드가 발생하는 대신 네트워크 대역폭 사용량이 줄어들어요. 이 설정은 최신 transport.compress 설정으로 대체되었어요. 기본값은 false예요.

  • transport.tcp.connect_timeout (Static, time unit): 노드 간 전송 계층에서 TCP 연결을 설정하기 위한 시간 제한을 설정해요. 이 시간 내에 연결 시도가 완료되지 않으면 실패한 것으로 간주해요. 이 설정은 최신 transport.connect_timeout 설정으로 대체되었어요. 기본값은 30s예요.

  • transport.tcp_no_delay (Static, Boolean): 더 이상 사용되지 않음(Deprecated). 전송 연결에 대한 TCP_NODELAY 옵션을 제어하는 레거시 설정이에요. 이 설정은 transport.tcp.no_delay로 대체되었으며 하위 호환성을 위해 유지되고 있어요. 대신 transport.tcp.no_delay를 사용하세요. 기본값은 true예요.

Transport features 설정

OpenSearch는 선택적 전송 계층 기능을 제어하는 다음과 같은 Transport features 설정을 지원해요.

  • transport.features.* (Static, group setting): 노드 간 통신에 활성화할 전송 기능을 제어해요. 이는 압축, 보안 강화 또는 프로토콜 확장과 같은 특정 전송 계층 기능을 활성화하거나 비활성화할 수 있는 그룹 설정이에요. 개별 기능 이름은 접미사로 추가되어 특정 전송 기능을 구성해요. 호환성을 보장하려면 클러스터의 모든 노드에서 일관되게 설정해야 해요.

Transport 및 HTTP 유형 설정

OpenSearch는 클러스터에서 사용하는 기본 전송 및 HTTP 구현 유형을 제어하는 설정을 지원해요.

OpenSearch는 다음과 같은 정적 Transport 및 HTTP 유형 설정을 지원해요.

  • transport.type.default (Static, string): 노드 간 통신을 위한 기본 전송 구현 유형을 설정해요. 이 설정은 특정 전송 유형이 구성되지 않았을 때 OpenSearch가 사용할 전송 구현을 결정해요. 기본 구현은 netty4로, Netty 4 기반의 효율적인 비동기 네트워킹을 제공해요. 플러그인을 통해 대체 구현을 제공할 수 있어요. 기본값은 netty4예요.

  • http.type.default (Static, string): 클라이언트 통신을 위한 기본 HTTP 구현 유형을 설정해요. 이 설정은 특정 HTTP 유형이 구성되지 않았을 때 OpenSearch가 사용할 HTTP 구현을 결정해요. 기본 구현은 netty4로, Netty 4 기반의 효율적인 비동기 HTTP 처리를 제공해요. reactor-netty4와 같은 대체 구현은 플러그인을 통해 제공할 수 있어요. 기본값은 netty4예요.

전송 방식 선택

기본 OpenSearch 전송 방식은 transport-netty4 모듈에서 제공하며, 클러스터 내 노드 간의 내부 TCP 기반 통신과 클라이언트와의 외부 HTTP 기반 통신 모두에 Netty 4 엔진을 사용해요. 이 통신은 완전히 비동기적이고 논블로킹이에요. 다음 표는 상호 교환하여 사용할 수 있는 다른 전송 플러그인을 보여줘요.

플러그인 설명
transport-reactor-netty4 OpenSearch HTTP 전송 방식으로, Project Reactor와 Netty 4를 기반으로 해요 (실험적)
설치: ./bin/opensearch-plugin install transport-reactor-netty4
구성(opensearch.yml 사용):
http.type: reactor-netty4
http.type: reactor-netty4-secure
지원 프로토콜: HTTP/1.1, HTTP/2, HTTP/3 (실험적, HTTP 실험적 설정 참조)

더 알아보기 (Learn more)