간마늘작업소

[MariaDB] 이중화 구성 (DRBD / Pacemaker 이용) - 01.DRBD 구성 본문

Linux/32.MySQL, MariaDB

[MariaDB] 이중화 구성 (DRBD / Pacemaker 이용) - 01.DRBD 구성

간마늘 2022. 7. 20. 20:29
[MariaDB] 이중화 구성 (DRBD / Pacemaker 이용)
01.DRBD 구성 02.MariaDB 디렉토리 변경 03.Pacemaker 이중화 설정

0.개요

  1. 고객사에 납품된 솔루션 중에 MariaDB를 사용하는 물건이 있음.
  2. 이중화 구성을 하는데 Galera Cluster(갈레라 클러스터)를 거부함.
    • Galera Cluster는 권장이 DB Node 3대인데 2대로 하고 싶어함.
    • 접근제어, 방화벽 등 우리 솔루션 이외의 타 솔루션 라이선스 문제가 있음.
  3. 라이선스 문제로 인해 MaxScale은 제안도 못함.
    • DB Node 2대까지는 무료지만......
  4. 결국 DRBD를 바탕으로한 Pacemaker를 이용한 이중화 구성을 해야했음.

 

1.기본 정보

  • OS 방화벽(Firewalld, iptables)과 SELinux는 비활성화 상태로 설정.
  • DB Node 정보
    1. 192.168.0.171 - DB Node 1, Hostname : mariadb01
    2. 192.168.0.172 - DB Node 2, Hostname : mariadb02
    3. 192.168.0.170 - HA VIP
  • MariaDB는 사전에 설치되어 있는 것으로 가정.
    • 사실.... 문제가 생기긴 했음.
  • 하단 명령어 중 적색 글씨는 DB Node 1에만 적용.
  • 하단 명령어 중 청색 글씨는 DB Node 2에만 적용.

 

2.사전 환경 구성

2.1.Hosts 파일 수정

2.1.1.Hosts 파일 수정

vi /etc/hosts
192.168.0.171 mariadb01
192.168.0.172 mariadb02
  • DB Node 정보 추가 후 저장.

2.2.DRBD 설치

2.2.1.ELRepo 등록

2.2.1.1.RHEL 7 / CentOS 7
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2.2.1.1.RHEL 8 / CentOS 8 / Rocky Linux 8
dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2.2.2.DRBD 설치

yum install drbd90-utils kmod-drbd90
  • 커널 문제로 kmod-drbd가 설치되지 않을 수 있다.
  • 그럴 때는 미러 사이트에서 RPM 파일을 다운로드 받아 직접 설치한다.

2.2.3.커널 설정

modprobe drbd
lsmod | grep drbd

  • drbd가 정상적으로 추가된 것을 확인.

 

2.3.DRBD 구성

2.3.1.공유 디스크 설정

fdisk -l

  • 파티션을 생성할 디스크 정보 확인.
    • 테스트 장치 : /dev/xvdb

2.3.1.1.Parted 이용

parted -s -a optimal -- /dev/xvdb mklabel gpt
parted -s -a optimal -- /dev/xvdb mkpart primary 0% 100%
parted -s -- /dev/xvdb align-check optimal 1

2.3.1.2.LVM 이용

2.3.2.마운트 위치 확인

mkdir /data
  • 마운트 위치 확인.
    • 해당 문서에서는 /data 디렉토리에 마운트.

2.3.3.리소스 파일 작성

cd /etc/drbd.d/
vi resource0.res
resource resource0 {
  protocol C;
  startup {
    wfc-timeout       0;
    degr-wfc-timeout  120;   
  }
  disk {
    on-io-error detach;
    resync-rate 300M;
  }
  net {
    timeout             60;    
    connect-int         10;    
    ping-int            10;
    max-buffers         20000;
    max-epoch-size      20000;
  }
  on mariadb01 {
    device    /dev/drbd0;
    disk      /dev/xvdb1;
    address   192.168.0.171:7789;
    meta-disk internal;
  }
  on mariadb02 {
    device    /dev/drbd0;
    disk      /dev/xvdb1;
    address   192.168.0.172:7789;
    meta-disk internal;
  }
}
  • DRBD 리소스 파일 작성
    • resource0 : 리소스 이름. 원하는 명칭으로 변경 가능함. 파일 명과 같이 맞추는 것을 권장.
    • protocol C : 동기 복제 프로토콜.
    • on mariadb01 : DB Node 1에 대한 설정. 명칭은 /etc/hosts 파일에 지정된 DB Node 1과 동일하게 설정.
      • device : DRBD 장치명. /dev 디렉토리 밑에 임의 명칭으로 기입 가능함.
      • disk : 공유 디스크 장치명. Parted로 생성한 장치 및 LVM으로 생성한 장치 사용 가능.
        • 필자는 /dev/xvdb1로 진행.
      • address : DB Node 1의 IP 및 사용할 TCP Port 지정 가능. 기본 TCP Port는 TCP/7789.
      • meta-disk
        DRBD가 동작하기 위한 메타 데이터 저장공간. 별도의 device를 지정할 수 있으나 internal로 설정하면 공유 디스크의 공간 중 약 128 MB를 이용함.
    • on mariadb02 : DB Node 2에 대한 설정. 명칭은 /etc/hosts 파일에 지정된 DB Node 2와 동일하게 설정.
    • 구성 후 저장.

2.3.4.DRBD 리소스 생성

drbdadm create-md resource0
  • 리소스 생성.
    • 해당 문서에서는 리소스 이름을 resource0로 지정했음에 따라 명령어에 resource0을 사용.
    • 리소스 삭제 : drbdadm wipe-md resource0

2.3.5.DRBD 리소스 시작

drbdadm up resource0
  • 리소스 시작.
    • 리소스 종료 : drbdadm down resource0
drbdadm status resource0
  • 리소스 상태 확인.

 

2.4.DRBD 동기화 설정

2.4.1.DRBD 동기화 싱크 테스트

drbdadm primary --force resource0
drbdadm status resource0
  • DB Node 1을 DRBD Master로 지정.
  • 지정 후 상태 확인.

  • 위 이미지처럼 최초 진행 시 완전히 동기화될 때까지 다소 시간이 걸릴 수 있음.

  • 동기화 및 싱크가 맞춰지면 위 이미지처럼 상태 확인이 가능함.
mkfs.xfs -f /dev/drbd0
  • DRBD 공유 볼륨을 xfs으로 포맷.
mount /dev/drbd0 /data
  • DRBD 공유 볼륨을 공유 디렉토리에 마운트.
cd /data
ll /data
touch file1 file2 file3 file4 file5 file6 file7 file8 file9
  • DRBD 공유 볼륨 확인.
  • 공유 테스트를 위한 파일 생성.
cd ~/
umount /data
drbdadm secondary resource0
drbdadm status resource0
  • DRBD 공유 볼륨 언마운트.
  • DB Node 1을 DRBD Standby로 지정.
  • 지정 후 상태 확인.
drbdadm primary resource0
drbdadm status resource0
mount /dev/drbd0 /data
  • DB Node 2를 DRBD Master로 지정.
  • 지정 후 상태 확인.
  • DRBD 공유 볼륨을 공유 디렉토리에 마운트.
cd /data
ll /data
  • DRBD 공유 볼륨 동기화 확인.
cd ~/
umount /data
drbdadm secondary resource0
drbdadm status resource0
  • DRBD 공유 볼륨 언마운트.
  • DB Node 2를 DRBD Standby로 지정.
  • 지정 후 상태 확인.
drbdadm primary resource0
drbdadm status resource0
  • DB Node 1을 DRBD Master로 지정.
  • 지정 후 상태 확인.
[MariaDB] 이중화 구성 (DRBD / Pacemaker 이용)
01.DRBD 구성 02.MariaDB 디렉토리 변경 03.Pacemaker 이중화 설정
Comments