2台のCentOS 7サーバーでストレージを複製するようにDRBDを設定する方法


DRBD Distributed Replicated Block Device の略)は、Linux用の分散型の柔軟で用途の広い複製ストレージソリューションです。サーバー間のハードディスク、パーティション、論理ボリュームなどのブロックデバイスの内容をミラーリングします。これは2つの記憶装置上のデータのコピーを含み、一方が故障した場合に他方のデータが使用されることができるようにします。

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

元々、 DRBD は主に高可用性(HA)コンピュータクラスタで使用されていましたが、バージョン9以降、クラウドストレージソリューションの導入に使用できます。

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

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

  • Node1: 192.168.56.101 – tecmint.tecmint.lan
  • Node2: 192.168.10.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 を有効にしている場合は、ポリシーを変更して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 ディレクトリにあります。

ストレージを複製するには、DRBD設定のグローバルセクションと共通セクションを含む /etc/drbd.d/global_common.conf ファイルに必要な設定を追加する必要があります。 > .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度のレプリケーション同期)をサポートします。

  • protocol A: Asynchronous replication protocol; it’s most often used in long distance replication scenarios.
  • protocol B: Semi-synchronous replication protocol aka Memory synchronous protocol.
  • protocol C: commonly used for nodes in short distanced networks; it’s by far, the most commonly used replication protocol in DRBD setups.

ステップ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: the on section states which host the enclosed configuration statements apply to.
  • test: is the name of the new resource.
  • device /dev/drbd0: specifies the new virtual block device managed by DRBD.
  • disk /dev/sdb1: is the block device partition which is the backing device for the DRBD device.
  • meta-disk: Defines where DRBD stores its metadata. Using Internal means that DRBD stores its meta data on the same physical lower-level device as the actual production data.
  • address: specifies the IP address and port number of the respective node.

また、両方のホストでオプションの値が等しい場合は、リソースセクションで直接指定できます。

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

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;
        		}
}

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

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

  • drbdadm: a high-level administration tool of the DRBD.
  • drbdsetup: a lower-level administration tool for to attach DRBD devices with their backing block devices, to set up DRBD device pairs to mirror their backing block devices, and to inspect the configuration of running DRBD devices.
  • Drbdmeta:is the meta data management tool.

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

# 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 

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

この段階で、 DRBD は運用準備完了です。どのノードを初期のデバイス同期のソースとして使用するかを指定する必要があります。

最初の完全同期を開始するには、1つのノードだけで次のコマンドを実行します。

# drbdadm primary --force test
# drbdadm status test

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

ステップ6: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 

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

# 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ユーザーガイド。

DRBD は非常に柔軟で用途が広いため、あらゆるアプリケーションにHAを追加するのに適したストレージレプリケーションソリューションです。この記事では、 CentOS 7 DRBD をインストールする方法と、それを使用してストレージを複製する方法について簡単に説明しました。下記のフィードバックフォームから私達とあなたの考えを共有してください。