데이터 엔지니어( 실습 정리 )/elasticsearch

1. 엘라스틱서치 소개 및 설치

세용용용용 2024. 11. 18. 18:03

 

[ 엘라스틱 서치 바이블 ] 공부한 후 정리한 내용 입니다!!!

 

 

1. 엘라스틱 서치 특징

  • 엘라스틱 서치는 루씬을 코어로 이용해 JSON 문서의 (저장, 색인, 검색) 작업을 분산처리 하는 검색 엔진!!
루씬: 오픈 소스 검색 엔진 라이브러리입니다. 
- 주로 텍스트 기반 데이터의 검색과 색인을 효율적으로 처리하기 위해 사용

 

 

(1-1) 검색 엔진

  • 전문 검색이 가능하며 다양한 종류의 검색 쿼리 지원
  • 역색인을 사용해 검색 속도가 매우 빠름
  • 애널라이저를 조합해 여러 비즈니스 요구사항에 맞는 색인을 구성 및 형태소 분석도 가능
역색인은 : 단어 → 문서의 매핑을 저장합니다.

 

 

(1-2) 분산 처리

  • 데이터를 여러 노드에 분산 저장하며 검색이나 집계 작업 수행시 분산처리 지원

 

(1-3) 고가용성 제공

  • 클러스터 구성 노드 일부 장애시 복제본 데이터를 이용해 중단 없이 서비스 지속 가능, 이떄 엘라스틱서치는 다시 복제본을 만들어 복제본 개수를 유지하며 노드 간 데이터 균형을 자동으로 맞춤

 

(1-4) 수평적 확장성

  • 더 많은 처리 능력 필요시 새로운 노드에 엘라스틱서치를 설치하여 클러스터 참여시키는 것만으로도 확장이됨
  • 새로운 노드에 데이터 복제하거나 옮기는 작업도 엘라스틱서치가 자동 수행

 

(1-5) JSON 기반 REST API 제공

  • 엘라스틱서치는 json 형태의 문서를 저장, 색인, 검색 ( 작업 요청시 json기반 REST API 사용 )

 

(1-6) 데이터 안정성

  • 높은 데이터 안정성 제공
  • 데이터 색인 요청후 200( ok ) 받으면 해당 데이터는 확실히 디스크에 기록

 

(1-7) 다양한 플로그인 통한 기능 확장 지원

  • 다양한 플러그인 사용해 기능 확장 및 변경 가능

 

(1-8) 준실시간 검색

  • 엘라스틱 서치는 준실시간 검색을 지원
  • 데이터 색인 후 역색인 구성하면 검색이 가능 ( 최대 1초 )

 

(1-9) 트랜잭션 지원이 않됨, 조인을 지원하지 않음

 


 

2. 실습 환경 구축

  • 실습 운영 서버 : 192.168.56.10, 192.168.56.11, 192.168.56.12 ( 우분투 22.04 )
# tar 파일 다운로드
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.2-linux-x86_64.tar.gz

# 자동 설치 및 setup
https://github.com/sy0218/elasticsearch_8.4.2_ansible

# 각 서버 elasticsearch.yml
network.host: 192.168.56.10 >>> 자기 자신의 ip서버로 수정

# 엘라스틱서치는 보안상 이유로 루트 사용자 실행 허용 안함
useradd elasticsearch ( 사용자 생성 )
chown -R elasticsearch:elasticsearch /data/sy0218/elasticsearch-8.4.2 ( 엘라스틱 디렉터리 소유권 변경 )
mkdir -p /var/log/elasticsearch
chown -R elasticsearch:elasticsearch /var/log/elasticsearch ( 엘라스틱 로그 디렉터리 소유권 변경 )

# 메모리 맵 늘려주기
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sudo sysctl -p

# 프로세스 수
echo "elasticsearch - nproc 4096" >> /etc/security/limits.conf

# 각 서버 실행
sudo -u elasticsearch ./elasticsearch ( 엘라스틱서치 bin 디렉토리 들어가서 실행 )

# 백그라운드 실행
sudo -u elasticsearch nohup /data/sy0218/elasticsearch/bin/elasticsearch -d -p /data/sy0218/elasticsearch/bin/es_pid.txt > /dev/null 2>&1 &

 

 

(2-1) 실행 확인

(1) 로그 확인  : tail -f /var/log/elasticsearch/sy0218-cluster.log ( started 확인!! )

 

 

(2) REST API 호출 : curl -XGET http://192.168.56.10:9200

 

 

(3) REST API 호출 : curl -XGET http://192.168.56.10:9200/_cat/nodes?v=true ( 클러스터 확인 )

 

 

(2-2) 종료

# es_pid.txt : 엘라스틱서치 프로세스 ip
kill -SIGTERM (엘라스틱서치 pid)

 

 


 

3. 키바나 설치

  • 엘라스틱서치 데이터를 효과적으로 시각화 하는 솔루션
# 자동 설치 및 setup
https://github.com/sy0218/kibana_8.x_ansible

# 키바나 실행
systemctl start kibana.service

 


 

4. Cerebro 설치

  • 엘라스틱 서치 클러스터 상태 확인 및 관리 도와주는 솔루션
# zip 파일 가져오기
wget https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro-0.9.4.zip


# 자동 설치 및 setup
https://github.com/sy0218/cerebro_0.9.4_ansible

# 백그라운드 실행
nohup /data/sy0218/cerebro/bin/cerebro > /dev/null 2>&1 &

# 종료
ps aux | grep cerebro
kill [PID]

 

ui 화면