서버의 고가용성을 목적으로 Data Replication 관련 DRDB 패키지 설치

DRBD와 heartbeat 혹은 keepalived 이용해 active-standby를 구성


OS : ubuntu 14.04 (64bit)

NIC : 

- node01 : public(eth0, 192.168.100.101), heartbeat(eth2, 172.27.0.101 mtu 9000) 

- node02 : public(eth0, 192.168.100.102), heartbeat(eth2, 172.27.0.102 mtu 9000) 

DISK : sdb1(Replication DISK 10G), sdc1(META DISK 1GB)



1. 사전 준비


1) ntp 설치(nodeo01, node02) 

# apt-get install ntp -y

# /etc/init.d/ntp start

# ntpq -p

# date


2) iptables 해제

# iptables -F


3) /etc/hosts file 설정

master/slave 서버 호스트명 기재


# cat /etc/hosts

127.0.0.1       localhost

# 127.0.1.1       node01


192.168.100.101 node01  node01

192.168.100.102 node02  node02

172.27.0.101    node01-private

172.27.0.102    node02-private


4) DISK 파티셔닝

# fdisk /dev/sdb, /dev/sdc



2, DRDB 패키지 설치


# apt-get install drbd8-utils


# root@node02:/etc# cat drbd.conf

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example


include "drbd.d/global_common.conf";

include "drbd.d/*.res";


# /etc/drbd.conf


# cat /etc/drbd.d/nfs.res

 

resource nfs {    # nfs라는 리소스 정의

  protocol C;                 # DATA 전송 프로토콜 A 비동기식 빠른속도   <=> C 동기식

        startup {

                wfc-timeout 30;

                outdated-wfc-timeout 20;

                degr-wfc-timeout 30;

      #become-primary-on both; # Active-Active 설정시​

        }

disk {

                on-io-error detach;   //  This is the recommended option. On the occurrence of a lower-level I/O error, the node drops its backing device, and continues in diskless mode.             

fencing resource-only; //If a node becomes a disconnected primary, it tries to fence the peer's disk. 

        }

        net {

                cram-hmac-alg sha1;

                shared-secret sync_disk;

                #allow-two-primaries yes;         # Active-Active 구성시 옵션으로 아래 4줄

                #after-sb-0pri discard-zero-changes; 

                #after-sb-1pri discard-secondary; 

                #after-sb-2pri disconnect; 

        }

        syncer {    # resynchroniztion 에서 사용하는 대역폭

                rate 100M;                  # 초당 100M

                verify-alg sha1;

al-extents 257;

        }

        on node01 {                          # 호스트 별로 리소스 정의 (uname -n 값과 반드시 일치)

                device /dev/drbd0;           # drbd의 논리 블록 디바이스명. mkfs,mount 수행해야됨

                disk /dev/sdb1;              # 미러링 하고자 하는 물리 디스크 디바이스명

                address 172.27.0.101:7788;   # 데이타 동기화를 위한 수신 IP/포트

                meta-disk /dev/sdc1;         # 자체 메타 공간 사용 meta-disk internal;

        }

        on node02 {

                device /dev/drbd0;

                disk /dev/sdb1;

                address 172.27.0.102:7788;

                meta-disk /dev/sdc1;

        }



3. 실행

메타데이터 생성 - master/slave 모두

# drbdadm create-md nfs #meta

# dd if=/dev/zero of=/dev/sdb bs=1M  <=오류 시 dd로 disk 초기화

# /etc/init.d/drbd start​ #drbd 서비스 시작, wfc-timeout 시간 이내에 두서버를 모두 on 



# drbdadm -- --overwrite-data-of-peer primary nfs #active 서버 지정 한쪽에서만 수행

# drbdadm primary --force nfs #active 서버 지정

# drbd-overview #확인


# mkfs.ext4 /dev/drbd0 #primary 에서 지정

# mkdir /data

# mount /dev/drbd0 /data/


4. drbdadm CLI

# drbdadm primary nfs

# drbdadm secondary nfs

# drbd-overview

drbdadm -- --overwrite-data-of-peer primary all

primary로 부터 데이터 동기화




'리눅스-Linux' 카테고리의 다른 글

DNS 서버 bind9 설정 관련  (0) 2015.10.11
[Linux] iptables 사용  (0) 2015.10.11
[리눅스] 유용한 find , grep 사용법  (1) 2015.10.11
[Linux] iscsi.conf timeout 관련  (0) 2015.06.10
[리눅스] 파일 무결성 검증  (1) 2014.11.18
Posted by 뭉탁거림
,