Tips

2012.07.02

クイックレシピ: CentOS5.6 + OCFS2 + DRBD

共有クラスタ用ファイルシステムと
マルチマスタレプリケーション

今回は、Oracle社開発の共有クラスタ用ファイルシステムOCFS2とレプリケーションソフトのDRBDを合わせものです。

[styled_images width=”483px” height=”309px”] [image]https://techpjin.sakura.ne.jp/techpjin_new/wp-content/uploads/2012/07/図面2.jpg[/image] [/styled_images] [clearboth]

DRBDの複製機能を使い、2台の端末間でハードディスクをマルチマスタレプリケーション構成にします。
マルチマスタレプリケーションとは、2台の端末間でデータをリアルタイム共有しつつ、どちらの端末からも編集できるデータ領域です。

2台の端末からすると1台のディスクを共有している扱いになるので、OCFS2ファイスシステムで管理する形式にします。
OCFS2とは、一般的なファイルシステムでは端末ベースで行なっているアクセス管理や位置情報を
ネットワーク上で複数OS間で行えるようにしたものです。
DRBDのマルチマスタ構成機能は試験扱い機能となっており、
一般のファイルシステムでフォーマットするとアクセス管理や位置情報が2台のディスク間で狂ってしまいディスクエラーを起こします。

共有クラスタと比較して上記の構成の場合、片系が故障してもデータ提供は停止しません。
共有クラスタの弱点は共有クラスタ自身が故障するとデータ提供が停止します。

【環境準備】

※修正を意識するべき値はオレンジ色

両端末ともに:
2.6.18-308.8.1.el5xen
予めハードディスクにはパーティション作成:
fdisk /dev/sdb

両端末でOCFS2用アプリケーションを3つ入手:

  • wget http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL5/x86_64/1.4.7-1/2.6.18-308.8.1.el5/ocfs2-2.6.18-308.8.1.el5xen-1.4.7-1.el5.x86_64.rpm
  • wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/x86_64/1.6.3-2/ocfs2-tools-1.6.3-2.el5.x86_64.rpm
  • wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/x86_64/1.6.3-2/ocfs2console-1.6.3-2.el5.x86_64.rpm

OCFS2をインストール:

  • rpm -ivh ocfs2-tools-1.6.3-2.el5.x86_64.rpm
  • rpm -ivh ocfs2console-1.6.3-2.el5.x86_64.rpm
  • rpm -ivh ocfs2-2.6.18-308.8.1.el5xen-1.4.7-1.el5.x86_64.rpm

DRBDのインストール:

  • yum -y install drbd83.x86_64 kmod-drbd83-xen.x86_64

設定

OCFS2設定1、以下ファイルで構文変更(両端末で実施):

    vi /etc/sysconfig/o2cb
    ====以下の値をtrueに変更===
    O2CB_ENABLED=true

OCFS2設定2、以下ファイル作成(両端末で実施):

    vi /etc/ocfs2/cluster.conf
    ====以下を記載===
    node:
    ip_port = 7777
    ip_address = 192.168.100.28 ##1台目端末IP
    number = 0
    name = sierra.local ##1台目端末hostname
    cluster = ocfs2

    node:
    ip_port = 7777
    ip_address = 192.168.100.29 ##2台目端末IP
    number = 1
    name = tango.local ##2台目端末hostname
    cluster = ocfs2

    cluster:
    node_count = 2
    name = ocfs2

DRBD設定、以下ファイル生成(両端末で実施)

    vi /etc/drbd.conf
    ===以下記入===
    global {
    usage-count yes;
    }

    common {
    syncer {
    rate 100M;
    al-extents 257;
    }
    }

    resource r0 {

    protocol C;

    startup {
    become-primary-on both; ### For Primary/Primary ###
    degr-wfc-timeout 60;
    wfc-timeout 30;
    }

    disk {
    on-io-error detach;
    }

    net {
    allow-two-primaries; ### For Primary/Primary ###
    cram-hmac-alg sha1;
    shared-secret “FooFunFactory”;
    after-sb-0pri discard-zero-changes;
    after-sb-1pri violently-as0p;
    after-sb-2pri violently-as0p;
    }
    ##端末名とIP指定
    on sierra.local {
    device /dev/drbd0;
    disk /dev/sdb1;
    address 192.168.100.28:7788;
    meta-disk internal;
    }
    ##端末名とIP指定
    on tango.local {
    device /dev/drbd0;
    disk /dev/sdb1;
    address 192.168.100.29:7788;
    meta-disk internal;
    }
    }

接続・動作作業

DRBD接続環境整理、ディスクバイナリ掃除(両端末で実施):

    dd if=/dev/zero of=/dev/sdb1 bs=1M count=1024

DRBDの仮想ディスクを接続(両端末で実施):

    drbdadm create-md r0
    /etc/init.d/drbd stop
    /etc/init.d/drbd start

DRBD動作開始(両端末で実施):

    drbdsetup /dev/drbd0 primary -o
    動作確認:
    cat /proc/drbd
    ===以下の記載になるまで待機、初期はsync表記で同期動作を実施中===
    0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r—–

DRBDが生成した仮想ディスクをさらにOCFS2で管理:

    !!!OCFS2にフォーマット、以下のコマンドはどちらか1台でのみ実施すること!!!
    mkfs.ocfs2 /dev/drbd0
    OCFS2管理を開始(両端末で実施):
    /etc/init.d/o2cb start
    ディレクトリをマウントする(両端末で実施):
    mount -t ocfs2 /dev/drbd0 /repdata

以上です、
ディレクトリ上でデータ作成・編集・削除が両端末上で反映していれば成功です。
片系がダウンしたり、ネットワークダウン時に発生するスプリットブレイン現象には要注意:
[styled_link link=”http://www.drbd.jp/users-guide/s-resolve-split-brain.html” variation=”red”]http://www.drbd.jp/users-guide/s-resolve-split-brain.html[/styled_link]

関連サイト

DRBD本家:http://www.drbd.jp/
OCFS2本家:https://oss.oracle.com/projects/ocfs2/

Linux認定資格 LPICを取るなら・・

Linux資格 「LPIC Lv1」徹底解説 連載目次

Recent News

Recent Tips

Tag Search