IT_DBMS/etc. (related DB)

[펌] DB 서버 이중화 - How to configure DRBD + GFS2 + Heartbeat + MariaDB on CentOS

JJun ™ 2014. 3. 14. 09:11



 * 출처

 : https://www.yongbok.net/blog/how-to-configure-drbd-gfs2-heartbeat-mariadb-on-centos/



두대의 서버에 DRBD + GFS2 + Heartbeat + MariaDB를 설치하여 DB서버 이중화 구성을 하는 방법에 대해 다루겠습니다.
대충 서버 구성은 다음과 같다고 보시면 됩니다.





설치 순서는 DRBD -> GFS2 -> MariaDB -> Heartbeat 가 되겠습니다.
설명 중간 중간에 “[root@ruo91 ~]#” 의 형태로 나오면 양쪽 서버 모두 포함해서 설정하는 부분 입니다.. 실수 없으시길..



테스트 환경

CentOS 6.5 x86_64 (2.6.32-431.5.1.el6)


서버 구성

Host Name          Type                      IP                   Storage
ruo91-node1    Primary        192.168.0.10       10G SSD
ruo91-node2   Secondary   192.168.0.11         10G SSD



1. Host Name 별칭 설정 (Both)
/etc/hosts 파일에 서버의 별칭을 설정 합니다.

2. NTP 동기화 (Both)

서버의 날짜 및 시간이 맞지 않으면 동기화가 되지 않을수 있기 때문에 crontab을 이용하여 주기 적으로 동기화 될수 있도록 설정 합니다.

3. DRBD(Distributed Replicated Block Device)
– DRBD 설치 (Both)
elrepo의 저장소를 추가 하고 설치 합니다.

수동으로 DRBD Module을 적재 시킵니다.



 [root@ruo91 ~] # modprobe drbd minor_count=1


 

부팅시 자동으로 모듈을 적재 시키도록 설정 파일을 하나 작성 합니다.



 [root@ruo91 ~]# echo "modprobe minor minor_count=1" >> /etc/rc.local






– DRBD 설정 (Both)
“drbd_disk1.res”라는 이름으로 설정 파일을 하나 생성하고 아래와 같이 사용자 환경에 맞게 변경합니다.

– DRBD Meta data 생성 (Both)

– DRBD 실행 (Both)

– 동기화 설정
– ruo91-node1
ruo91-node1 서버를 primary로 지정 하겠습니다.

이후 primary <-> Secondary 동기화가 완료 될때까지 기다립니다.

동기화가 완료 되면 이런식으로 나와야 합니다.

– ruo91-node2
Primary 로 변경 합니다.

4. Cluster + GFS2(Global File System)
– Cluster Software 설치 및 설정 (Both)

cluster.conf 설정 파일을 하나 만들어 줍니다.

cluster management 를 실행합니다.

부팅시 자동 실행 되도록 설정합니다.

– GFS2 파일 시스템 포멧 (Only one of the nodes)
이 부분은 ruo91-node1에서만 진행 하겠습니다.

– GFS2 마운트

확인

5. MariaDB 설치 및 설정 (Both)

– MariaDB 저장소 추가

MariaDB 설치

기존 설정파일 삭제

my-huge.cnf 설정 파일 사용

/etc/init.d/mysql의 datadir 변경

Database 설치

MariaDB 시작

root 비밀번호 설정

사용자 데이터베이스 추가

웹서버로 사용하고 있는 IP 에서 접근이 가능 하도록 설정

6. Heartbeat
– Heartbeat 설치 (Both)

ha.cf 설정 파일을 하나 만듭니다.


 [root@ruo91 ~]# nano /etc/ha.d/ha.cf

 # 로그

 use_logd yes

 logfile /var/log/ha.log

 debugfile /var/log/ha-debug.log

 # 유지 시간

 keepalive 2

 # 호스트가 죽었다고 판단하는 시간

 deadtime 10

 # 자동 장애 복구

 auto_failback on

 initdead 10

 bcast eth0

 # Master

 node ruo91-node1

 # Slave

 node ruo91-node2




sha1를 사용 하도록 설정 합니다.

각각의 노드에 haresources 파일을 생성합니다.

Heartbeat에 MariaDB 서비스를 등록

MariaDB, drbd를 중지 합니다.

부팅시 Heartbeat가 해당 서비스를 컨트롤 하므로 runlevel을 모두 해제 합니다.

Heartbeat를 시작합니다.

이 후 eth0 인터페이스에 가상의 IP가 하나더 추가 되어있는 것을 볼수 있습니다.

위와 같이 잘 설정 되었다면 서버 장애가 발생해도 auto-failover를 잘 수행하게 될것 같습니다.
Thanks -:)