KeepAlived란?
- C언어로 작성된 로드밸런싱 및 고가용성을 제공하는 프레임워크이다.
- 게이트웨이 이중화 구성을 위해 VRRP 프로토콜 사용한다.
- VRRP를 통해서 KeepAlived가 같은 공유기에 연결되어있는 모든 기기에게 가상 IP 주소를 가지고 있다고 통신을 제공한다
VRRP란?
VRRP(Virtual Router Redundancy Protocol)로, 가상 라우터 다중화 프로토콜임과 동시에 게이트워이 장애 복구를 위한 프로토콜이다.
게이트웨이 이중화 구성은 크게 2가지 목적으로 구현된다.
- Load balancing : 똑같은 기능을 수행하는 장비를 여러 개 구성하여 네트워크 부하를 분산
- Failover : 하나의 장비가 죽었을 때 다른 장비로 전환되어 서비스 단절 최소화
VRRP의 이중화 구성의 경우 Filaover 목적으로 Master / Slave 전환을 위해 사용한다.
Master와 Slave는 하나의 VIP(Vitural IP)로 묶여 있으며, 각각 RIP(Real IP)를 가지고 있다. (Master: Active / Slave: Stand-By 상태)
만약 Master 장비 장애 발생 시 Slave 장비가 VIP를 가져와 Master 역할 수행하게 된다.
MariaDB 설정 방법
Master Computer 설정 방법
리플리케이션을 구축하기 위해서는 DB에서 Master 및 Slave 설정을 진행해야 한다.
mysqldump -u root -p --all-databases > backup.sql
위 명령어를 이용해서 백업 파일을 만든다.
그 후 Slave 컴퓨터에게 이 백업 파일을 전송한 후, 데이터를 삽입시킨다.
scp [백업 파일 경로]/backup.sql [Linux ID]@[Slave IP]:[백업 파일 경로]/backup.sql // 데이터 전송 명령어
mariadb -u root -p < [파일 경로]/backup.sql
이 후에 master 컴퓨터에서 master 설정을 진행해야 한다.
vi /etc/mysql/mariadb.conf.d/50-server.cnf
이렇게 vim 편집기를 이용해서 '50-server.cnf'를 열고 109번 라인에 가면 다음 화면처럼 나온다.
109번째 라인
여기서 다음 코드를 복사해서 붙여넣으면 된다.
log-bin # Log 작성을 시작한다는 명령어
server_id=1 # 서버 Id를 나타내는 명령어
log-basename=master1 # 이 로그 파일 이름을 지정하는 명령어
binlog-format=mixed # 로그 파일이 2진수와 언어로 섞이도록 작성한다는 명령어
이렇게 한 후, 저장하면 된다.
설정을 적용시키기 위해서 재시작을 한번 하자.
systemctl restart mariadb
그 후에 mariadb 클라이언트 프로그램에 접속해서 실제로 master 설정이 적용되었는지 확인하자. (다음 명령어는 mariadb 클라이언트 프로그램에서 실행해야 한다.)
mariadb -u root -p
위 명령어를 통해서 클라이언트 프로그램에 접속하자.
show master status;
master 설정이 적용되면 위와 같은 화면이 나온다.
그 후에 Slave 및 WorkBench가 접속할 mariadb ID를 만들어줘야 한다.
CREATE USER '[Slave에서 접속할 ID]'@'%' IDENTIFIED BY '[비밀번호]'; # MariaDB ID 생성
GRANT REPLICATION SLAVE ON *.* TO '[Slave에서 접속할 ID]'@'%'; # 전 권한 부여
FLUSH PRIVILEGES; # 권한 적용
CREATE USER '[WorkBench에서 접속할 ID]'@'%' IDENTIFIED BY '[비밀번호]'; # MariaDB ID 생성
GRANT REPLICATION SLAVE ON *.* TO '[WorkBench에서 접속할 ID]'@'%'; # 전 권한 부여
FLUSH PRIVILEGES; # 권한 적용
Slave Computer 설정 방법
Master 컴퓨터에서 보낸 데이터를 Slave 컴퓨터에 복사해야 한다.
mariadb -u root -p < [Master에서 보낸 파일 경로]
그 후에 Slave 컴퓨터에서 Slave 설정을 진행해야 한다.
vi /etc/mysql/mariadb.conf.d/50-server.cnf
이렇게 Vim 편집기를 통해서 내부 설정을 다음처럼 설정하자. 위와 같이 109번 줄이다.
[mariadb]
server_id=2
109번 줄
이제 MariaDB에 들어가서 master 컴퓨터를 연동해야 한다.
mariadb -u root -p // MariaDB Client 프로그램에 접속하자.
CHANGE MASTER TO
MASTER_HOST='[마스터 서버 IP]',
MASTER_USER='[마스터에서 생성한 ID]',
MASTER_PASSWORD='[마스터에서 생성한 PW]',
MASTER_PORT=3306,
MASTER_LOG_FILE='[마스터에서 show master status 했을 때 File 이름]',
MASTER_LOG_POS=[마스터에서 show master status 했을 때 position 번호],
MASTER_CONNECT_RETRY=10; # 마스터에게 정보를 받는 주기
위 설정처럼 설정하면 Master 연동은 끝난다.
START SLAVE;
위 명령어를 통해 리플리케이션 구축은 끝난다.
SHOW SLAVE STATUS\G
제대로 작동하고 있는지 확인하고 싶으면 위 명령어를 입력한 후
- Slave_IO_Running : YES
- Slave_SQL_Running : YES
라고 로그가 나오는 지 확인하면 된다.
Slave컴퓨터에서 Master 컴퓨터 연결 완료
만약 START SLAVE 명령어에서 에러 로그가 출력되거나 위 로그가 NO 혹은 다른 영어가 존재한다면 Slave 컴퓨터에서 Master 설정을 다시 해주면 된다.
STOP SLAVE;
RESET SLAVE;
KeepAlived 설정 방법 (with Ubuntu)
KeepAlived를 설치하자 (각 DB 컴퓨터에 설치해야 한다.)
apt install -y keepalived
그 후에 keepAlived 설정파일을 생성하고, 설정코드를 입력하자.
vi /etc/keepalived/keepalived.conf
global_defs {
router_id node01 # 이 설정 컴퓨터 이름이다, Master와 Slave에서 달라야 한다.
enable_script_security
script_user root
}
vrrp_script track_mariadb { # 공유기를 통해 내부 컴퓨터들에게 보내는 메시지를 설정한다.
script "systemctl is-active mariadb" # MariaDB에 연결하고 있기 때문에 이렇게 작성한다.
interval 5 # 5초에 한번씩 메시지를 날린다.
fall 4 # 4번 이상 실패하면 컴퓨터가 다운되었다고 가정한다.
rise 2 # 2번 이상 성공하면 컴퓨터가 작동한다고 가정한다.
}
vrrp_instance VRRP1 {
state MASTER # backup 용 설정은 state BACKUP이라고 작성하면 된다.
interface ens33
virtual_router_id 101
priority 200 # 우선순위를 말한다. 우선순위가 높으면 높을수록 Master 컴퓨터이다.
advert_int 1
virtual_ipaddress {
[설정한 가상 IP 주소]/24
}
track_script {
track_mariadb
}
}
Slave 컴퓨터에도 위와 같이 설치 및 설정을 진행하면 끝난다.
그 후에 Master나 Slave가 아닌 컴퓨터에서 MariaDB Client로 접속을 시도하자. (With Mysql Workbench)
참고 자료
keepalived로 이중화 구성하기
C언어로 작성된 로드밸런싱 및 고가용성을 제공하는 프레임워크이다.이중화 구성을 위해 VRRP 프로토콜 사용한다.VRRP(Virtual Router Redundancy Protocol)로, 게이트워이 장애 복구를 위한 프로토콜이다.VR
velog.io
[네트워크] VRRP란? (게이트웨이 이중화 구성 - FHRP)
네트워크 이중화 작업을 할 때 VRRP 프로토콜을 사용해서 한다는 말을 많이 들어봤을 것이다. 이중화 구성을 하는 이유는 크게 두가지로 다음과 같다. Load balancing : 똑같은 기능을 수행하는 장비
limvo.tistory.com
혹시라도 틀린 내용이 있다면 댓글로 알려주시면 감사하겠습니다!!
'CS(Computer Science) > Database' 카테고리의 다른 글
[Database] MySQL(MariaDB)를 사용해서 Query 튜닝하기 (1) | 2025.06.18 |
---|---|
[Database] 클러스터링(Clustering) 구축 (0) | 2025.06.13 |
[Database] 리플리케이션(Replication)에서 미러 사이트(Mirror Site) 구현(Haproxy + MariaDB) (1) | 2025.06.12 |
[Database] DRP(Disaster Recovery Plan)란? (1) | 2025.06.11 |
[Database] DBMS 성능 테스트(JMeter + Prometheus + Grafana) (2) | 2025.06.11 |