このチュートリアルでは、サーバーにDRBDをインストールしてセットアップする方法について説明します。始める前に、DRBDが実際に何を表し、何に使用されるかを説明しましょう。 DRBDは、Distributed Replicated Block Deviceの略で、ハードディスク、パーティション、論理ボリュームなどのブロックデバイスのコンテンツをミラーリングするためのソフトウェアベースのシェアードナッシング複製ストレージソリューションです。DRBDの主な目的は、フェイルオーバーやディザスタリカバリなどの高可用性のシナリオに遭遇します。基本的な詳細は、こちらのウェブサイトで確認できます。
1。予備メモ
このチュートリアルでは、32ビットバージョンのCentOS6.4を使用しています。最終結果の例は、サーバーAのパーティション内にファイルまたはフォルダーを作成し、DRBDを使用して別のサーバー(サーバーB)のすべてのコンテンツを正常に表示する方法を示しています。
以下はサーバーアーキテクチャのスケッチです:-
+ ----------------------------------- + + ------------ ----------------- +
| [DRBDサーバーA]| 192.168.43.101 | 192.168.43.102 | [DRBDサーバーB]|
| OEL641 + ---------------------- + ----------------------- + OEL642 |
| folderA | | folderB |
+ ----------------------------------- + + ------ ----------------------- +
このチュートリアルは、CentOS / Redhat / OracleLinux6のすべてのバージョンと互換性があります。 DRBDをインストールするサーバーには、無料のブロックデバイスが必要です。この例は、block-device / dev/sdb1を構成して使用する方法を示しています。
2。インストールフェーズ
開始する前に、システムを更新し、DRBD依存関係に必要なパッケージをインストールする必要があります。以下は、実行する必要のあるコマンドと、更新またはインストールされるパッケージのリストです。この場合、yumコマンドを使用して、パブリックCentOSリポジトリから最新のパッケージを取得しています。
yum -y update
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel
インストールプロセスの設定
パッケージgcc-4.4.7-3.el6.i686がすでにインストールされており、最新バージョン
パッケージ1:make-3.81-20.el6.i686がすでにインストールされており、最新バージョン
br/>パッケージautomake-1.11.1-4.el6.noarchがすでにインストールされており最新バージョン
パッケージautoconf-2.63-5.1.el6.noarchがすでにインストールされており最新バージョン
パッケージlibxslt-1.1.26- 2.0.2.el6_3.1.i686がすでにインストールされており、最新バージョン
パッケージlibxslt-devel-1.1.26-2.0.2.el6_3.1.i686がすでにインストールされており、最新バージョン
パッケージflex-2.5。 35-8.el6.i686がすでにインストールされており、最新バージョン
パッケージrpm-build-4.8.0-32.el6.i686がすでにインストールされており、最新バージョン
パッケージkernel-devel-2.6.32-358。 el6.i686はすでにインストールされており、最新バージョン
両方のサーバーで上記の手順を実行する必要があります。
両方のサーバーで依存関係パッケージのインストールが完了したら、DRBDパッケージのインストールを開始します。パッケージは、このウェブサイトからダウンロードできます。
手順は次のとおりです。
まず、/ root /パスの下にBUILD、BUILDROOTなどの名前のフォルダーを作成します。このパスは、DRBDパッケージをビルドした後にrpmファイルを保存するために必要です。
mkdir -p / root / rpmbuild / {BUILD、BUILDROOT、RPMS、SOURCES、SPECS、SRPMS}
DRBDパッケージをダウンロードします。
wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz
パッケージdrbd-8.4.7-1.tar.gzおよびdrbd-utils-latest.tar.gzファイルを抽出します。
tar -zxvf drbd-8.4.7-1.tar.gz
tar -zxvf drbd-utils-latest.tar.gz
DRBDパッケージをコンパイルします。
cd drbd-8.4.7-1
drbd-8.4.7-1]#make km-rpm
...
...
これで、次のようになります:
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm
パッケージをコンパイルして構成します。
cd ..
cd drbd-utils-8.9.6
./configure
make rpm
...
...
これで、次のようになります:
/root/rpmbuild/RPMS/i686/drbd-utils-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-debuginfo-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-heartbeat-8.9.6-1。 el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-xen-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km- debuginfo-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-pacemaker-8.9.6-1.el6.i686.rpm
/ root / rpmbuild / RPMS / i686 / drbd-bash-completion-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1。 i686.rpm
/root/rpmbuild/RPMS/i686/drbd-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-udev-8.9.6- 1.el6.i686.rpm
/ root / rpmbuild / RPMS/i686に移動します。コンパイルからのrpmのパッケージはそこに存在し、関連するrpmパッケージをインストールします。
cd / root / rpmbuild / RPMS / i686
rpm -Uvh drbd-xen * drbd-udev * drbd-pacemaker * drbd-bash-completion*drbd-utils-*。rpmdrbd-km-*。 rpm drbd-8 *
準備中...########################################### [100%]
1:drbd-utils ####################################### ###### [13%]
2:drbd-xen ############################### ############ [25%]
3:drbd-udev ######################### ################## [38%]
4:drbd-pacemaker ################### ######################## [50%]
5:drbd-bash-completion ########### ################################ [63%]
6:drbd ####### #################################### [75%]
7:drbd-km- 2.6.32_358.el6。############################################[ 88%]
8:drbd-km-debuginfo #################################### ####### [100%]
最初のサーバーで実行したら、サーバー OEL642でも同じ手順を実行します。 。
3。検証フェーズ
これで、完成の途中です。 OEL641に注目しましょう 構成側。まず、サーバーのホスト名を確認します。DRBDの構成にはホスト名と同じ名前が必要になるため、これは重要です。手順は次のとおりです。
uname -n
OEL641
次に、DRBDモジュールを更新します
modprobe drbd
lsmod | grep drbd
drbd 341783 0
libcrc32c 841 1 drbd
4.これで、DRDBディスクとして機能する新しいディスクパーティションを作成します。ここに新しいディスク/dev/sdbがあります。パーティション/dev/ sdb1を作成し、DRBDディスクとして使用します。
fdisk -l </ pre>ディスク/dev/ sdb:1073 MB、1073741824バイト
255ヘッド、63セクター/トラック、130シリンダー
ユニット=16065のシリンダー*512 =8225280バイト
セクターサイズ(論理/物理):512バイト/512バイト
I / Oサイズ(最小/最適):512バイト/ 512バイト
ディスク識別子:0x00000000fdisk / dev / sdbコマンド(ヘルプの場合はm):n
コマンドアクション
e拡張
pプライマリパーティション(1-4)
p
パーティション番号(1-4 ):1
最初のシリンダー(1-130、デフォルト1):
デフォルト値1を使用
最後のシリンダー、+シリンダーまたは+ size {K、M、G}(1-130、デフォルト130):
デフォルト値130を使用コマンド(ヘルプの場合はm):pデバイスブート開始終了ブロックIDシステム
/dev / sdb1 1 130 1044193+ 83 Linuxコマンド(ヘルプはm):w
パーティションテーブルが変更されました!ioctl()を呼び出してパーティションテーブルを再読み込みします。
ディスクを同期しています。fdisk -l </ pre>ディスク/dev/ sdb:1073 MB、1073741824バイト
255ヘッド、63セクター/トラック、130シリンダー
ユニット=16065のシリンダー*512 =8225280バイト
セクターサイズ(論理/物理):512バイト/512バイト
I / Oサイズ(最小/最適):512バイト/ 512バイト
ディスク識別子:0x89770d51デバイスブート開始終了ブロックIDシステム
/dev / sdb1 1 130 1044193+ 83 Linux完了したら、 OEL642の手順を繰り返します。
5。 DRBD構成
これで、DRBDの構成である最終ステップに到達しました。基本的に、DRBDモジュールの下で動作するパーティションディスクとサーバーを設定する必要があります。そのために、以下のように応答ファイルを作成し、 OEL642にコピーします。 両方のサーバーが同じ構成になるようにします。cd /etc/drbd.d/
vi s1.resresource s1 {
on OEL641 {
device / dev / drbd1;
disk / dev / sdb1;
address 192.168.43.101:7799;
meta- disk internal;
}
on OEL642 {
device / dev / drbd1;
disk / dev / sdb1;
address 192.168.43.102:7799;
メタディスク内部;
}
}scpを使用してファイルを2番目のサーバーにコピーします:
scp /etc/drbd.d/s1.res [メール保護]:/etc/drbd.d/s1.res完了したら、両方のサーバーでパーティションを初期化する必要があります。手順は次のとおりです。
drbdadm create-md s1アクティビティログを初期化しています
ビットマップを初期化していない
メタデータを書き込んでいます...
新しいdrbdメタデータブロックが正常に作成されました。
成功s1は、上記のs1.resファイルで定義したリソース名です。
サーバーOEL642にログインしてください 上から同じ手順を実行します:
drbdadm create-md s1アクティビティログを初期化しています
ビットマップを初期化していない
メタデータを書き込んでいます...
新しいdrbdメタデータブロックが正常に作成されました。
成功
サーバーに戻りますOEL641 そして、DRBDサービスを開始できます。手順は次のとおりです:-/etc/init.d/drbdステータスdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
[[email protected]〜]#/etc/init.d/drbd start
DRBDリソースの開始:[
create res :s1
ディスクの準備:s1
ディスクの調整:s1
ネットの調整:s1
]
..........
* ************************************************** ************
DRBDの起動スクリプトは、ピアノードが表示されるのを待ちます。
-このノードが
再起動する前にすでに劣化したクラスターであった場合、タイムアウトは0秒です。 [degr-wfc-timeout]
-再起動前にピアが使用可能だった場合、タイムアウトは
0秒です。 [wfc-timeout]
(これらの値はリソース「s1」用です; 0秒->永久に待機します)
待機を中止するには、「yes」と入力します[26]:
。
上記で、DRBDサービスがまだ開始されていないことに注意してください。これはサーバーOEL641によるものです OEL642でDRBDサービスを探しています 。したがって、この間、 OEL642にログインしてください。 OEL641と同じ方法でDRBDサービスを開始します 。 OEL642でDRBDサービスを利用すると が開始され、 OEL641でDRBDサービスが開始されます 待機を停止して開始します。
完了すると、DRBDサービスのステータスは両方のサーバーで次のように表示されます。
/etc/init.d/drbdステータスdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
1:s1 Connected Secondary / Secondary Inconsistent / Inconsistent C
サーバーOEL641で以下の手順を実行します それだけ。これは、誰が最初のプライマリサーバーになるかを初期化するためのものです。drbdadm --- overwrite-data-of-peer primary s1
/etc/init.d/drbd statusdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
... sync'ed:0.8%(1037872/1044124)K
1:s1 SyncSource Primary / Secondary UpToDate / Inconsistent C次に、OEL642を確認します:
/etc/init.d/drbdステータスdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
... sync'ed:12.2%(921244/1044124)K
1:s1 SyncTarget Secondary / Primary Inconsistent / UpToDate C
上記のステータスレポートで、サーバーが OEL641になっていることがわかります。 プライマリおよびOEL642として検証されています セカンダリサーバーとして。これは、サーバー OEL641のDRBDパーティションの下に作成したファイルまたはフォルダーがすべてであることを意味します。 OEL642のDRBDパーティションに同期されます 。
6。 DRBDテストフェーズ
これで、DRBDサービスをテストして、目的を満たしていることを確認するという最後の部分に到達しました。
まず、DRBDパーティションをマウントしましょう。
プライマリサーバーOEL641で以下の手順を1回実行します のみ!
mkfs.ext3 / dev / drbd1...
...
iノードテーブルの書き込み:完了
ジャーナルの作成(4096ブロック):完了
スーパーブロックとファイルシステムアカウンティング情報の書き込み:完了
これにより、ext3ファイルシステムでパーティションがフォーマットされます。次に、フォルダを作成し、DRBDパーティションをそのフォルダにマウントします。
mkdir / folderA
mount / dev / drbd1 / folderA
df -h使用されるファイルシステムのサイズ使用率使用率
/dev / drbd1 1004M 18M 936M 2%/ folderAcd / folderA /
ls -hlost + found上記のように、folderAという新しいフォルダが正常に作成されました。
次に、フォルダ内に30Mbのサイズのファイルを作成しましょう:
dd if =/ dev / zero of =/ folderA / testfile bs =1M count =3030+0レコード入力
30+0レコード出力
31457280バイト(31 MB)コピー、0.178448秒、176MB/秒ls -lh合計31M
drwx------。 2ルートルート16K8月21日08:55失われた+見つかった
-rw-r--r--。 1ルートルート30MAug2109:09テストファイル
これらは前提条件です。プロセスのテストを開始しましょう。最終結果として、DRBDパーティションをサーバー OEL642にマウントすると 、テストファイルはフォルダ内に存在する必要があります。
それでは、 OEL641のDRBDパーティションをアンマウントしましょう。 そしてそれを二次状態にします。二次状態とは、DRBDパーティションをオペレーティングシステムにマウントして使用できないことを意味します。
/etc/init.d/drbdステータスdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
1:s1 Connected Primary / Secondary UpToDate / UpToDate C / folderA ext3umount / folderA
drbdadm secondary s1/etc/init.d/drbdステータスdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
1:s1 Connected Secondary / Secondary UpToDate / UpToDate C
これで、両方のDRBDサーバーがセカンダリ状態になります。サーバーOEL642に行きましょう セカンダリ状態からプライマリ状態に変更します。最初に空のフォルダを作成し、 OEL642のDRBDパーティションにマウントします :
mkdir / folderB
cd / folderB
ls -lh合計0/etc/init.d/drbdステータスdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
1:s1 Connected Secondary / Secondary UpToDate / UpToDate Cdrbdadm primary s1
/etc/init.d/drbd statusdrbdドライバがロードされましたOK;デバイスステータス:
バージョン:8.4.7-1(api:1 / proto:86-101)
GIT-ハッシュ:3a6a769340ef93b1ba2792c6461250790795db49ビルド:[メール保護]、2016-08-20 01:23: 44
m:res cs ro ds p Mounted fstype
1:s1 Connected Primary / Secondary UpToDate / UpToDate Cmount / dev / drbd1 / folderB
df -h使用されるファイルシステムのサイズ使用率使用率
/dev / mapper / vg_oel641-lv_root
96G 3.5G 88G 4%/
tmpfs 640M 80K 640M 1%/ dev / shm
/ dev / sda1 485M 32M 428M 7%/ boot
/ dev / drbd1 1004M 48M 906M 5%/ folderB
ls -lh / folderB /合計31M
drwx------。 2ルートルート16K8月21日08:55失われた+見つかった
-rw-r--r--。 1ルートルート30MAug2109:09テストファイル
DRBDパーティションを新しいフォルダに正常にマウントすると、サーバー OEL641で作成したファイルに気付くでしょう。 自動的に存在する前に!
完了! CentOSでDRBDを正常にセットアップおよび構成しました!
Cent OS