다음은 여러 노드의 엘라스틱서치(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초 대기.
-
엘라스틱서치 클러스터 관련 정보 출력.
각 노드가 동일 네트워크에서 호스트명으로 접근 가능해야 합니다. 그렇지 않은 경우 적절히 수정해야 합니다.