[클러스터] GFS+GNBD 설치 관련 문서

DataCore:

RedHat Cluster FAQ

http://sourceware.org/cluster/gnbd/gnbd_usage.txt

http://sources.redhat.com/cluster/doc/usage.txt

https://open.datacore.ch/DCwiki.open/Wiki.jsp?page=GFS

GFS.GNBD.Usage

GFS.usage

RedHat

1. Installation of Required Software Packages

This does the trick on Scientific Linux v4.3 — in no particular order:

    apt-get install cman cman-kernel-smp

    apt-get install gulm ccs

    apt-get install gnbd gnbd-kernel-smp

    apt-get install dlm dlm-kernel-smp

    apt-get install magma-plugins

    apt-get install fence

    apt-get install lvm2-cluster

    apt-get install GFS-kernel-smp GFS

Versions of cluster software must be the same on all nodes in cluster (some versions are not compatible resulting in communication problems).

2. Post Installation

The packages install init s-links which cause Big Trouble sometimes, so remove:

    chkconfig –level 35 ccsd off

    chkconfig –level 35 cman off

    chkconfig –level 35 lock_gulmd off

    chkconfig –level 35 fenced off

    chkconfig –level 35 clvmd off

    chkconfig –level 35 gfs off

3. Initialising the Cluster

Load kernel modules:

    modprobe cman

    modprobe dlm

    modprobe lock_dlm

    modprobe gnbd

    modprobe gfs

Create /etc/cluster/cluster.conf on one node and copy to all nodes. Use an appropriate cluster.conf — manual fencing is a bad idea except with only two nodes.

As nearly simultanously as possible, enter the following commands on all nodes:

        ccsd

Test if ccsd is working properly:

        # second may be required

        #

        # — if the first fails, try the second — <clustername> is given

        #    in cluster.conf :

        #

        ccs_test connect

        ccs_test connect force block <clustername>

            #

            # …the second is required if the cluster is not yet quorate (see

            #    man page for ccs_test)…

Also:

        ccs_test get node ‘//cluster/@name’

On all nodes, simultaneously:

        /sbin/cman_tool join

Ensure all nodes have joined the cluster before the next step (fencing):

        cat /proc/cluster/nodes

        Node  Votes Exp Sts  Name      # …be patient, this might take a while

           1    1    3   M   R5-14     #    to appear…

           2    1    3   M   R5-13    

           3    1    3   M   R5-15

and

        cat /proc/cluster/status

        Protocol version: 5.0.1

        Config version: 1

        Cluster name: clusterR5-13

        Cluster ID: 36497

        Cluster Member: Yes

        Membership state: Cluster-Member

        Nodes: 3

        Expected_votes: 3

        Total_votes: 3

        Quorum: 3  

        Active subsystems: 9

        Node name: R5-13

        Node ID: 2

        Node addresses: 10.10.1.13

Ensure all nodes have joined (see above) before this step — fencing. Simultaneously on all nodes:

        /sbin/fence_tool join

4. Starting Cluster Services

  /sbin/clvmd

    # on both

  vgchange -aly

    # on both

  cat /proc/cluster/services

5. cluster.conf Examples

Contents

Two-node, manual fencing;

three-node, GNBD-fencing.

5.1. Two-Node Cluster with Manual Fencing

/etc/cluster/cluster.conf:

  <?xml version=”1.0″?>

  <cluster name=”cluster1″ config_version=”1″>

    <cman two_node=”1″ expected_votes=”1″>

    </cman>

    <clusternodes>

      <clusternode name=”login” votes=”1″>

        <fence>

          <method name=”single”>

            <device name=”human” ipaddr=”10.10.1.250″/>

          </method>

        </fence>

      </clusternode>

      <clusternode name=”R5-13″ votes=”1″>

        <fence>

          <method name=”single”>

            <device name=”human” ipaddr=”10.10.1.13″/>

          </method>

        </fence>

      </clusternode>

    </clusternodes>

    <fence_devices>

      <device name=”human” agent=”fence_manual”/>

    </fence_devices>

  </cluster>

5.2. Three-Node Cluster with fence_gnbd

  <?xml version=”1.0″?>

  <cluster name=”clusterR5-13″ config_version=”1″>

    <cman></cman>

    <clusternodes>

       <clusternode name=”R5-13″>

        <fence>

          <method name=”single”>

            <device name=”gnbd” nodename=”R5-13″/>

          </method>

        </fence>

      </clusternode>

      <clusternode name=”R5-14″>

        <fence>

          <method name=”single”>

            <device name=”gnbd” nodename=”R5-14″/>

          </method>

        </fence>

      </clusternode>

      <clusternode name=”R5-15″>

        <fence>

          <method name=”single”>

            <device name=”gnbd” nodename=”R5-15″/>

          </method>

        </fence>

      </clusternode>

    </clusternodes>

    <fence_devices>

      <device name=”gnbd” agent=”fence_gnbd” servers=”R5-14 R5-15″/>

    </fence_devices>

  </cluster>

6. Adding a Node to the Cluster

As described in the RedHat Cluster FAQ:

a third node cannot be added to a two-node cluster as the latter is a special case (see the cluster.conf examples, above);

adding a subsequent node to a cluster of three-or-more is easy.

To add a node to a cluster of three-or-more:

Start the cluster software on the addition node (load required kernel modules;

7. GNBD and GFS

Here:

    exporting nodes:   R5-14, R5-15

    importing nodes:   R5-13

7.1. GNBD

On each exporting node:

  R5-14> /sbin/gnbd_serv -v

  R5-14> /sbin/gnbd_export -v -e R5-14-sdb1 -d /dev/sdb1

             #

             # …for example:  the “-e” label

  R5-15> /sbin/gnbd_serv -v

  R5-15> /sbin/gnbd_export -v -e R5-15-sdb1 -d /dev/sdb1

  R5-14> /sbin/gnbd_export -v -l

  R5-15> /sbin/gnbd_export -v -l

On importing node:

  R5-13> gnbd_import -v -i R5-14

  R5-13> gnbd_import -v -i R5-15

  R5-13> gnbd -v -l

      Device name : R5-14-sdb1

      ———————-

      Minor # : 0

      sysfs name : /block/gnbd0

      Server : R5-14

      .

      Device name : R5-15-sdb1

      ———————-

      Minor # : 1

      sysfs name : /block/gnbd1

      Server : R5-15

      .

  ls -l /dev/gnbd

      total 0

      brw-r–r–  1 root root 251, 0 Feb 16 14:43 R5-14-sdb1

      brw-r–r–  1 root root 251, 1 Feb 16 14:44 R5-15-sdb1

7.2. GNBD and EXT2/3

Use remote device as local on importing node:

  R5-13> mke2fs /dev/gnbd/R5-14-sdb1

  R5-13> mke2fs /dev/gnbd/R5-15-sdb1

  R5-13> mount /dev/gnbd/R5-14-sdb1 /mnt/gfs-R5-14-sdb1

  R5-13> mount /dev/gnbd/R5-15-sdb1 /mnt/gfs-R5-15-sdb1

      #

      # …N.B. One can then, on the exporting node, mount /dev/sdb1

      #         as ext2 — but the two nodes won’t sync, so this

      #         spells disaster…

      #

7.3. GNFS and GFS

    #

    # — Either “mkfs” locally on the exporters…

    #

    R5-14> gfs_mkfs -p lock_dlm -t clusterR5-13:R5-14 -j 3 /dev/sdb1

    R5-15> gfs_mkfs -p lock_dlm -t clusterR5-13:R5-15 -j 3 /dev/sdb1

    #

    # …or “mkfs” on the importer…

    #

    R5-13> gfs_mkfs -p lock_dlm -t clusterR5-13:R5-14-sdb1 -j 3 /dev/gnbd/R5-14-sdb1

    R5-13> gfs_mkfs -p lock_dlm -t clusterR5-13:R5-15-sdb1 -j 3 /dev/gnbd/R5-15-sdb1

    #

    # …then mount each file-system on both exporter and importer…

    #

    R5-14> mount -t gfs /dev/sdb1 /mnt/sdb1

    R5-15> mount -t gfs /dev/sdb1 /mnt/sdb1

    #

    R5-13> mount -t gfs /dev/gnbd/R5-14-sdb1 /mnt/gfs-R5-14-sdb1

    R5-13> mount -t gfs /dev/gnbd/R5-15-sdb1 /mnt/gfs-R5-15-sdb1

        #

        # …creating and deleting files, see that local and remote

        #    mounted filesystems are synced, hooray…

        #

8. Trouble and Troubleshooting

This is a very good place to look:

sourceware.org/cluster/faq.

Look in the system-logs for messages re. what the cluster-daemons are up to:

    tail -f /var/log/messages    # …or kernel or daemon, or whatever,

                                 #    looking for “kernel: CMAN:”- and

                                 #    ccsd-related messages…

                                 #    

8.1. Trouble 1

A cluster of R5-13, R5-14 and R5-15 worked fine; R5-16 would not add to this cluster. On R5-13:

    Feb 16 11:45:46 R5-13 kernel: CMAN: removing node R5-16 from the cluster : No response to messages

and on R5-16

    Feb 16 11:46:14 R5-16 kernel: CMAN: No functional network interfaces, leaving cluster

The FAQ (above) suggested “…inconsistent versions of cman software…” and sure enough the version number was not the same. Patching the four nodes to the same level solved the problem.

서진우

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

You may also like...

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