MHA 외 다른 이중화 솔루션인 pacemaker로 구성 된 MariaDB 서버를 MHA로 전환하기 위해
작업 준비 중 pacemaker는 failover 수행 시 write용 VIP (master DB) 뿐만 아니라 read용 VIP (slave DB)도 넘길 수 있다는 것을 확인하였음
MHA는 제공 된 스크립트에 failover 수행 시 VIP 하나만 넘기도록 구현되어 있어 read 용 VIP도 넘길 수 있도록 수정한 내역임
1. Pacemaker
[root@TEST01V heartbeat]# sudo pcs status
Online: [ TEST01V TEST02V ]
Full list of resources:
Master/Slave Set: ms_MySQL [p_mysql]
Masters: [ TEST01V ]
Slaves: [ TEST02V ]
writer_vip (ocf::heartbeat:IPaddr2): Started TEST01V
reader_vip (ocf::heartbeat:IPaddr2): Started TEST02V
=> pacemaker가 1번 2번 각 서버에 Write 용 VIP, read 용 VIP가 올라와 있도록 관리함
2. MHA 수정
[testsvc01@mhatest01v ~]$ vi /usr/share/perl5/vendor_perl/MHA/MasterFailover.pm
(왼쪽 라인은 개인 테스트 서버 기준임)
57 ############################################## |
58 # define VIP UP/DOWN Command |
59 my $vip = "10.100.100.101/24"; # Virtual IP/subnet mask(/24=255.255.255.0) |
60 my $read_vip = "10.100.100.102/24"; # Virtual IP/subnet mask(/24=255.255.255.0) |
61 my $eth_no = "eth1"; |
62 my $key = "0"; |
63 my $ssh_start_vip = "sudo /sbin/ifconfig $eth_no:$key $vip up "; |
64 my $ssh_stop_vip = "sudo /sbin/ifconfig $eth_no:$key down "; |
65 my $ssh_send_garp = "sudo /sbin/arping -q -A -c 1 -I $eth_no 10.100.100.101"; |
66 my $ssh_start_read_vip = "sudo /sbin/ifconfig $eth_no:$key $read_vip up "; |
166 ## A simple system call that DISABLE the VIP on the OLD master |
167 sub stop_vip() { |
168 `ssh -tt -o "StrictHostKeyChecking=no" $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`; |
169 `sleep 1`; |
170 `ssh -tt -o "StrictHostKeyChecking=no" $ssh_user\@$orig_master_host \" $ssh_start_read_vip \"`; |
171 } |
=> $read_vip 변수를 선언하고 Failover 수행 시 이전 구 Master 서버 였던 곳에 접속하여 read 용 VIP를 올리도록 구현