Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

MHA 구성 방법 본문

MySQL/H.A (High Availability)

MHA 구성 방법

`O` 2021. 3. 4. 11:25
728x90
반응형
Host IP VIP Role
mha-test-monitor 192.168.0.101 192.168.137.101 Monitoring
mha-test-master 192.168.0.102 192.168.137.102 Master
mha-test-slave01 192.168.0.103 192.168.137.103 Slave01
mha-test-slave02 192.168.0.104 192.168.137.104 Slave02

 

    • 실제 IP 와 내부 통신용으로 쓰일 VIP 를 구성한다. (eth 추가)
    • 서버의 역할은 아래와 같다 (Monitor 를 제외한 모든 서버에 MySQL 5.7 을 구성)

Host Role  Description
mha-test-monitor Monitor Master, Slave 서버간의 health check 및 기타 관련 log 를 쌓는 서버
mha-test-master Master (MySQL 5.7) App 이 DB write 를 위해서 접근하는 서버
mha-test-slave01, mha-test-slave02 Reader (MySQL 5.7) App 이 DB read 를 위헤서 접근하는 서버
  •  
    • 각 서버 간의 제한된 성능 spec 이 없으므로 자신이 실제로 사용할 서버의 spec 은 상황에 맞게 임의로 구성한다. (해당 자료는 각 서버당 cpu 2 core, mem 4G 로 설정)

  • 구성방법

- 우선 Monitor 서버에 아래와 같이 yum 으로 MHA 툴이 사용하는 perl 을 설치한다.

$> yum -y install perl-CPAN perl-DBD-MySQL perl-log-Tiny perl-log-Dispatch perl-parallel perl-Module-Install


- 그외의 Master, Slave 는 위의 모듈중 아래의 3개만 설치한다. yum 이 정상적으로 구동되어서 설치가 된다면 아래와 같이 perl 이 설치된다.

$> yum -y install perl-CPAN perl-DBD-MySQL perl-Module-Install

 

 

- 각 서버에 perl 이 정상 설치가 되었다면 Master, Slave 서버에 MySQL 을 설치 해둔 후, mha tool file 도 다운 받아 보관할 디렉토리에 넣는다. (파일은 구글링을 통해 받는다. 해당 페이지에서는 0.57 버전을 사용했다.)


- 그 후, monitor 로 사용할 서버와 실제 운영 node 로 사용 될 서버는 아래와 같이 각각 위의 파일들을 아래의 make 명령어를 수행하여 실행한다. 정상 수행 시, 아래의 화면을 볼 수 있다.

    -- Monitor 서버

$>   tar xvzf mha4mysql-manager-0.57.tar
$>   cd mha4mysql-manager-0.57.tar
$>   perl Makefile.PL 
$>   make
$>   make install

 

    -- 모든 서버 (Monitor 포함)

$>   tar xvzf mha4mysql-node-0.57.tar
$>   cd mha4mysql-node-0.57.tar
$>   perl Makefile.PL 
$>   make
$>   make install

 

    -- Make 설정이 완료되면 각 Master, Slave 서버간에 각 서버 간 Replication 통신을 할 DB 계정을 GRANT 로
       생성한다. 이 가이드에서는 mha 라는 계정을 사용한다.

$> GRANT ALL PRIVILEGES ON *.* TO ‘mha’@'%' IDENTIFIED BY '사용할 비밀번호';

 

    -- 다시 Monitor 서버로 돌아가서 아래와 같이 masterha-default.cnf 파일을 수정 혹은 생성한다. MHA 구성 후
       사용할 config 파일이므로 확인 및 사용이 용이한 디렉토리에 임의로 구성한다.

vi masterha-default.cnf


    -- 해당 파일로 들어가면 아래와 같이 일부 옵션을 조절 할 수 있다. 해당 테스트에서는 아래와 같이 구성했다. 해당 

       내용에서 IP 등의 정보는 상황에 맞게 조절한다. (참조 사이트에는 아래의 기본옵션이외에 추가 옵션을 부여 했으므

       로, 상세한 작동 옵션을 원한다면 위의 참조 사이트를 확인한다.)


- 설정이 끝났다면 이제 각 서버간의 ssh 통신을 연결 해 줄 차례다. 그러기 위해서는 각 서버 간 DB 를 통신할 OS
       계정이 PW 없이 통신 및 원격 기능 사용이 가능해야 하기에
아래와 같이 모든서버에 설정을 해준다.

- 먼저 monitor 서버에서 부터 rsa 키를 생성한다.

 

- 그 후, master 및 slave 서버에 생성한 키를 아래와 같이 복사시킨다. 복사가 끝나면, master / slave 서버에서도

  동일하게 key 생성 후 복사한다.

 

- 각 서버간에 위의 작업을 완료했다면 이제 ssh 테스트를 통하여 각 서버간에 통신이 되는지를 확인한다. 위에서

  구성했던 monitor 서버의 masterha 디렉토리로 이동하여 아래의 커맨드를 사용한다. cnf 파일은 생성해 두었던

  디렉토리로 지정해 준다. 테스트가 정상으로 수행된다면, 아래의 화면을 볼 수 있다.

$> masterha_check_ssh --conf=/data/test/masterha-default.cnf


- 그 후, replication health check 를 테스트 하도록 아래의 커맨드를 입력한다. 정상 수행 시, 아래의 화면을 볼 수

  있다. cnf 파일은 생성해 두었던 디렉토리로 지정해 준다.

$> masterha_check_repl --conf=/data/test/masterha-default.cnf

 

- 위의 테스트가 정상 완료 되었다면 MHA 프로세스를 켜준다. 정상 수행 시, 아래의 화면을 볼 수 있고, 프로세스

  도 기동 된 것을 볼 수 있다.

$> masterha_manager --conf=/data/test/masterha-default.cnf

 

- 위의 테스트가 정상 완료 되었다면 MHA 프로세스를 켜준다. 정상 수행 시, 아래의 화면을 볼 수 있고, 프로세스

  도 기동 된 것을 볼 수 있다.

$> masterha_manager --conf=/data/test/masterha-default.cnf

 

- MHA 프로세스가 정상 기동 중 이라면, 이제 서버 혹은 DB 이상에 대한 failover 테스트를 수행 해 볼 수 있다. Master 서버에서 임의로 shutdown 을 수행한다.
(해당 테스트에서는 본인이 작성한 shutdown 스크립트를 실행 했으나, 기타 여러 방법으로 DB 를 종료해도 상관없다.)

 

- Master 서버에서 DB가 비정상 기동이 된다면, Monitor 서버에는 아래와 같이 지연되었던 binlog 내용 동기화 및 failover 를 수행한다.


- Failover 가 완료되면 masterha 디렉토리에 아래의 로그들이 생성되고, 위의 config 파일에서 failover 과정 로그 적재 디렉토리도 기재 했다면, 과정 로그도 따로 생성된다. 로그파일을 확인 해 보면 어떤 slave 서버가 failover 되어 Master 로 승격됐는지 확인 할 수 있다. (해당 테스트에서는 MHA.log 로 생성)

 

- 그 후, 기존에 Master 였던 서버가 failover 가 되어서 Slave 서버로 운영되게 하려면 Master 서버 내 DB 를 다시 기동 후 승격된 Master 서버 (테스트에서는 Slave01 서버) 의 정보를 다시 입력하여
재동기화를 시켜 준다.


- 동기화를 재 설정하여 정상 연결이 된다면, 위의 save, masterha 로그 삭제 후, 아래의 명령어를 입력하여 Master 서버를 switch 해 본다. 일부 항목은 질의를 하는데 아래의 화면을 참고하여 yes 를 입력한다.

$> masterha_master_switch --master_state=alive --conf=/data/test/masterha-default.cnf


- Switch 가 완료됐다면 slave02 서버에서 master 서버가 변경 되었는지 확인 한다.

 

- Slave01 서버도 switch 된 master 서버로 연결 시키기 위해서 추가 세팅이 필요하다. 우선, 아래의 명령어를 통하 slave 서버에 데이터 유입을 방지토록 하고 master 연결 설정을 바꿔준다.

mysql> set global read_only=1;

 

- 위의 방법으로 Master 서버가 다시 Master 역할을 하도록 변경 완료 했다면, Monitor 서버에서 mha 프로세스를 재기동한다.

반응형

'MySQL > H.A (High Availability)' 카테고리의 다른 글

갈레라 클러스터 구성 방법  (0) 2021.03.04
갈레라 클러스터 개요  (0) 2021.03.04
MHA 개요  (0) 2021.03.03
MMM 구성 방법  (0) 2021.03.03
MMM 개요  (0) 2021.03.03
Comments