본문 바로가기
데이터 엔지니어( 실습 정리 )

작업시 유용한 스크립트 정리(1)

by 세용용용용 2024. 6. 27.

1. all_command.sh : 모든 서버 동일 명령어 실행시 사용

#!/usr/bin/bash

# 인자 개수 확인
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <command>"
    exit 1
fi

command=$1
ip_file="/data/work/system_download.txt"
ip_array=($(cat ${ip_file} | grep server_ip | awk -F '|' '{for(i=2; i<=NF; i++) print $i}'))
len_array=${#ip_array[@]}

# 현재 ip와 다음ip 출력
for ((i=0; i<len_array; i++));
do
        current_ip=${ip_array[$i]}
        echo "------command ${current_ip}------------"
        ssh ${current_ip} "${command}"
        echo "--------------------------------------"; echo"";
done

 

스크립트 인자 : 원하는 명령어

2. jps_check.sh : 모든 서버 자바 프로세스 확인

#!/usr/bin/bash

ip_file="/data/work/system_download.txt"
ip_array=($(cat ${ip_file} | grep server_ip | awk -F '|' '{for(i=2; i<=NF; i++) print $i}'))
len_array=${#ip_array[@]}

# 현재 ip와 다음ip 출력
for ((i=0; i<len_array; i++));
do
        current_ip=${ip_array[$i]}
        echo "------jps on ${current_ip}------------"
        ssh ${current_ip} "jps"
        echo "--------------------------------------"; echo"";
done

 

3. docker_container.sh : 실행중인 도커 컨테이너 확인

#!/usr/bin/bash

ip_file="/data/work/system_download.txt"
ip_array=($(cat ${ip_file} | grep server_ip | awk -F '|' '{for(i=2; i<=NF; i++) print $i}'))
len_array=${#ip_array[@]}

# 현재 ip와 다음ip 출력
for ((i=0; i<len_array; i++));
do
        current_ip=${ip_array[$i]}
        echo "------Containers on ${current_ip}------------"
        ssh ${current_ip} 'docker ps --format "{{.Names}}"'
        echo "--------------------------------------"; echo"";
done

 

4. zookeeper_check.sh : 주키퍼 상태 확인

#!/usr/bin/bash

# 인자 개수 확인
if [ "$#" -ne 2 ]; then
        echo "Usage: $0 <container_name> <zookeeper_version>"
        exit 1
fi

zoo_server_file="/data/work/system_download.txt"
zoo_array=($(cat ${zoo_server_file} | grep zookeeper_ip | awk -F '|' '{for(i=2; i<=NF; i++) print $i}'))
len_zoo_array=${#zoo_array[@]}


container_name=$1
zookeeper_version=$2

for ((i=0; i<len_zoo_array; i++));
do
        current_ip=${zoo_array[$i]}
        echo "------------zookeeper type ${current_ip}------------"
        ssh -t ${current_ip} "docker exec -it ${container_name} /data/sy0218/apache-zookeeper-${zookeeper_version}-bin/bin/zkServer.sh status"
        echo "---------------------------------------------------"; echo"";
done

 

5. ansible_check.sh : 앤서블 상태 확인

#!/usr/bin/bash

ip_file="/data/work/system_download.txt"
ip_array=($(cat ${ip_file} | grep server_ip | awk -F '|' '{for(i=2; i<=NF; i++) print $i}'))
len_array=${#ip_array[@]}

# 현재 ip와 다음ip 출력
for ((i=0; i<len_array; i++));
do
        current_ip=${ip_array[$i]}
        echo "------ansible check ${current_ip}------------"
        ssh ${current_ip} "ansible --version"
        echo "--------------------------------------"; echo"";
done

 

6. swap_execution.sh : 각 서버 스왑 할당 스크립트

#!/usr/bin/bash

ip_file="/data/work/system_download.txt"
ip_array=($(cat ${ip_file} | grep server_ip | awk -F '|' '{for(i=2; i<=NF; i++) print $i}'))
len_array=${#ip_array[@]}

for ((i=0; i<len_array; i++));
do
        current_ip=${ip_array[$i]}
        echo "------Swap on ${current_ip}------------"
        ssh ${current_ip} "swapon /swap.img"
        ssh ${current_ip} "free -h | grep Swap"
        echo "--------------------------------------"; echo"";
done

 

7. server_restart.sh : 서버 재시작 시 스왑 할당 및 컨테이너, Hadoop, Hive 재시작 스크립트

#!/usr/bin/bash

echo "-------------------------- swap 할당Start -----------------------------"
/data/check/swap_execution.sh
echo "-------------------------- swap 할당End -----------------------------"; echo"";

echo "------------------- 분산 애플리케이션, db 재시작 Start ----------------------"
/data/check/all_command.sh "docker restart zookeeper"
sleep 3
/data/check/all_command.sh "docker restart postsql"
sleep 3
/data/check/all_command.sh "docker restart hadoop_hive"
sleep 3
echo "------------------- 분산 애플리케이션, db 재시작 End ----------------------"; echo"";

echo "--------------------- Zookeeper 구동 체크 Start ------------------------"
/data/check/zookeeper_check.sh zookeeper 3.7.2
sleep 3
echo "--------------------- Zookeeper 구동 체크 End ------------------------"; echo"";

echo "--------------------- Hadoop service 시작 Start ------------------------"
/data/sy0218/hadoop-3.3.5/sbin/start-all.sh
sleep 3
echo "--------------------- Hadoop service 시작 End ------------------------"; echo"";

echo "--------------------- hive 구동 Start ------------------------"
nohup hive --service hiveserver2 >> /hive/log/hiveserver2.log 2>&1 &
sleep 3
echo "--------------------- hive 구동 End ------------------------"; echo"";

echo "--------------------- java 프로세스 확인 Start ------------------------"
/data/check/jps_check.sh
sleep 3
echo "--------------------- java 프로세스 확인 End ------------------------"; echo"";