GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOSにDRBDをインストールしてセットアップする方法

このチュートリアルでは、サーバーに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バイト
ディスク識別子:0x00000000
 fdisk / 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.res
 resource 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 status
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: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%/ folderA
 cd / folderA / 
ls -h
 lost + found 

上記のように、folderAという新しいフォルダが正常に作成されました。

次に、フォルダ内に30Mbのサイズのファイルを作成しましょう:

 dd if =/ dev / zero of =/ folderA / testfile bs =1M count =30 
 30+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 ext3
 umount / 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 C
 drbdadm primary s1 
/etc/init.d/drbd status
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
 mount / 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
  1. CentOS7にNginxをインストールして構成する方法

  2. CentOS7および8にdigをインストールする方法

  3. CentOSにNode.jsとNPMをインストールする方法

  1. CentOS7にNode.jsとNPMをインストールする方法

  2. CentOS7にRedisをインストールして設定する方法

  3. CentOS7にGitLabをインストールして構成する方法

  1. CentOS7にRedmineをインストールして設定する方法

  2. CentOS8にNode.jsとnpmをインストールする方法

  3. CentOS8にRedisをインストールして設定する方法