728x90
- 이전 글에서 구축한 서버 3대의 Master-backup이 정상적으로 failover가 이루어지는 지 확인을 위해 galera cluster로 연동된 mariaDB에서 간단한 테스트를 진행해보았다.
- Master : 3호기 (192.168.174.130) / backup : 1~2호기 (192.168.174.128~129)
failover 테스트 시나리오
- 각 서버에서 쉘 스크립트를 통해 10초에 1번씩 heartbeat 개념의 insert(write)를 실행한다.(heartbeat.sh)
INSERT INTO keepalived_test.heartbeat (note) VALUES ('heartbeat from $(hostname) server..');
- 이때, DB 접속호스트는 vip로 지정한다. (1~3호기 동일 설정)
#!/bin/bash
# MariaDB 접속 정보(vip 로 설정)
DB_HOST=192.168.174.200
DB_USER=root
DB_PASS=root
# 반복적으로 INSERT 쿼리 실행
mysql -h $DB_HOST -u $DB_USER -p$DB_PASS -e \
"INSERT INTO keepalived_test.heartbeat (note) VALUES ('heartbeat from $(hostname) server..');"
- crontab 배치 작성 및 등록 (1~3호기 동일 설정)
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
#10초에 한번씩 서버 heartbeat -> mariadb로 insert
* * * * * root /data/script/heartbeat.sh
* * * * * root sleep 10; /data/script/heartbeat.sh
* * * * * root sleep 20; /data/script/heartbeat.sh
* * * * * root sleep 30; /data/script/heartbeat.sh
* * * * * root sleep 40; /data/script/heartbeat.sh
* * * * * root sleep 50; /data/script/heartbeat.sh
#crond 재기동 (crontab 적용)
systemctl restart crond
#crond 로그확인
systemd[1]: Started Command Scheduler.
- 데이터 적재 확인(정상 상태)
- failover 상황 부여 - Master(3호기) keepallived 중단
- 2호기 keepalived status 확인 (backup->Master 전환)
- MariaDB 데이터 조회
- 3호기 keepalived가 다운되어도 사전 설정된 vip를 통해 2호기로 failover가 일어나는 지 확인
- 2호기 priority가 2순위이므로 자동 승계
-> 3호기 vip에서 2호기로 failover하여 3호기에 있던 스크립트 정상 동작 확인
-> vip가 백업노드로 이동 정상 확인
- 3호기 keepalived 원상복구 (backup -> Master)
- 2호기 backup 모드 원상복구 (Master -> backup)
728x90
'keepalived' 카테고리의 다른 글
keepalived 구성 (0) | 2025.04.07 |
---|