리눅스

Total 331
Today 0
profile_image
슈퍼아이피
18-04-12 17:11 0개 8회
일반문서
DRBD (블럭 디바이스 HA) 운영

DRBD 운영

 


 


1. 파일 시스템으로 포맷하고 mount 하기

primary 노드에서 디바이스를 ext3 로 포맷팅하고 mount

* 주의 : /dev/sdb 를 포맷팅하는 것이 아니라 이를 대신 처리해주는 drbd 논리 디바이스인 /dev/drbd0에 수행해야한다.


$ sudo mkfs.ext3 /dev/drbd0

$ sudo mount /dev/drbd0 /mnt


* 주의 : secondary 노드의 블록 디바이스는 mirroring 만 되는 것이다. mount 되지 않는다. secondary 노드의 블록 디바이스를 mount 하기 위해서는 primary를 secondary 로 만들고 secondary 를 primary 로 만들어야한다.


2. mirroring 확인

primary 노드에서 마운트 진행하였고 여기에 파일을 하나 만든다.

drbd-1$ sudo touch /mnt/test


secondary 에 mirroring 되는지 확인하기 위해 secondary를 primary로 만들 것이다.

primary 노드는 하나밖에 지정못하므로 primary 를 우선 secondary 로 만들어야한다. secondary 로 만들기 전에 우선 umount 해야한다.


# primary를 secondary 만들기

drbd-1$ sudo umount /mnt

drbd-1$ sudo drbdadm secondary test01 #test01은 resource_name이다.


# secondary를 primary 만들기

drbd-2$ sudo drbdadm primary test01


# secondary 노드 였던 drbd-2에서 마운트하여 확인하기

drbd-2$ sudo mount /dev/drbd0 /mnt

drbd-2$ ls -al /mnt

 

확인해보면 drbd-1에서 생성했던 test 란 파일이 보일 것이다.



3. secondary를 primary 만들기

secondary를 primary 로 만드는 경우는 primary 노드가 죽었을 때 이다.

primary 노드가 죽었다면 secondary를 primary 로 만들어 서비스를 지속시켜야한다.


secondary 노드에서 아래의 명령을 통해 확인하면 primary 노드의 연결이 끊긴것을 확인할 수 있다.


drbd-2$ cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

srcversion: 88927CDF07AEA4F7F2580B2 

 0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----

    ns:0 nr:43 dw:43 dr:1456 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0


drbd-2$ sudo service drbd status

drbd driver loaded OK; device status:

version: 8.4.3 (api:1/proto:86-101)

srcversion: 88927CDF07AEA4F7F2580B2 

m:res  cs            ro                 ds                 p  mounted  fstype

0:r0   WFConnection  Secondary/Unknown  UpToDate/DUnknown  C


secondary 를 primary 로 만든다.


drbd-2 $ sudo drbdadm primary {resource_name}


예) resource_name 이 test01일때

drbd-2 $ sudo drbdadm primary test01


secondary 를 primary로 만들었는지 확인

drbd-2$ cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

srcversion: 88927CDF07AEA4F7F2580B2 

 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----

    ns:0 nr:43 dw:43 dr:2912 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0


drbd-2$ sudo service drbd status

drbd driver loaded OK; device status:

version: 8.4.3 (api:1/proto:86-101)

srcversion: 88927CDF07AEA4F7F2580B2 

m:res  cs            ro               ds                 p  mounted  fstype

0:r0   WFConnection  Primary/Unknown  UpToDate/DUnknown  C


4. secondary 노드를 교체

 위의 상황처럼 primary 가 죽거나 secondary 가 죽거나 하여 mirroring 할 경로를 바꾸어야할 때


예를 들어 secondary 였던 drbd-2 의 장애로 drbd-3 에 mirroring 을 해야할 경우이다.


우선 primary 의 설정파일을 drbd-3로 바꾼다.

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


예)

drbd-1 $ sudo vi /etc/drbd.d/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-3 {

                     device /dev/drbd0;

                     disk /dev/sdb;

                     address 192.168.3.13:7791;

                     meta-disk internal;

                                }

}


그리고 secondary 로 사용할 drbd-3 에도 동일하게 설정하고 drbd를 실행시킨다. 실행시키면 primary 의 연결을 대기한다.


drbd-3 $ sudo service drbd start


그리고 drbd-1 에서 drbd-3 로 연결하는 명령을 수행한다.


drbd-1 $ sudo drbdadm connect test01   # test01은 .res 파일 내의 resource_name 이다.


댓글목록

등록된 댓글이 없습니다.