Print
카테고리: [ MariaDB ]
조회수: 3852

 

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를 올리도록 구현