DRBD+GFS [DRBD 에러수정]

============================================

+ CentOS5.0(2.6.18_8)

+ DRBD v8

+ GFS

1. DRBD 패키지를 다운 받는다.

  # wget http://mirror.secuidc.com/centos/5.0/extras/i386/RPMS/drbd-8.0.3-1.el5.centos.i386.rpm

  # wget http://mirror.secuidc.com/centos/5.0/extras/i386/RPMS/kmod-drbd-8.0.3-1.2.6.18_8.el5.i686.rpm

2. 디스크 파티션을 설정한다.

  >>Node1

  # fdisk /dev/sdb

    /dev/sdb1

  

  >>Node2

  # fdisk /dev/sdb

    /dev/sdb1

3. DRBD 환경파일을 설정한다.

  # vi /etc/hosts

    210.220.224.151 drbd1.example.com

    210.220.224.152 drbd2.example.com

  # vi /etc/drbd.conf

resource RSC {

  protocol C;

  startup {

    wfc-timeout         0;  ## Infinite!

    degr-wfc-timeout   60;  ## 2 minutes.

  }

  disk {

    on-io-error detach;

  }

  net {

     timeout           60;

     connect-int       10;

     ping-int          10;

     max-buffers     2048;

    # max-epoch-size  2048;

    allow-two-primaries;

  }

  syncer {

    rate   60M;

#   group   0;

    al-extents 257;

  }

  on  drbd1.example.com{

    device      /dev/drbd0;

    disk        /dev/sdb1;

    address     210.220.224.151:7789;

    meta-disk   internal;

  }

  on drbd2.example.com {

    device     /dev/drbd0;

    disk       /dev/sdb1;

    address    210.220.224.152:7789;

    meta-disk  internal;

  }

}

4. DRBD 구동 테스트

  >>Node1

  # modprobe drbd          

  

  # drbdadm -d adjust RSC

  # drbdadm create-md RSC

  # drbdadm adjust RSC

  

  >>Node2

  # modprobe drbd

  

  # drbdadm -d adjust RSC

  # drbdadm create-md RSC

  # drbdadm adjust RSC

  

5. 자원의 Primary/Primary 지정

  >>Node1

  # service drbd start

  # drbdsetup /dev/drbd0 primary -o

  

  >>Node2

  # service drbd start

  # drbdsetup /dev/drbd0 primary -o

  

  # watch -n 1 ‘cat /proc/drbd’

  version: 8.0.3 (api:86/proto:86)

  SVN Revision: 2881 build by buildsvn@c5-i386-build, 2007-05-13 08:22:43

   0: cs:SyncTarget st:Primary/Primary ds:Inconsistent/UpToDate C r—    

      ns:0 nr:1533376 dw:1533344 dr:0 al:0 bm:93 lo:2 pe:1353 ua:1 ap:0  

        [=======>…………] sync’ed: 38.4% (2474680/4008024)K

        finish: 0:04:08 speed: 9,900 (9,124) K/sec

        resync: used:4/31 hits:97091 misses:97 starving:0 dirty:0 changed:97

        act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0

6. 클러스터 및 GFS 설정

  # rpm -qa | grep gfs

    gfs2-utils-0.1.25-1.el5

    kmod-gfs-0.1.16-5.2.6.18_8.el5

    gfs-utils-0.1.11-1.el5  

  

  # vi /etc/init.d/cluster

  #!/bin/sh

  . /etc/init.d/functions

  case $1 in

        start)

                service cman start

                service gfs start

                service rgmanager start

                ;;

        stop)

                service rgmanager stop

                sleep 1

                service gfs stop

                service cman stop

                ;;

        *)

                echo $”Usage: $0 {start|stop}”

                exit 1

  esac

  exit 0

  

  

  # system-config-cluster

    – New cluster.conf

      – Add Node

      – Add Fence Device

      //위의 설정을 해준 이후에도 클러스터 구성이 안된것으로 나올 수 도 있다. 이때는 아래의 명령을 통해 확인한다.

      

  

  # service cluster start

    Starting cluster:    

       Loading modules… done

       Mounting configfs… done

       Starting ccsd… done

       Starting cman… done

       Starting daemons… done

       Starting fencing… done

                                                           [  OK  ]

    fenced: unrecognized service

    Starting Cluster Service Manager:    

  

  # cman_tool status      

    Version: 6.0.1

    Config Version: 3

    Cluster Name: new_cluster

    Cluster Id: 23732

    Cluster Member: Yes

    Cluster Generation: 8

    Membership state: Cluster-Member

    Nodes: 2

    Expected votes: 1

    Total votes: 2

    Quorum: 1  

    Active subsystems: 7

    Flags: 2node

    Ports Bound: 0 177  

    Node name: DRBD1

    Node ID: 1

    Multicast addresses: 239.192.92.17

    Node addresses: 210.220.224.151  

  

  # cman_tool nodes

    Node  Sts    Inc   Joined               Name

     1      M      4   2007-07-06 10:00:31  DRBD1

     2      M      8   2007-07-06 10:00:37  DRBD2  

  

  //위와 같은 정보가 출력되면 클러스터 구성이 정상적으로 이루어 진것이다.

  

7. DRBD 디바이스를 GFS 타입으로 포맷

  

  # gfs_mkfs -p lock_dlm -t new_cluster:GFS_NF -j 2 /dev/drbd0

    This will destroy any data on /dev/drbd0.

    It appears to contain a gfs filesystem.

    Are you sure you want to proceed? [y/n] y

    Device:                    /dev/drbd0

    Blocksize:                 4096

    Filesystem Size:           936360

    Journals:                  2

    Resource Groups:           16

    Locking Protocol:          lock_dlm

    Lock Table:                new_cluster:GFS_NF

    Syncing…

    All Done

  

  # mkdir /GFS

  # mount -t gfs /dev/drbd0 /GFS

  # df -h

8. 테스트

    >>>DRBD

    8.1 한쪽 노드가 비정상적으로 재부팅 되는 경우 정상적으로 복구 되는가!?          OK.

    8.2 양쪽 노드가 비정상적으로 재부팅 되는 경우 정상적으로 복구 되는가!?          OK.

    

    >>DRBD+GFS

    8.3 한쪽 노드가 비정상적으로 재부팅 되는 경우 정상적으로 복구 되는가!?          No.

    ———————————————————————————–

      drbd0: Split-Brain detected, dropping connection…

      …                                        //위와 같은 메세지가 나오면서 정상적으로 DRBD Sync가 이루어 지지 않는다.

      

      drbd0: Split-Brain detected, manually solved. Sync from peer node

    ———————————————————————————–

    [해결]

    

    >>>재부팅된 시스템에서

      # drbdadm — –discard-my-data connect all

    

    >>>정상적인 시스템에서..

      # drbdadm connect all

     >>> 2개이상의 리소스가 있는곳에서는

  –> 리부팅된 시스템에서

    # drbdadm — –discard-my-data connect RSC1 (리소스이름)

   –> 정상적인 시스템에서

    # drbdadm connect RSC1  (리소스이름)

    

    8.4 양쪽 노드가 비정상적으로 재부팅 되는 경우 정상적으로 복구 되는가!?          No.

      각 데몬을 자동으로 올라오도록 셋팅한 경우 ‘8.3’번과 같은 현상이 양쪽 모두에서 일어난다.

      해결 방법은 동일하다.

    

    8.5 시스템을 정상적으로 종료후 수동으로 올리는 방법.

      >>>Node1

        # chkconfig drbd off

        # chkconfig gfs off

        # chkconfig cluster off       //모든 자동 스크립트를 비활성화 시킨다.

        

        # umount /GFS

        # /etc/init.d/cluster stop

        # service drbd stop

        

        # reboot                     //재부팅

        

        # service drbd start

        # drbdsetup /dev/drbd0 primary -o

    

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.