데이터 엔지니어( 실습 정리 )/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 화면
