DRBD(Distributed Replicated Block Device)は、Linux向けの分散型で柔軟なユニバーサルに複製されるストレージソリューションです。ハードドライブ、パーティション、論理ボリュームなどのブロックデバイスの内容を反映しています。サーバー間。 2つのストレージデバイスにデータのコピーを作成するので、一方が故障しても、もう一方のデータを使用できます。
これは、ディスクが異なるサーバーにマッピングされたRAID 1 ネットワーク構成のようなものと言えます。ただし、RAIDとはまったく異なる動作をします(ネットワーク化されていても)。
当初、DRBDは主に高可用性(HA)コンピュータークラスターで使用されていましたが、バージョン9以降、クラウドストレージソリューションの展開に使用できます。
この記事では、CentOSにDRBDをインストールする方法を紹介し、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スタックの最下部に配置されます。
DRBDはELRepoまたは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を有効にしている場合、SELinux制御からDRBDプロセスを解放するためのポリシーを設定する必要があります。
# semanage permissive -a drbd_t
また、システムでファイアウォールが実行されている場合は、DRBDポート7789を追加して、2つのノード間でデータを同期できるようにする必要があります。
最初のノードで次のコマンドを実行します。
# 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.低レベルのストレージを準備する
クラスタの両方のノードにDRBDがインストールされたので、それらにほぼ同じサイズのストレージ領域を準備する必要があります。これは、ハードディスクパーティション(または物理ハードディスク全体)、ソフトウェアRAIDデバイス、LVM論理ボリューム、またはシステム上にあるその他のタイプのブロックデバイスにすることができます。
このチュートリアルでは、ddコマンドを使用して2 GBのテストブロックデバイスを作成します。
# 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 hostname:ネストされた構成ステートメントが属するonセクション。
- test:これは新しいリソースの名前です。
- device / dev / drbd0:DRBDによって管理される新しい仮想ブロックデバイスを指定します。
- disk / dev / sdb1:これは、DRBDデバイスのバックアップデバイスであるブロックデバイスパーティションです。
- meta-disk:DRBDがメタデータを保存する場所を定義します。内部とは、DRBDがそのメタデータを実稼働中の実際のデータと同じ物理低レベルデバイスに保存することを意味します。
- address:対応するホストの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
リソースのステータスを確認するには、次のコマンドを実行します(この時点ではInconsistent / Inconsistent状態が予想されることに注意してください)。
# 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
Drbdボリュームにファイルシステムを作成し、
次に示すようにマウントします(マウントポイントに適切な名前を付けることができます)。
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
上記のマウントポイントにいくつかのファイルをコピーまたは作成し、lsコマンドを使用して長いリストを作成します。
# cd /mnt/DRDB_PRI/
# ls -l
プライマリDrbdボリュームの内容を一覧表示します。
次に、デバイスをアンマウントし(マウントが開いていないことを確認し、アンマウント後にディレクトリを変更してエラーを回避します)、ノードの役割をプライマリからセカンダリに変更します。
# 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
セカンダリノードで実行されているDRBD設定を確認します。
詳細については、管理ツールのマニュアルページを参照してください。
# man drbdadm
# man drbdsetup
# man drbdmeta
ヘルプ:DRBDユーザーガイド。
概要
DRBDは非常に柔軟で用途が広く、ほとんどすべてのアプリケーションにHAを追加するのに適したストレージレプリケーションソリューションです。この記事では、CentOS 7にDRBDをインストールする方法と、DRBDを使用してストレージを複製する方法を簡単に説明しました。以下のフィードバックフォームを使用して、ご意見をお聞かせください。
コースの詳細をご覧ください。