엘라스틱서치 멀티노드 클러스터 설치 스크립트

다음은 여러 노드의 엘라스틱서치(Elasticsearch) 클러스터를 배포하는 쉘 스크립트 예제입니다:

#!/bin/bash

# 클러스터 이름 설정
CLUSTER_ID="elastic_cluster"

# 엘라스틱서치 버전 지정
ES_VER="7.10.2"

# 엘라스틱서치 홈 디렉토리
INSTALL_PATH="/opt/elastic"

# 데이터 저장 경로
DATA_PATH="/var/data/elastic"

# 설정 파일 위치
CONF_PATH="/etc/elastic"

# 로그 저장 위치
LOG_PATH="/var/log/elastic"

# 플러그인 저장소
PLUGIN_PATH="$INSTALL_PATH/plugins"

# 엘라스틱서치 실행 스크립트 경로
START_SCRIPT="$INSTALL_PATH/bin/elasticsearch"

# 엘라스틱서치 기본 설정 파일
CONFIG_FILE="$CONF_PATH/elastic.yml"

# 클러스터 내 노드 리스트
NODE_LIST=( "server1" "server2" "server3" )

# 설치 디렉토리 생성
mkdir -p $INSTALL_PATH

# 데이터 디렉토리 생성
mkdir -p $DATA_PATH

# 설정 파일 디렉토리 생성
mkdir -p $CONF_PATH

# 로그 디렉토리 생성
mkdir -p $LOG_PATH

# 플러그인 디렉토리 생성
mkdir -p $PLUGIN_PATH

# 엘라스틱서치 패키지 다운로드
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ES_VER-linux-x86_64.tar.gz -P /tmp/

# 압축 해제
tar -xzf /tmp/elasticsearch-$ES_VER-linux-x86_64.tar.gz -C $INSTALL_PATH --strip-components=1

# 설정 파일 작성
echo "cluster.name: $CLUSTER_ID" > $CONFIG_FILE
echo "network.host: 0.0.0.0" >> $CONFIG_FILE
echo "path.data: $DATA_PATH" >> $CONFIG_FILE
echo "path.logs: $LOG_PATH" >> $CONFIG_FILE

# 각 노드 시작
for NODE in "${NODE_LIST[@]}"
do
    HOST_IP=$(getent hosts $NODE | awk '{ print $1 }')
    NODE_CONF="$CONF_PATH/${NODE}_config.yml"
    cp $CONFIG_FILE $NODE_CONF
    echo "node.name: $NODE" >> $NODE_CONF
    echo "discovery.seed_hosts: ${NODE_LIST[@]}" >> $NODE_CONF
    echo "cluster.initial_master_nodes: ${NODE_LIST[0]}" >> $NODE_CONF
    echo "network.host: $HOST_IP" >> $NODE_CONF
    $START_SCRIPT -d -Epath.conf=$CONF_PATH -Enode.name=$NODE -Enode.master=true -Enode.data=true
done

# 노드 시작 대기
sleep 35

# 클러스터 정보 출력
echo "클러스터 이름: $CLUSTER_ID"
echo "버전: $ES_VER"
echo "설치 경로: $INSTALL_PATH"
echo "데이터 경로: $DATA_PATH"
echo "설정 파일 경로: $CONF_PATH"
echo "로그 경로: $LOG_PATH"
echo "플러그인 경로: $PLUGIN_PATH"
echo "노드 목록: ${NODE_LIST[@]}"

스크립트를 elasticsearch_setup.sh와 같은 이름으로 저장하고 서버에 배치한 후 다음 명령어로 실행할 수 있습니다:

sudo bash elasticsearch_setup.sh

이 스크립트는 다음과 같은 작업을 자동으로 수행합니다:

  • 엘라스틱서치 클러스터 이름, 버전, 설치 및 데이터 디렉토리, 설정 및 로그 파일 위치 설정.

  • 설치, 데이터, 설정 및 로그 디렉토리를 생성.

  • 엘라스틱서치 패키지를 다운로드하고 설치 디렉토리에 압축 해제.

  • 설정 파일을 생성하고 클러스터 이름, 데이터 및 로그 디렉토리 설정.

  • 각 엘라스틱서치 노드를 시작하고 35초 대기.

  • 엘라스틱서치 클러스터 관련 정보 출력.

각 노드가 동일 네트워크에서 호스트명으로 접근 가능해야 합니다. 그렇지 않은 경우 적절히 수정해야 합니다.

태그: elasticsearch shell-script linux cluster-deployment

8월 17일 19:45에 게시됨