nfsを介して複数のサーバーに配布される信頼できるストレージの作成

CGPに基づいて呼び出しを処理するためのクラスターを作成する場合、複数のサーバーからマウントされた中断のないストレージを構成する必要がありました。



Ubuntu Server 10.10は、サーバーのディストリビューションとして採用されました。 ディスク領域は2つの論理ドライブに分割されました(システムをインストールするためのsda1と、共有ディスク自体のためのsda2)。



基本システムをインストールした後、次のパッケージをさらにインストールする必要があります:heartbeat、pacemaker、drbd8-utils、xfs、xfsprogs、nfs-kernel-server。



サーバーのクラスタリングには、ハートビートとペースメーカーが必要です。 ストレージはdrbdに基づいており、xfsはファイルシステムとして使用されていました。 サーバーへのファイルシステムの配布は、nfsを使用して行われます。





1.システムのセットアップ



ノードの場合、名前u1およびu2が選択されました。 便宜上、これらの名前は/ etc / hostsですぐに記述されました。

  10.0.0.84 u1
 10.0.0.115 u2
 10.0.0.120 u0


u0は、他のサーバーからファイルシステムをマウントするために使用可能なストレージのアドレスです。



2. drbdの構成



ストレージ構成ファイルは/etc/drbd.d/r0.resにあります。

リソースr0 {
    プロトコルC;
     syncer {
        レート4M;
     }
    スタートアップ{
         wfc-timeout 15;
         degr-wfc-timeout 60;
     }
    ネット{
         after-sb-0pri discard-zero-changes;
         after-sb-1pri discard-secondary;
         after-sb-2pri切断;
         cram-hmac-alg sha1;
        共有秘密somesecretword;
     }
     u1で{
        デバイス/ dev / drbd0;
        ディスク/ dev / sda2;
        アドレス10.0.0.84:7788;
        メタディスク内部。
     }
     u2で{
        デバイス/ dev / drbd0;
        ディスク/ dev / sda2;
        アドレス10.0.0.115:7788;
        メタディスク内部。
     }
 }


ファイルは両方のノードで同じであるため、1つを作成してから2つ目にコピーできます。



ストレージは主にシステム構成を保存するために使用されるため、スプリットブレインの処理にこのような残酷な設定が選択されました。 つまり、最近の変更の損失は、スリットブレインによるダウンタイム中のコールの損失ほど重大ではありません。



構成ファイルを作成したら、クラスターの両方のサーバーでディスク自体を作成する必要があります。

 dd if = / dev / zero of = / dev / sda2 bs = 64M
 drbdadm create-md r0


その後、drbdを起動できます。 両方のサーバーでdrbdデーモンを1分以内に実行することが重要です(他のクラスターメンバーとの通信のタイムアウト)。

 /etc/init.d/drbd start


/ proc / drbdでこの後、リポジトリの状態が次のようになります。

 0:cs:接続済みro:セカンダリ/セカンダリds:一貫性のない/一貫性のないC r ---- 


つまり、2つのノードはセカンダリモードにありますが、ディスクは一貫性がありません。 この状況から抜け出すには、クラスターノードの1つをメインノードとして強制的に宣言する必要があります;これを行うには、次のコマンドを実行します。

 drbdadm---overwrite-data-of-peerプライマリr0


その後、drbdはセカンダリディスクの状態の更新を開始します。

 0:cs:SyncSource ro:プライマリ/セカンダリds:UpToDate /不整合C r ----
 ns:241984 nr:0 dw:0 dr:242184 al:0 bm:14 lo:510 pe:179 ua:510 ap:0 ep:1 wo:b oos:782664
         [===> ................]同期:23.6%(782664/1023932)K
        終了:0:04:04速度:3,160(3,172)K /秒


同期が完了したら、drbdがプライマリ状態にあるサーバー上にファイルシステムを作成できます。

 mkfs.xfs / dev / drbd0


次のステップでは、標準のデーモン起動メカニズムが干渉します。 したがって、両方のサーバーでコマンドを実行する必要があります。

 update-rc.d -f drbd remove


3.ハートビートの設定



設定は/etc/heartbeat/ha.cfファイルに作成されます。 両方のノードで同じであるため、1つを作成してから2つ目にコピーできます。

 logfacilityデーモン
キープアライブ2
デッドタイム15
警告5
 initdead 120
 udpport 694
 ucast eth0 10.0.0.115
 ucast eth0 10.0.0.84
 auto_failback on
ノードu1
ノードu2
 use_logdはい
 crm respawn


2番目のファイルは、/ etc / heartbeat / authkeysの認証に使用されます。

 auth 1
 1 sha1 somesecretword


誤ったファイル属性に関するハートビートからの警告を待たずに、事前に変更することをお勧めします。

 chmod 600 / etc / heartbeat / authkeys


その後、ハートビートを開始できます。

 /etc/init.d/heartbeat start


しばらくすると、crm_modコマンドは2つのノードが相互に接続されていることを示すはずです:

 =============
最終更新日:金2月10日09:33:04 2012
スタック:ハートビート
現在のDC:u1(86b204d8-ee3e-47c7-ba0e-1dcbd40a20da)-クォーラム付きパーティション
バージョン:1.0.9-unknown
 2つのノードが構成され、2つの予想投票
 2リソースが構成されました。
 =============

オンライン:[u2 u1]


次に、crm configure editコマンドを実行し、クラスターの構成を入力します。

ノード$ id = "86b204d8-ee3e-47c7-ba0e-1dcbd40a20da" u1
ノード$ id = "c6e3c21f-da3e-4031-9f28-a7e33425a817" u2
プリミティブdrbd0 ocf:linbit:drbd \
         params drbd_resource = "r0" \
         op start interval = "0" timeout = "240" \
         op stop interval = "0" timeout = "100" \
         op monitor interval = "20" role = "Slave" timeout = "20" depth = "0" \
         op monitor interval = "10" role = "Master" timeout = "20" depth = "0"
プリミティブfs0 ocf:ハートビート:ファイルシステム\
         paramsディレクトリ= "/共有" fstype = "xfs" device = "/ dev / drbd / by-res / r0" options = "noatime、nodiratime、nobarrier、logbufs = 8" \
         op start interval = "0" timeout = "60" \
         op停止間隔= "0"タイムアウト= "60" \
         op通知間隔= "0"タイムアウト= "60" \
         opモニター間隔= "20"タイムアウト= "40"深さ= "0" \
         meta target-role = "開始済み"
プリミティブip0 ocf:ハートビート:ipaddr2 \
         params ip = "10.0.0.120" nic = "eth0:0" \
         opモニター間隔= "5s" \
         meta target-role = "開始済み"
プリミティブnfs0 ocf:itl:exportfs \
         params directory = "/ shared" clientspec = "10.0.0.0/255.255.255.0" options = "rw、no_root_squash、sync、no_wdelay" fsid = "1" \
         op start interval = "0" timeout = "40" \
         op停止間隔= "0"タイムアウト= "60" \
         opモニター間隔= "30"タイムアウト= "55"深さ= "0" OCF_CHECK_LEVEL = "10" \
         meta target-role = "開始済み"
グループha_nfs fs0 nfs0 ip0 \
         meta target-role = "開始済み"
 ms ms_drbd0 drbd0 \
         meta master-max = "1" master-node-max = "1" clone-max = "2" clone-node-max = "1" notify = "true"
コロケーションc_nfs inf:nfs0 ms_drbd0:マスター
 order o_nfs inf:ms_drbd0:プロモートha_nfs:開始
プロパティ$ id = "cib-bootstrap-options" \
         dc-version = "1.0.9-unknown" \
         cluster-infrastructure = "ハートビート" \
         stonith-enabled = "false" \
         expected-quorum-votes = "2" \
         no-quorum-policy = "ignore" \
        対称クラスター= "true" \
         last-lrm-refresh = "1328625786"
 rsc_defaults $ id = "rsc_defaults-options" \
         resource-stickiness = "10000"


exportfs設定は、共有ファイルシステム/共有がマウントされるディレクトリを、nfsによって10.0.0.0ネットワーク上のすべてのサーバーにマウントできることを示します。



しばらくすると、クラスターモニターにリソースの状態が表示されます。

 =============
最終更新日:金2月10日09:33:04 2012
スタック:ハートビート
現在のDC:u1(86b204d8-ee3e-47c7-ba0e-1dcbd40a20da)-クォーラム付きパーティション
バージョン:1.0.9-unknown
 2つのノードが構成され、2つの予想投票
 2リソースが構成されました。
 =============

オンライン:[u2 u1]

 リソースグループ:ha_nfs
      fs0(ocf :: heartbeat:Filesystem):u1を開始しました
      nfs0(ocf :: itl:exportfs):u1を開始しました
      ip0(ocf :: heartbeat:ipaddr2):開始u1
 マスター/スレーブセット:ms_drbd0
     マスター:[u1]
     奴隷:[u2]


4.他のサーバーから共有ファイルシステムをマウントする



これには/ etc / fstabを使用できます。

 u0:/ shared / var / CommuniGate / SharedDomains nfs bg、intr 0 0


5.追加のリンク



  1. 構成の作成時に、説明はhttp://library.linode.com/linux-ha/ip-failover-heartbeat-pacemaker-drbd-mysql-ubuntu-10.04から取得されました
  2. スプリットブレインdrbdの治療手順http://www.alsigned.ru/?p=490
  3. エージェントはUbuntu 10.10 exportfsに含まれていないため、個別にダウンロードして( https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/exportfs)、/ usr / lib / ocf / resource.d /にインストールする必要がありますハートビート/
  4. この構成には重要な部分はありません-STONITH( http://linux-ha.org/wiki/STONITH )、バックアップチャネルがないため
  5. 共有アドレスを使用するメカニズムの説明は、 http://www.ultramonkey.org/3/ip_address_takeover.htmlにあります。



All Articles