리눅스

Total 331
Today 0
profile_image
슈퍼아이피
18-04-12 17:06 0개 9회
일반문서
DRBD (블럭 디바이스 HA) 설치

DRBD 설치

 


 

설치 환경

 


 

OS : Ubuntu 14.014 LTS

DRBD : DRBD 8.4.4

 

primary ip : 192.168.3.11

primary hostname : drbd-1

primary device : /dev/sdb  # 실제 mirroring 할 디바이스


secondary ip : 192.168.3.12

secondary hostname : drbd-2

secondary device : /dev/sdc  # 실제 mirroring 할 디바이스

 

1. /etc/hosts(primary , secondary 둘다 설정)

drbd 설정시 hostname 을 통해 노드를 구분함으로 이를 /etc/hosts파일에 등록해야한다.

 

$ vi /etc/hosts

192.168.3.11    drbd-1

192.168.3.12    drbd-2


2. 패키지 설치 및 kernel module 로드(primary , secondary 둘다 설정)

$ sudo apt-get install drbd8-utils

$ sudo modprobe drbd


module 로드 확인

$ lsmod | grep drbd


3. DRBD 설정(primary , secondary 둘다 설정)

설정 파일은 /etc/drbd.d/ 에 넣으면 된다. 이전 버전의 경우는 /etc/drbd.conf 이다.

현재는 /etc/drbd.conf 에서 /etc/drbd.d/ 하위의 설정파일을 불러 오는 방법을 쓴다.


$ cat /etc/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";



# drbd 설정 파일 만들기

$ sudo vi /etc/drbd.d/{name}.res

resource "{resource_name}"

{

protocol {A | B | C};

disk {on-io-error detach;}

               syncer {

                        }


                 on {primary-hostname} {

                     device /dev/{drbd_logical_name};

                     disk /dev/{raw_device_name};

                     address {ip}:{port};

                     meta-disk internal;

                             }


                on {secondary-hostname} {

                     device /dev/{drbd_logical_name};

                     disk /dev/{raw_device_name};

                     address {ip}:{port};

                     meta-disk internal;

                             }

}


{}  인 곳에 내용을 넣어주면 된다.
- resource : 임의의 리소스 이름을 넣으면 된다.
- protocol : 동기화 방식인데, A는 비동기 방식으로 속도는 빠르나 데이터 손실의 위험이 있다. B는 메모리 까지만 동기화 방식으로 속도가 A보다는 느리지만 꽤빠른편이고 데이터 손실 위험은 A보다 적다. C는 동기 방식으로 primary 에서의 연산이 secondary에서도 완료되어야 작업이 완료되는 방식으로 속도는 제일 느리나 데이터 신뢰성을 높다. 데이터의 안정성은 C가 제일 좋다.
- on : 노드를 구분한다. hostname을 써주면 된다.
- device : drbd 논리 디바이스 이름이다. 해당 이름은 임의로 주면 drbd 동작시 해당 이름의 논리 디바이스를 만든다. 전통적으로는 drbd0, drbd1 이런 식으로 이름짓는다.
- disk : 실제 디바이스 이름을 넣는다. 
- address : ip와 port를 넣는다.
- meta-disk : drbd 가 동작하기 위한 메타데이터 저장 공간이며 디바이스를 따로 지정할 수 도 있지만 internal로 지정하면 disk 항복에 지정된 실제 디바이스의 공간중 128MB를 이용하여 메타 데이터용으로 쓴다.

예) $ sudo vi /etc/drbd.d/drbd_test.res


resource "test01"

{

protocol C;

disk {on-io-error detach;}

               syncer {

                        }


                 on drbd-1 {

                     device /dev/drbd0;

                     disk /dev/sdb;

                     address 192.168.3.11:7791;

                     meta-disk internal;

                             }


                 on drbd-2 {

                     device /dev/drbd0;

                     disk /dev/sdc;

                     address 192.168.3.12:7791;

                     meta-disk internal;

                                }

}


위 설정을 보면 drbd-1의 /dev/sdb 와 drbd-2의 /dev/sdc 간 mirroring 을 한다는 것이다.


4. DRBD 실행(primary , secondary 둘다 )

drbd-1$ sudo service drbd start

drbd-2$ sudo service drbd start


5. METADATA 생성(primary , secondary 둘다 )

* 주의 : Metadata 생성전 DRBD 볼륨으로 사용할 공간은 파일시스템이 생성되어 있지 않아야한다.

미리 파일시스템이 생성된 상태라면 아래와 같은 에러가 발생할 경우

Command 'drbdmeta 1 v08 /dev/xxx internalcreate-md' terminated with exit code 40


dd를 이용하여 MBR 영역을 없애주어야한다.

$ dd if=/dev/zero of=/dev/sdb bs=1M count=128


# Metadata 생성 명령

$ sudo drbdadm create-md all


위 명령을 수행하면 device 에 지정했던(/dev/drbd0) 디바이스가 생성된다.


6. DRBD primary 만들기(primary 에서 명령)

DRBD 가 처음실행되면 secondary/secondary로 동작한다. 이를 primary/secondary로 만들어 mirroring이 진행될 수 있게 해야한다.


primary 로 사용할 drbd-1 호스트에서 아래의 명령을 호출한다.


$ sudo drbdadm primary {resource_name}


# 위의 예제 설정에서는 resource_name 이 test01이었다.

예) $ sudo drbdadm primary test01

댓글목록

등록된 댓글이 없습니다.