데이터 엔지니어( 실습 정리 )
작업시 유용한 스크립트 정리(1)
세용용용용
2024. 6. 27. 08:31
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"";