본문 바로가기
서버 운영/Pacemaker

리눅스 pacemaker MariaDB 프로세스 모니터링 및 페일오버

by Infralabs 2024. 3. 20.
반응형

리눅스 Pacemaker 클러스터 환경에서 MariaDB 상태 체크와 페일오버(Fail-Over)를 위한 방법을 소개하려고 합니다. 스크립트를 통해 MariaDB 프로세스의 상태를 체크하고, 문제 발생시 페일오버시킵니다.

 

1. /etc/init.d/db_check 파일 생성

#!/bin/bash

# 스크립트의 첫 번째 인자에 따라 MariaDB 서비스를 시작, 중지 또는 상태를 확인합니다.
case "$1" in
 "start")
   echo "MariaDB 시작 중..."
   systemctl start mariadb  # MariaDB 서비스 시작
 ;;
 "stop")
   echo "MariaDB 중지 중..."
   systemctl stop mariadb  # MariaDB 서비스 중지
 ;;
 "status")
  # MariaDB 서버에 2초의 타임아웃을 설정하여 연결을 시도하고 간단한 SQL 쿼리를 실행합니다.
  result=$(mysql --connect-timeout 2 -u root -p"${DB_PASSWORD}" -h localhost -Nse 'select now()')
  result_code=$?

  if [[ $result_code -eq 0 ]]; then
    echo "MariaDB가 실행 중입니다. 현재 시간: $result"
  else
    # 연결 실패 시 에러 메시지를 로그에 기록하고 리소스 그룹을 다른 노드로 이동합니다.
    echo "[$(date +%Y-%m-%d-%H:%M:%S)] DB 연결 오류" >> /var/log/db_check
    echo "MariaDB에 연결할 수 없습니다. 리소스 그룹을 이동합니다..."
    pcs resource move {리소스그룹명} {노드명}
  fi
 ;;
 *)
   # 잘못된 인자가 제공된 경우 사용법을 출력합니다.
   echo "사용법: $0 {start|stop|status}"
   exit 1
 ;;
esac


2. 생성한 스크립트의 실행권한 부여

$ chmod 700 /etc/init.d/db_check


3. DB 리소스 생성

$ pcs resource create db_check service:db_check op status interval=60s --group {리소스그룹명}

 

반응형