나는 현재 엘라스틱 서치 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 파일을 작성해야한다.
엘라스틱 서치 백그라운드(데몬)실행
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 -e
0 */1 * * * bash /home/{user}/{es_dir}/restart.sh >> /home/{user}/{es_dir}/elastic_restart.log
위 크론탭 명령어의 해석은
매시간(정각)마다 restart.sh 파일을 실행시키라는 명령어이고 실행 로그를 저장하는 명령어이다.
크론탭 명령어의 자세한 내용은 다른 자료를 찾아보시면 다양하게 나와있습니다.