DRBD HA
HA(High Available) : 고 가용성
- 서비스를 오랜 기간동안 지속적으로 정상운영이 가능하게 하는것.
HA Cluster
-시스템이 끊기지 않고 서비스를 가능하게 하는게 목표
클러스터로 묶인 2대중 1대에서 장애가 발생시, 다른서버가 즉시 그 업무를 대신 수행하게 한다.
DRBD(Distributed Replicated BlockDevice)
-HA cluster 구축을 위한 블럭 디바이스. Network Raid-1 동작. 네트워크를 통한 미러링.
------------------------------------------------------------------------------------------
환경 : CentOS 7
* drbd 구성을 위해서는 처음 설치부터 파티션관리가 중요하다
파티션을 따로 잡아줘야하기때문에 추가 HDD를 사용하거나 공간을 확보해놓고,
설치 후에 파티션 설정을 해주자.
* 시간동기화를 해주자
1. drbd 설치를 위한 repo 등록
http://elrepo.org/tiki/tiki-index.php
rpm -Uvh elrepo-release-7.0-2.el7.elrepo.noarch.rpm
2. 패키지 설치
yum install drbd84-utils kmod-drbd84
3. 호스트 설정
hostnamectl set-hostname dr1 //cent 7은 ctl 명령어를 통해 변경
/etc/hosts 변경
두대 서버는 dr1과 dr2 사용
222.236.47.230 dr1
222.236.47.231 dr2
위처럼 둘다 넣어준다.
4. 파티션 설정
fdisk or parted
gpt인 관계로 parted로 설정
p : 파티션 공간 확인
mkpart : 파티션 분할 명령어
rm 번호 : 삭제
q : 나가기
간단하게 나눌수 있다.
5. drdb 파일 설정
/etc/drbd/파일이름.res
resource drbddata { // drdbdate.res로 파일이름 지정
startup {
wfc-timeout 30;
degr-wfc-timeout 30;
}
net {
cram-hmac-alg sha1;
shared-secret sync_disk;
}
syncer {
rate 100M;
al-extents 257;
on-no-data-accessible io-error;
}
on dr1 { // 호스트 네임
device /dev/drbd0;
disk /dev/sda6; // 분할해서 지정한 파티션
address 222.236.47.230:7788; // 보통 사설 ip 쓰는 듯, 포트는 임의로...
meta-disk internal;
}
on dr2 {
device /dev/drbd0;
disk /dev/sda6;
address 222.236.47.231:7788;
meta-disk internal;
}
}
6. meta data 생성
drbdadm create-md drbddata // 서버 2대 순서대로 해주자
# drbdadm create-md drbddata
You want me to create a v08 style flexible-size internal meta data block.
There appears to be a v08 flexible-size internal meta data block
already in place on /dev/sda6 at byte offset 87999639552
Do you really want to overwrite the existing meta-data?
[need to type 'yes' to confirm] yes
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
위처럼 되면 성공!
7. drbd 구동
systemctl start drbd // 순차적으로 실행(1 끝나고 2 실행)
cat /proc/drbd
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by phil@Build64R7, 2016-01-12 14:29:40
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:85934492
위처럼 Secondary/Secondary 나오면 동기화 성공
Secondary/Unknown 둘다 실행했는데 이처럼 나오면 실패
* 안될경우 방화벽을 살펴 보자.
cent 7 경우에는 iptables 가 아니고
systemctl stop firewalld // 요명령어로 방화벽 해제
systemctl mask firewalld // 방화벽 다시 안올라오게 설정
8. Master 서버 설정
drbdadm primary --force drbddata // secondary를 primary로
cat /proc/drbd
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by phil@Build64R7, 2016-01-12 14:29:40
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:2710036 nr:0 dw:0 dr:2710948 al:8 bm:0 lo:0 pe:2 ua:0 ap:0 ep:1 wo:f oos:83224540
[>....................] sync'ed: 3.2% (81272/83920)M
finish: 13:04:21 speed: 1,760 (1,740) K/sec
위처럼 보이면 동기화가 진행중이다
drbd-overview //현재 진행 상황을 볼 수 있다.
0:drbddata/0 SyncSource Primary/Secondary UpToDate/Inconsistent
[>....................] sync'ed: 3.3% (81184/83920)M
9. 마운트
mkfs.ext4 /dev/drbd0
mount /dev/drbd0 /data
---------------------------------------------------------------------
modprobe drbd
- 모듈 적재
drbdadm create-md drbddata
- 메타데이터 생성
dd if=/dev/zero of=/dev/sdb bs=1M
- 디스크 초기화 (필요시만 한다)
drbdadm primary --force drbddata
- 동기화전 마스터서버 첫번째로
drbdadm primary drbddata
drbdadm secondary drbddata
drbd-overview
- 동기화 진행확인