시뻘건 개발 도전기

Elasticsearch 환경 구축 본문

Reading/엘라스틱서치 실무 가이드

Elasticsearch 환경 구축

시뻘건볼때기 2023. 12. 1. 17:54
반응형

엘라스틱서치로 실제 서비스를 운영할 때는 최소 3개 이상의 물리적인 노드로 클러스터를 구축하는 것이 좋다. 테스트 모드에서는 목적성이 다르기 때문에 싱글 모드로 구성하기도한다.

 

Elasticsearch 설치

엘라스틱서치는 자바로 개발되었다. 그 말은 java runtime이 필요하다는 의미로 JRE만 설치해도 무방하나 JDK를  설치하는 것을 권장하고있다. 참고로 엘라스틱서치 8 버전부터 java 17을 권장한다. (java를 설치하는 과정은 스킵.)

 

Download Elasticsearch

Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in minutes with Elastic.

www.elastic.co

java를 설치했다면 elasticsearch를 설치해보자. 리눅스의 경우에는 root계정으로 설치하는 것을 권장하고있지 않다. 다운을 받아보면 bin 디렉토리에 elasticsearch와 elasticsearch.bat 파일이 있는데 윈도우는 .bat 파일을 사용하고 다른 하나는 macOS와 리눅스에서 사용하면된다.

아래와 같이 엘라스틱서치를 실행해볼 수 있다.

./elasticsearch

 

아래와 같이 9300 port로 실행된 모습을 볼 수 있다.

[2023-12-01T16:35:16,612][INFO ][o.e.x.d.l.DeprecationIndexingComponent] [DESKTOP-CN4P6LD] deprecation component started
[2023-12-01T16:35:16,684][INFO ][o.e.t.TransportService ] [DESKTOP-CN4P6LD] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}

 

Elasticsearch 8 버전 이상부터는 seacurity가 기본적으로 적용된다.
config/elasticsearch.yml 파일 내에 xpack.security.enabled 값을 false로 변경하고 실행해보자.

 

엘라스틱서치 서버의 정보를 알아보자.

curl -XGET http://localhost:9200

 

위 명령을 실행한 결과는 아래와 같다.

{
  "name" : "DESKTOP-CN4P6LD",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "haCazSiwR5uWOBl4QxPLnQ",
  "version" : {
    "number" : "8.11.1",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "6f9ff581fbcde658e6f69d6ce03050f060d1fd0c",
    "build_date" : "2023-11-11T10:05:59.421038163Z",
    "build_snapshot" : false,
    "lucene_version" : "9.8.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

 

cluster_name은 엘라스틱서치 클러스터를 구분하는 속성이다. 값을 수정하지 않는다면 기본 값으로 실행되며 다른 클러스터와 충돌할 수 있으므로 반드시 수정해야한다.

 

아래는 엘라스틱서치의 설정 항목에 대한 내용이다.

  • cluster.name: 클러스터로 여러 노드를 하나로 묶을 수 있는데, 여기서 클러스터명을 지정할 수 있다.
  • path.data: 엘라스틱서치의 인덱스 경로를 지정한다. default 값으로 ES 하위의 data 디렉토리에 생성된다.
  • node.name: 엘라스틱서치 노드 명을 지정한다.
  • path.logs: 엘라스틱서치의 노드와 클러스터에서 생성되는 로그를 저장할 경로를 지정한다. default 값은 /path/to/logs이다.
  • path.repo: 엘라스틱서치 인덱스를 백업하기 위한 snapshot의 경로를 지정한다.
  • network.host: 특정 IP만 엘라스틱서치에 접근하도록 허용한다. 선택적으로 허용할 경우 [1.1.1.1, 2.2.2.2]와 같이 지정하고 모든 IP를 허용한다면 0.0.0.0을 입력한다.
  • http.port: 엘라스틱서치 서버에 접근할 수 있는 http api의 포트 번호를 지정한다.
  • transport.tcp.port: 엘라스틱서치 클라이언트가 접근할 수 있는 TCP 포트를 지정한다.
  • discovery.zen.ping.unicast.hosts: 노드가 여려 개인 경우 유니캐스트로 활성화된 다른 서버를 찾는다. 클러스터로 묶인 노트의 IP를 지정하면 된다.
  • discovery.zen.minimum_master_nodes: 마스터노드의 선출 기준이 되는 노드의 수를 지정한다.

 

생성된 논리적인 스냅샷을 확인해볼 수도 있다.

http://localhost:9200/_snapshot/apache-web-log/_all

 

반응형

'Reading > 엘라스틱서치 실무 가이드' 카테고리의 다른 글

데이터 모델링: 맵핑 api  (2) 2023.12.05
엘라스틱서치 api  (1) 2023.12.04
엘라스틱서치 용어  (1) 2023.12.01
키바나 설치  (0) 2023.12.01
검색 시스템 이해하기  (2) 2023.12.01
Comments