KWMBLOG

DB 이중화 작업(HA 구성) 2편 본문

리눅스/운영참고

DB 이중화 작업(HA 구성) 2편

KWMBLOG 2018. 12. 6. 10:42

1편에 이어서 진행한다.




3. HeartBeat 설치 및 설정

yum install heartbeat

yum 명령어로 heartbeat에 설치한다.

그리고 여기서도 따로 얘기가 없는 한

두대 다 동일하게 세팅해준다.



3.1 설정파일 복사

/usr/share/doc/heartbeat-3.0.4 경로에 있는

ha.cf, haresources, authkeys 이 세개의 파일을 

/etc/ha.d 로 복사한다.



3.2 authkeys 설정
/etc/ha.d/authkeys를 열어 아래와 같이 수정한다.


여기서 auth 3은 index 호출이다.
3 md5 auth 에서 맨 앞의 3이 index이다.

나머지 1, 2 에 해당하는 내용은 주석문에도 적혀있듯이 
sha1 이 가장 좋고, md5가 그 다음으로 좋고, crc는 마지막이다.
crc는 패킷 손상을 제외하고는 보안을 추가하지 않는다.

다음으로 authkeys 파일의 권한을 수정한다.
chmod 600 /etc/ha.d/authkeys
이거 안해주면 실행 안된다.


3.3 ha.cf


이 설정은 stanby 의 설정이다.
active설정은 맨위 node2 node1 의 위치만 바꿔주면 된다.

주석처리된 곳이 많은데, 역시 수많은 삽질의 결과다ㅠㅠ


3.4 haresources
/etc/ha.d/haresources 를 열어 다음과 같이 작성한다.


node1 = HOSTNAME,

data = drbd 설정시 사용했던 그 data,

Filesystem:drbd HDD::마운트위치::포맷타입,

IPaddr = virtual ip

이렇게 구성된다.



3.5 HeartBeat 실행
service heartbeat start 혹은 /etc/init.d/heartbeat start
active 서버에서 먼저 실행하고 ,
stanby에서 실행해준다.

여기까지가 heartbeat관련 내용이다.



4. mon



4.1 perl 헤더파일 생성


cd /usr/include

h2ph -r -l ./

여기서 -l 은 소문자 L이다.


Destination directory /usr/local/lib64/perl5 
doesn’t exist or isn’t a directory
오류가 난다면
yum install -y glibc-headers
mkdir /usr/local/lib64/perl5
를 실행하고 다시 h2ph -r -l ./ 를 입력한다.


4.2 mon 설치
파일들을 어쨌는지 보이지가 않는다..
다음에 찾아서 업로드 해놓기로 하고

Period-1.20.tar.gz
Time-HiRes-1.9721.tar.gz
mon-1.2.0.tar.gz
이렇게 3개의 파일이 필요하다.


4.2.1 Perl 모듈 설치
tar xvfz Period-1.2.0.tar.gz
cd Period-1.20
perl Makefile.PL && make && make install
순서대로 입력해 준다.

tar xvfz Time-HiRes-1.9721.tar.gz
cd Time-HiRes-1.9721
perl Makefile.PL && make && make install
순서대로 입력해 준다.


4.2.2 mon, mon perl 모듈 설치

tar xvfz mon-1.2.0.tar.gz
mv mon-1.2.0 /usr/local/mon
cd /usr/local/mon/mon.d 
make && make install
yum install perl-DBD-MySQL perl-DBD-Pg
순서대로 입력해준다.


4.3 mon 환경설정 파일 생성

mkdir /etc/mon
cp -av /usr/local/mon/etc/auth.cf /etc/mon
cd /etc/mon
을 순서대로 입력해 준 다음
mon.cf를 열어준다.


이대로 작성해 준다.

가려진 부분은 DB패스워드, 메일 주소이다.

그리고 9번째줄 저기는 비워둬야 된다.

(아직도 왜그런지 모르겠다.)


다음

cd /usr/local/mon/mon.d

cp -av mysql-mysql.monitor mysql.monitor

를 입력한 후 mysql.monitor 를 열어준다.



72번째 라인 부터 74번째 라인까지 수정한다.

username : DB 유저

password : DB 유저의 패스워드

database : 사용하는 DB

다음

cd /usr/local/mon/alert.d/

로 이동한 뒤

stop-heartbeat.alert 라는 파일을 생성한다.


active 설정


stanby 설정


이대로 입력해준다.

chmod 755 /usr/local/mon/alert.d/stop-heartbeat.alert

권한 설정도 해준다.


수정

위 이미지에

if [ "#PSID" == "" ];

이 부분을

if ["#PSID" != ""];

이렇게 바꿔줘야한다.


4.4 mysql user 설정


mysql -u root -p mysql 

를 입력하여 패스워드를 입력하고 접속한다.


grant all on monitor.* to monitor@’%’ identified by ‘패스워드’; 

flush privileges; 

use monitor; 

create table monitor (id int, data varchar(100));

순서대로 입력해준다.



4.5 mon 실행

/usr/local/mon/mon -f -c /etc/mon/mon.cf
를 입력하여 mon을 실행한다.


4.6 테스트

active 서버에서 mysql을 중지시켰을 때,
stanby 서버에서 mysql이 돌아간다면 성공이다.
여기서 에러가 발생한다면,
monitor DB 유저의 권한에 localhost를 추가해준다.



5. 기타


active 서버 실행방법

/etc/init.d/drbd start

/etc/init.d/heartbeat start

drbdadm primary data

mount /dev/drbd0 마운트디렉터리

mysql.server start

/usr/local/mon/mon -f -c /etc/mon/mon.cf


stanby 서버 실행방법

/etc/init.d drbd start

/etc/init.d/heartbeat start

/etc/init.d/mon start


 active 서버에서 stanby 서버 로 변경됐을 때

acvie 서버에서

/etc/init.d/drbd start

/etc/init.d/heartbeat start


그 후 stanby 서버에서

/etc/init.d/heartbeat stop


다시 active 서버에서

drbd-overview

primary/secondary 가 떠있으면 

mysql프로세스 올라와있는지 확인 후 

/usr/local/mon/mon -f -c /etc/mon/mon.cf


secondary/secondary 일 경우 

drbdadm primary data, 


primary/unknown 일 경우 

master / slave 둘다 drbd restart


다시 stanby 서버에서

/etc/init.d/heartbeat start

drbd-overview

secondary/primary가 됐는지 확인한다.




여기까지가 DB이중화 작업의 끝이다.

처음 해보는거라 엄청난 고생을 했다.

나중을 위해서 자세히 써놓고 싶긴 하지만

지금은 이정도만 써놔도 될 것 같다.


최근 보안업데이트 때문에

한번 껐다켰는데, DB끊김없이

잘 작동 되었다.


3줄 요약

HeartBeat를 설치/설정/실행 한다.

mon을 설치/설정/실행 한다.

뿌듯하다.



'리눅스 > 운영참고' 카테고리의 다른 글

동시접속자 수 확인  (0) 2018.12.12
ATA, ACHI 확인방법  (0) 2018.12.12
DB 이중화 작업(HA 구성) 1편  (0) 2018.12.06
프로세스의 메모리 사용량 확인  (0) 2018.12.04
Device is busy  (0) 2018.12.01
Comments