lost and found ( for me ? )

Ubuntu 10.04 TLS : DRBD

参考URL
https://wiki.ubuntu.com/ClusterStack/LucidTesting#Test cases for cluster components in Ubuntu 10.04

[ 内容 ]

DRBDを使用し、2台のホスト間でデータミラーリングができるようにセットアップする。
DRDB +クラスタの組み合わせで使用するのが一般的で、DRDBのみだと、実用性があまりないが、DRDBを使用すると、どのようなことができるか確認する。

[ マシン ]

2台マシンを用意
ubuntu-1 , ubuntu-2 (Ubuntu 10.04.1 LTS , 2.6.32-25-generic-pae )

[ 手順 ]

・DRBDインストール前の準備
・DRBDをインストール
・DRBD用のパーティションの準備
・DRBDのコンフィグのセットアップ
・メタデータの作成
・DRBDを起動
・初期設定
・ファイルシステムの作成
・データがミラーリングされるかチェック

[ 設定例 ]

・DRBDインストール前の準備

・apt で DRBD をインストールできるように、sources.list に1行目を追加

root@ubuntu-1:~# cat /etc/apt/sources.list
deb http://jp.archive.ubuntu.com/ubuntu/ lucid main restricted universe
deb http://jp.archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe
deb http://security.ubuntu.com/ubuntu lucid-security main restricted universe
deb http://ppa.launchpad.net/ubuntu-ha/lucid-cluster/ubuntu lucid main <-追加

エラーが。

root@ubuntu-1:~# apt-get update
W: GPG error: http://ppa.launchpad.net lucid Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 8F63FC3CB64F0AFA

http://www.rebelzero.com/fixes/apt-get-gpg-error-public-key-not-available/88

root@ubuntu-1:~# apt-key list
/etc/apt/trusted.gpg
--------------------
pub   1024D/437D05B5 2004-09-12
uid                  Ubuntu Archive Automatic Signing Key
sub   2048g/79164387 2004-09-12

pub   1024D/FBB75451 2004-12-30
uid                  Ubuntu CD Image Automatic Signing Key

公開鍵をインポート

3CB64F0AFAu-1:~# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8F63FC3CB64F0AFA
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 8F63FC3CB64F0AFA
gpg: requesting key B64F0AFA from hkp server keyserver.ubuntu.com
gpg: key B64F0AFA: public key "Launchpad ubuntu-ha" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
root@ubuntu-1:~#

root@ubuntu-1:~# apt-key list
/etc/apt/trusted.gpg
--------------------
pub   1024D/437D05B5 2004-09-12
uid                  Ubuntu Archive Automatic Signing Key
sub   2048g/79164387 2004-09-12

pub   1024D/FBB75451 2004-12-30
uid                  Ubuntu CD Image Automatic Signing Key

pub   1024R/B64F0AFA 2009-06-10
uid                  Launchpad ubuntu-ha

・DRBDをインストール

root@ubuntu-1:~# apt-get install linux-headers-server psmisc
root@ubuntu-1:~# apt-get install drbd8-utils

root@ubuntu-2:~# apt-get install linux-headers-server psmisc
root@ubuntu-2:~# apt-get install drbd8-utils

・DRBD用のパーティションの準備

メタデータ用とデータ用のパーティションは同じにする ( わけることも可能 )
ファイルシステムを作成する必要はない。

root@ubuntu-1:~# fdisk /dev/vda

メタデータ用 + データ用 : /dev/vda1  

root@ubuntu-1:~# fdisk -l | grep vda
Disk /dev/vda: 314 MB, 314572800 bytes
/dev/vda1               1         609      306904+  83  Linux

他方(ubuntu-2)も同じ。

root@ubuntu-2:~# fdisk -l | grep vda
Disk /dev/vda: 314 MB, 314572800 bytes
/dev/vda1               1         609      306904+  83  Linux

・DRBDのコンフィグのセットアップ

コンフィグは /etc/drbd.conf , /etc/drbd.d/global_common.conf , /etc/drbd.d/*.res

*.res  に DRBDで使用するコンフィグを記述する

両ホスト ( ubuntu-1 , ubuntu-2 ) ともに同じコンフィグ
ホスト名 ( on ubuntu-1 or ubuntu-2 ) は uname -n で表示されるホスト名を記述する。

root@ubuntu-1:~# cat /etc/drbd.d/disk0.res
resource disk0 {
       protocol C;
       net {
               cram-hmac-alg sha1;
               shared-secret "hello";
       }
       on ubuntu-1 {
               device /dev/drbd0;
               disk    /dev/vda1;
               address 192.168.122.136:7788;
               meta-disk internal;
       }

       on ubuntu-2 {
               device /dev/drbd0;
               disk    /dev/vda1;
               address 192.168.122.254:7788;
               meta-disk internal;
       }

・メタデータの作成

両ホストで実行。disk0 は resource で設定した名前 ( resource disk0 ) を指定。

root@ubuntu-1:~# drbdadm create-md disk0

・DRBDを起動

root@ubuntu-1:~# /etc/init.d/drbd start
* Starting DRBD resources
[ d(disk0) [11746.763543] block drbd0: meta data flush failed with status -95, disabling md-flushes
n(disk0) ]..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- In case this node was already a degraded cluster before the
  reboot the timeout is 0 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot the timeout will
  expire after 0 seconds. [wfc-timeout]
  (These values are for resource 'disk0'; 0 sec -> wait forever)
To abort waiting enter 'yes' [  15]:yes

  ...done.
root@ubuntu-1:~#

ちなみにdrdbモジュールを使用(ロード)している。

root@ubuntu-1:~# lsmod | grep drbd
drbd                  256663  3

ステータス確認 ( ubuntu-2 側の drdb を起動する前 )

root@ubuntu-1:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-1, 2010-10-12 10:44:31
m:res    cs            ro                 ds                     p  mounted  fstype
0:disk0  WFConnection  Secondary/Unknown  Inconsistent/DUnknown  C

ubuntu-2 の drdb を起動

root@ubuntu-2:~# /etc/init.d/drbd start

ステータス確認

root@ubuntu-1:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-1, 2010-10-12 10:44:31
m:res    cs         ro                   ds                         p  mounted  fstype
0:disk0  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

root@ubuntu-2:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-2, 2010-10-12 10:45:58
m:res    cs         ro                   ds                         p  mounted  fstype
0:disk0  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

・初期設定

初回時、ローカルディスクの状態が Inconsistent になっているので、強制的に Primary にする。

root@ubuntu-1:~# drbdadm -- --overwrite-data-of-peer primary all

同期中

root@ubuntu-1:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-1, 2010-10-12 10:44:31
m:res    cs          ro                 ds                     p  mounted  fstype
0:disk0  SyncSource  Primary/Secondary  UpToDate/Inconsistent  C
...      sync'ed:    4.0%               (298664/306856)K
root@ubuntu-1:~#

同期が完了すると、Primary/Secondary , ローカルディスクの状態が UpToData/UpToDate になる。

root@ubuntu-1:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-1, 2010-10-12 10:44:31
m:res    cs         ro                 ds                 p  mounted  fstype
0:disk0  Connected  Primary/Secondary  UpToDate/UpToDate  C

root@ubuntu-2:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-2, 2010-10-12 10:45:58
m:res    cs         ro                 ds                 p  mounted  fstype
0:disk0  Connected  Secondary/Primary  UpToDate/UpToDate  C

下記コマンドでも、どちらが Primary かの確認可能

root@ubuntu-1:~# drbdadm role all
Primary/Secondary

root@ubuntu-2:~# drbdadm role all
Secondary/Primary

・ファイルシステムの作成

プライマリで実行する

root@ubuntu-1:~# mkfs.ext3 /dev/drbd0

マウント

root@ubuntu-1:~# mount -t ext3 /dev/drbd0 data

root@ubuntu-1:~# df data/
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/drbd0              297141     10287    271512   4% /root/data

・データがミラーリングされるかチェック

プライマリでファイルを作成

root@ubuntu-1:~# echo hello > data/hello.txt
root@ubuntu-1:~# cat data/hello.txt
hello

プライマリを停止

root@ubuntu-1:~# /etc/init.d/drbd stop

セカンダリをプライマリにする

root@ubuntu-2:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-2, 2010-10-12 10:45:58
m:res    cs            ro                 ds                 p  mounted  fstype
0:disk0  WFConnection  Secondary/Unknown  UpToDate/DUnknown  C

root@ubuntu-2:~# drbdadm primary all

root@ubuntu-2:~# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@ubuntu-2, 2010-10-12 10:45:58
m:res    cs            ro               ds                 p  mounted  fstype
0:disk0  WFConnection  Primary/Unknown  UpToDate/DUnknown  C

マウント。ubuntu-2 にもデータが同期されている。

root@ubuntu-2:~# mount -t ext3 /dev/drbd0 data/
root@ubuntu-2:~# cat data/hello.txt
hello

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.