DRBD(Distributed Replicated Block Device)は、データを複数のサーバー間で同期して複製する技術であり、主に高可用性のシステムを構築するために使用されます。Ubuntuサーバー上でのDRBDのセットアップ方法を中心に、DRBDの概念、利点、使用例、設定手順について説明します。DRBDは、主に「ブロックレベル」でのデータ複製を行うため、ファイルシステムの同期だけでなく、低レベルでのディスクの複製を実現できます。
DRBDの基本概念
DRBDは、Linuxカーネルモジュールとして動作し、2台以上のサーバー(ノード)間でブロックデバイス(通常はハードディスクやSSD)の同期を行います。これにより、1台のサーバーに障害が発生した場合でも、データを別のサーバーに自動的に復元でき、高可用性が確保されます。
DRBDは、主に以下の用途に使用されます:
- 高可用性クラスタリング: 2台のサーバー間でデータを同期し、どちらか一方がダウンしても、もう一方がサービスを継続します。
- バックアップおよび災害復旧: リアルタイムでデータが複製されるため、データ損失を防ぐことができます。
DRBDの動作
DRBDは、ブロックデバイスのミラーリングを行うため、データが書き込まれると、そのデータはリアルタイムで他のノードに同期されます。これにより、両方のノードに同一のデータが常に保持され、障害が発生しても、データ損失を最小限に抑えることができます。
- プライマリノード: データ書き込みを行うノード。通常、アクティブなサーバーとして機能します。
- セカンダリノード: データのコピーを保持するノード。プライマリノードに障害が発生した場合に、セカンダリノードがプライマリノードとして機能します。
DRBDは、データがプライマリノードで書き込まれた際に、セカンダリノードにデータを転送し、両方のノードが同じ状態になるよう同期を取ります。これにより、常に最新のデータを保持することができます。
DRBDの利点
- 高可用性: サーバーの一部に障害が発生した場合でも、データが失われることなく、サービスを継続できます。
- データ冗長化: 複数のノードにデータを同期することにより、データ損失を防ぎ、障害からの迅速な復旧が可能です。
- コスト効果: クラウドサービスや専用のストレージシステムを利用せずに、既存のサーバーで高可用性を実現できます。
DRBDを使ったUbuntuサーバーの構築手順
以下に、DRBDをUbuntuサーバーにインストールし、2台のノード間でデータを同期する基本的な手順を説明します。
1. 必要なパッケージのインストール
まず、DRBDを使用するために必要なパッケージをインストールします。次のコマンドを実行します。
bashsudo apt update sudo apt install drbd-utils
これにより、DRBDの管理ツールとカーネルモジュールがインストールされます。
2. DRBDデバイスの設定
次に、DRBDデバイスを設定します。まず、2台のサーバーの両方に以下の設定を行います。
bashsudo nano /etc/drbd.conf
drbd.conf
ファイルには、以下の設定を追加します。
bashresource r0 { on ubuntu-node1 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.1:7789; meta-disk internal; } on ubuntu-node2 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.2:7789; meta-disk internal; } }
この設定では、2つのノード (ubuntu-node1
と ubuntu-node2
) の間で drbd0
デバイスを同期するように設定しています。
3. DRBDリソースの初期化
次に、DRBDリソースを初期化します。これにより、指定されたデバイス間で同期が開始されます。
bashsudo drbdadm create-md r0 sudo drbdadm up r0
これで、DRBDデバイスが起動し、2台のサーバー間で同期を行う準備が整いました。
4. プライマリノードの設定
1台目のサーバー(プライマリノード)で、以下のコマンドを実行して、リソースをプライマリとして設定します。
bashsudo drbdadm primary --force r0
5. フォーマットとマウント
次に、DRBDデバイスをフォーマットして、ファイルシステムを作成します。
bashsudo mkfs.ext4 /dev/drbd0
その後、マウントします。
bashsudo mount /dev/drbd0 /mnt
これで、データを保存する場所が作成されました。
6. セカンダリノードの設定
2台目のサーバー(セカンダリノード)では、リソースを同期するために以下のコマンドを実行します。
bashsudo drbdadm secondary r0
DRBDを使用した運用例
DRBDは、主に次のようなシナリオで使用されます:
- 高可用性のファイルサーバー: サーバー1がダウンしても、サーバー2がすぐにサービスを引き継ぎ、ユーザーは中断なしでアクセスできます。
- データベースの冗長化: MySQLやPostgreSQLなどのデータベースをDRBDでミラーリングし、高可用性を確保します。
- クラスタリング環境での利用: DRBDは、PacemakerやCorosyncと組み合わせて、複数ノードで高可用性のクラスタを構成する際に使用されます。
まとめ
DRBDは、Ubuntuサーバーで高可用性を実現するための強力なツールです。データの同期と冗長化を行い、システムの耐障害性を向上させます。簡単な設定で、2台のサーバー間でブロックデバイスの複製を実現することができ、システム管理者にとって非常に有用な技術です。