読者です 読者をやめる 読者になる 読者になる

Selection for my Life

いま、僕にできること。

DRBDを設定して、LinuxHA構成っぽくする。でも運用するには、まだ無理だけど。

前回 pacemakerで仮想IPを設定して、LinuxHA構成っぽくする。運用するにはこれだけじゃ無理だけど。
http://hatcy840.hatenablog.com/entry/2014/01/15/214527

仮想IPは設定できたので、DRBDを利用して、ファイルを2台のサーバで同期させましょう。
まだ、運用には耐えられないけど、運用に向けて、2台のサーバでファイル同期を準備。

DRBD用のHDD領域準備

今回は仮想サーバにDRBD用の仮想ディスクイメージを追加して確認

 # cd /var/lib/libvirt/images/
 # qemu-img create -f qcow2 h1_drbd.qcow2 2G
 # qemu-img create -f qcow2 h2_drbd.qcow2 2G
# vi /etc/libvirt/qemu/ha1.xml
diskの位置に追加
   <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/var/lib/libvirt/images/h1_drbd.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
 # vi /etc/libvirt/qemu/ha2.xml

diskの位置に追加

   <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/var/lib/libvirt/images/h2_drbd.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>

設定ファイルを読込み直し

 # /etc/init.d/libvirtd restart


[ha1/ha2で設定]

DRBDパーティションの設定

# fdisk /dev/vda

デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルをディスク識別子 0x4b138492 で作成します。
あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-4161, 初期値 1): 1 
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-4161, 初期値 4161): 4161

コマンド (m でヘルプ): w

DRBDのインストール

# rpm -qa epel-release

# rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm

# yum -y install drbd84-utils kmod-drbd84

DRBD.confの作成

[ha1/ha2の両方で同じ設定]

# cp /etc/drbd.conf /etc/drbd.conf.org

# vi /etc/drbd.conf
 -------------------------------------------------
global {
        usage-count no;
}

common {
        syncer { rate 10M; }
}

resource r0 {
        protocol C;
        startup {
                wfc-timeout 120;
        }
        disk {
                on-io-error pass_on;
        }
        on ha1.localdomain { # uname -n
                device /dev/drbd0;
                disk /dev/vda;
                address 192.168.0.16:7788;
                meta-disk internal;
        }
        on ha2.localdomain { # uname -n
                device /dev/drbd0;
                disk /dev/vda;
                address 192.168.0.17:7788;
                meta-disk internal;
        }
}
 -------------------------------------------------

[ha1で設定]

# dd if=/dev/zero bs=1M count=1 of=/dev/vda; sync
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.25734 s, 4.1 MB/s

メタファイルの作成

# drbdadm create-md r0
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.

[ha1/ha2でstart]

# /etc/init.d/drbd start

[ha1で処理]

# drbdadm -- --overwrite-data-of-peer primary r0

# mkfs.ext4 /dev/drbd0

# mkdir /data
# mount -t ext4 /dev/drbd0 /data/
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524263 blocks
26213 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override

# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-14 15:33:06
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Primary/Secondary  UpToDate/Diskless  C  /data    ext4

同期の確認

[ha1]

# echo test_file > /data/test.txt
# umount /data
# drbdadm secondary r0

[ha2]

# drbdadm primary r0
# mount -t ext4 /dev/drbd0 /data
# cat /data/test.txt