ウェブサイト検索

2 台の CentOS 7 サーバーでストレージをレプリケートするように DRBD をセットアップする方法


DRBD (Distributed Replicated Block Device の略) は、Linux 用の分散型、柔軟かつ汎用性の高い複製ストレージ ソリューションです。ハードディスク、パーティション、論理ボリュームなどのブロックデバイスの内容をサーバー間でミラーリングします。これには、2 つのストレージ デバイス上のデータのコピーが含まれ、一方のストレージ デバイスに障害が発生した場合でも、もう一方のストレージ デバイス上のデータを使用できます。

これは、サーバー間でディスクがミラーリングされたネットワーク RAID 1 構成に似ていると考えることができます。ただし、その動作方法は RAID やネットワーク RAID とは大きく異なります。

もともとDRBD は主に高可用性 (HA) コンピューター クラスターで使用されていましたが、バージョン 9 以降はクラウド ストレージ ソリューションの展開に使用できるようになりました。

この記事では、CentOS に DRBD をインストールする方法を示し、それを使用して 2 つのサーバーにストレージ (パーティション) を複製する方法を簡単に説明します。これは、Linux で DRBD の使用を始めるのに最適な記事です。

テスト環境

この記事では、このセットアップに 2 つのノードのクラスターを使用します。

  • ノード 1: 192.168.56.101 – tecmint.tecmint.lan
  • ノード 2: 192.168.56.102 – server1.tecmint.lan

ステップ 1: DRBD パッケージのインストール

DRBD は Linux カーネル モジュールとして実装されています。これは仮想ブロック デバイスのドライバーを正確に構成するため、システムの I/O スタックの最下部近くに確立されます。

DRBDELRepo または EPEL リポジトリからインストールできます。まず、ELRepo パッケージ署名キーをインポートし、両方のノードで示されているようにリポジトリを有効にします。

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

次に、次のコマンドを実行して、両方のノードに DRBD カーネル モジュールとユーティリティをインストールできます。

yum install -y kmod-drbd84 drbd84-utils

SELinux が有効になっている場合は、DRBD プロセスを SELinux 制御から除外するようにポリシーを変更する必要があります。

semanage permissive -a drbd_t

さらに、システムでファイアウォールが有効になっている場合 (firewalld)、2 つのノード間でデータを同期できるように、 ファイアウォールにDRBD ポート 7789 を追加する必要があります。

最初のノードで次のコマンドを実行します。

firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

次に、2 番目のノードで次のコマンドを実行します。

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

ステップ 2: 下位レベルのストレージの準備

2 つのクラスタ ノードにDRBD をインストールしたので、両方のノードにほぼ同じサイズのストレージ領域を準備する必要があります。これは、ハード ドライブ パーティション (または完全な物理ハード ドライブ)、ソフトウェア RAID デバイス、LVM 論理ボリューム、またはシステム上にあるその他のブロック デバイス タイプです。

この記事では、dd コマンドを使用して、 サイズ2GBのダミー ブロック デバイスを作成します。

 
dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

これは、両方のノードに接続されている 2 番目のブロック デバイス (/dev/sdb) 上の未使用のパーティション (/dev/sdb1) であると仮定します。

ステップ 3: DRBD の構成

DRBD のメイン設定ファイルは /etc/drbd.conf にあり、追加の設定ファイルは /etc/drbd.d ディレクトリにあります。

ストレージをレプリケートするには、/etc/drbd.d/global_common.conf ファイルに必要な設定を追加する必要があります。このファイルには、DRBD 設定のグローバル セクションと共通セクションが含まれており、 でリソースを定義できます。 >.resファイル。

両方のノードで元のファイルのバックアップを作成してから、新しいファイルを開いて編集しましょう (好みのテキスト エディタを使用してください)。

mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
vim /etc/drbd.d/global_common.conf 

両方のファイルに次の行を追加します。

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

ファイルを保存し、エディタを閉じます。

プロトコル C の行に少し影を付けてみましょう。 DRBD は、次の 3 つの異なるレプリケーション モード (つまり、3 段階のレプリケーション同期性) をサポートします。

  • プロトコル A: 非同期レプリケーション プロトコル。長距離レプリケーションのシナリオで最もよく使用されます。
  • プロトコル B: 半同期レプリケーション プロトコル、別名メモリ同期プロトコル。
  • プロトコル C: 短距離ネットワークのノードに一般的に使用されます。これは、DRBD セットアップで最も一般的に使用されるレプリケーション プロトコルです。

重要: レプリケーション プロトコルの選択は、 展開の 2 つの要素、保護遅延に影響します。対照的にスループットは、選択したレプリケーション プロトコルにほとんど依存しません。

ステップ 4: リソースの追加

リソースは、複製された特定のデータセットのあらゆる側面を指す集合的な用語です。 /etc/drbd.d/test.res というファイルでリソースを定義します。

両方のノードのファイルに次のコンテンツを追加します (コンテンツ内の変数を環境の実際の値に置き換えることを忘れないでください)。

ホスト名に注意してください。コマンド uname -n を実行することで取得できるネットワーク ホスト名を指定する必要があります。

resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}

どこ :

  • on ホスト名: on セクションには、囲まれた設定ステートメントがどのホストに適用されるかを示します。
  • テスト: 新しいリソースの名前です。
  • device /dev/drbd0: DRBD によって管理される新しい仮想ブロック デバイスを指定します。
  • disk /dev/sdb1: DRBD デバイスのバッキング デバイスであるブロック デバイス パーティションです。
  • メタディスク: DRBD がメタデータを保存する場所を定義します。 Internal を使用するということは、DRBD がそのメタデータを実際の運用データと同じ物理的な下位レベルのデバイスに保存することを意味します。
  • アドレス: それぞれのノードの IP アドレスとポート番号を指定します。

また、両方のホストでオプションの値が等しい場合は、リソース セクションで直接指定できることにも注意してください。

たとえば、上記の構成は次のように再構築できます。

resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

ステップ 5: リソースの初期化と有効化

DRBD と対話するには、カーネル モジュールと通信して DRBD リソースを設定および管理する次の管理ツールを使用します。

  • drbdadm: DRBD の高レベル管理ツール。
  • drbdsetup: DRBD デバイスをバッキング ブロック デバイスに接続し、バッキング ブロック デバイスをミラーリングするための DRBD デバイス ペアをセットアップし、実行中の DRBD デバイスの構成を検査するための下位レベルの管理ツールです。
  • Drbdmeta: メタデータ管理ツールです。

すべての初期リソース構成を追加した後、両方のノードでリソースを起動する必要があります。

drbdadm create-md test

次に、リソースを有効にする必要があります。これにより、リソースがバッキング デバイスに接続され、レプリケーション パラメータが設定され、リソースがピアに接続されます。

drbdadm up test

ここで lsblk コマンドを実行すると、DRBD デバイス/ボリューム drbd0 がバッキング デバイス /dev/sdb1 に関連付けられていることがわかります。

lsblk

リソースを無効にするには、次を実行します。

drbdadm down test

リソースのステータスを確認するには、次のコマンドを実行します (この時点ではディスク状態が不整合/ 不整合であることが予想されることに注意してください)。

drbdadm status test
OR
drbdsetup status test --verbose --statistics 	#for  a more detailed status 

ステップ 6: 初期デバイス同期のプライマリ リソース/ソースを設定する

この段階でDRBD は動作する準備が整いました。次に、最初のデバイス同期のソースとしてどのノードを使用するかを指示する必要があります。

1 つのノードのみで次のコマンドを実行して、最初の完全同期を開始します。

drbdadm primary --force test
drbdadm status test

同期が完了すると、両方のディスクのステータスがUpToDateになります。

ステップ 7: DRBD セットアップのテスト

最後に、DRBD デバイスが複製されたデータ ストレージに対して適切に機能するかどうかをテストする必要があります。空のディスク ボリュームを使用したことを思い出してください。そのため、デバイス上にファイル システムを作成し、それをマウントして、複製されたデータ ストレージに使用できるかどうかをテストする必要があります。

次のコマンドを使用して、最初の完全同期を開始したノード (プライマリの役割を持つリソースを持つ) デバイス上にファイルシステムを作成できます。

mkfs -t ext4 /dev/drbd0 

次に、次のようにマウントします (マウント ポイントに適切な名前を付けることができます)。

mkdir -p /mnt/DRDB_PRI/
mount /dev/drbd0 /mnt/DRDB_PRI/

次に、上記のマウント ポイントにいくつかのファイルをコピーまたは作成し、ls コマンドを使用して長いリストを作成します。

cd /mnt/DRDB_PRI/
ls -l 

次に、 デバイスをアンマウントし(マウントが開いていないことを確認し、エラーを防ぐためにアンマウント後にディレクトリを変更します)、 ノードの役割をプライマリから < に変更します。strong>二次:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

もう一方のノード (セカンダリの役割を持つリソースがある) で、それをプライマリにしてから、そのノードにデバイスをマウントし、マウント ポイントの長いリストを実行します。セットアップが正常に動作している場合は、ボリュームに保存されているすべてのファイルがそこにあるはずです。

drbdadm primary test
mkdir -p /mnt/DRDB_SEC/
mount /dev/drbd0 /mnt/DRDB_SEC/
cd /mnt/DRDB_SEC/
ls  -l 

詳細については、ユーザー スペース管理ツールのマニュアル ページを参照してください。

man drbdadm
man drbdsetup
man drbdmeta
まとめ

DRBD は非常に柔軟で多用途であるため、ほぼすべてのアプリケーションに HA を追加するのに適したストレージ レプリケーション ソリューションです。この記事では、CentOS 7DRBD をインストールする方法と、それを使用してストレージを複製する方法を簡単に説明しました。以下のフィードバック フォームからお気軽にご意見をお聞かせください。