API/ElasticSearch

[ElasticSearch]. 크론탭(crontab)으로 리눅스 서버 꺼지면 자동 재실행 하기

Acdong 2022. 8. 14. 15:28
728x90

나는 현재 엘라스틱 서치 8.1.2 버전을 사용중이고 3개의 클라우드 서버(AWS EC2)를 바인딩하여 사용중이다.

 

elasticsearch node 1 : 4GB , 2cpu  t3.medium

elasticsearch node 2 : 2GB , 2cpu t3.small

elasticsearch node 3 : 2GB , 2cpu t3.small

 

문제 발생 :

 - 상대적으로 저 스펙인 (노드2) 와 (노드3) 서버가 자주 꺼지는 문제 발생

 

문제를 해결하기 위해 elasticsearch.log 를 살펴보았지만 원인을 찾기 어려웠다.. 계속 디버깅중...

그래서 임시방편이기도 하면서 제일 간단한 방법인 죽으면 자동으로 다시 실행시키는 방법을 적용해보기로했다.

 

리눅스에는 크론탭(crontab)이라고해서 자동으로 스케줄링해주는 도구가 있다.

이를 활용해서 적용해보고자 한다.


Bash 파일 ( 쉘 스크립트 작성하기 )

크론탭을 적용하기 위해선 일단 커멘드 명령어의 집합인 bash 파일을 작성해야한다.

 

엘라스틱 서치 백그라운드(데몬)실행

vi start.sh
/home/{user}/{es_dir}/bin/elasticsearch -d -p es.pid

 

엘라스틱 서치 재실행

vi restart.sh
#!/bin/sh

# 엘라스틱 서치로 시작하는 프로세스 확인
pid=`ps -ef | grep "elasticsearch" | grep -v 'grep' | awk '{print $2}'`

# 엘라스틱 서치 프로세스가 죽었으면 start.sh 실행
if [ -z $pid ]; 
then
	echo $(date)
	bash /home/{user}/{es_dir}/start.sh
	echo ""
fi

 

실행권한 변경 ( 실행 권한이 있어야 실행할 수 있다. )

chmod 755 *.sh

크론탭(crontab) 적용하기

crontab -e
0 */1 * * * bash /home/{user}/{es_dir}/restart.sh >> /home/{user}/{es_dir}/elastic_restart.log

 

위 크론탭 명령어의 해석은 

매시간(정각)마다 restart.sh 파일을 실행시키라는 명령어이고 실행 로그를 저장하는 명령어이다.

크론탭 명령어의 자세한 내용은 다른 자료를 찾아보시면 다양하게 나와있습니다.

반응형