開発運用

UbuntuでのDRBD設定ガイド

DRBD(Distributed Replicated Block Device)は、データを複数のサーバー間で同期して複製する技術であり、主に高可用性のシステムを構築するために使用されます。Ubuntuサーバー上でのDRBDのセットアップ方法を中心に、DRBDの概念、利点、使用例、設定手順について説明します。DRBDは、主に「ブロックレベル」でのデータ複製を行うため、ファイルシステムの同期だけでなく、低レベルでのディスクの複製を実現できます。

DRBDの基本概念

DRBDは、Linuxカーネルモジュールとして動作し、2台以上のサーバー(ノード)間でブロックデバイス(通常はハードディスクやSSD)の同期を行います。これにより、1台のサーバーに障害が発生した場合でも、データを別のサーバーに自動的に復元でき、高可用性が確保されます。

DRBDは、主に以下の用途に使用されます:

  • 高可用性クラスタリング: 2台のサーバー間でデータを同期し、どちらか一方がダウンしても、もう一方がサービスを継続します。
  • バックアップおよび災害復旧: リアルタイムでデータが複製されるため、データ損失を防ぐことができます。

DRBDの動作

DRBDは、ブロックデバイスのミラーリングを行うため、データが書き込まれると、そのデータはリアルタイムで他のノードに同期されます。これにより、両方のノードに同一のデータが常に保持され、障害が発生しても、データ損失を最小限に抑えることができます。

  • プライマリノード: データ書き込みを行うノード。通常、アクティブなサーバーとして機能します。
  • セカンダリノード: データのコピーを保持するノード。プライマリノードに障害が発生した場合に、セカンダリノードがプライマリノードとして機能します。

DRBDは、データがプライマリノードで書き込まれた際に、セカンダリノードにデータを転送し、両方のノードが同じ状態になるよう同期を取ります。これにより、常に最新のデータを保持することができます。

DRBDの利点

  1. 高可用性: サーバーの一部に障害が発生した場合でも、データが失われることなく、サービスを継続できます。
  2. データ冗長化: 複数のノードにデータを同期することにより、データ損失を防ぎ、障害からの迅速な復旧が可能です。
  3. コスト効果: クラウドサービスや専用のストレージシステムを利用せずに、既存のサーバーで高可用性を実現できます。

DRBDを使ったUbuntuサーバーの構築手順

以下に、DRBDをUbuntuサーバーにインストールし、2台のノード間でデータを同期する基本的な手順を説明します。

1. 必要なパッケージのインストール

まず、DRBDを使用するために必要なパッケージをインストールします。次のコマンドを実行します。

bash
sudo apt update sudo apt install drbd-utils

これにより、DRBDの管理ツールとカーネルモジュールがインストールされます。

2. DRBDデバイスの設定

次に、DRBDデバイスを設定します。まず、2台のサーバーの両方に以下の設定を行います。

bash
sudo nano /etc/drbd.conf

drbd.conf ファイルには、以下の設定を追加します。

bash
resource 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-node1ubuntu-node2) の間で drbd0 デバイスを同期するように設定しています。

3. DRBDリソースの初期化

次に、DRBDリソースを初期化します。これにより、指定されたデバイス間で同期が開始されます。

bash
sudo drbdadm create-md r0 sudo drbdadm up r0

これで、DRBDデバイスが起動し、2台のサーバー間で同期を行う準備が整いました。

4. プライマリノードの設定

1台目のサーバー(プライマリノード)で、以下のコマンドを実行して、リソースをプライマリとして設定します。

bash
sudo drbdadm primary --force r0

5. フォーマットとマウント

次に、DRBDデバイスをフォーマットして、ファイルシステムを作成します。

bash
sudo mkfs.ext4 /dev/drbd0

その後、マウントします。

bash
sudo mount /dev/drbd0 /mnt

これで、データを保存する場所が作成されました。

6. セカンダリノードの設定

2台目のサーバー(セカンダリノード)では、リソースを同期するために以下のコマンドを実行します。

bash
sudo drbdadm secondary r0

DRBDを使用した運用例

DRBDは、主に次のようなシナリオで使用されます:

  • 高可用性のファイルサーバー: サーバー1がダウンしても、サーバー2がすぐにサービスを引き継ぎ、ユーザーは中断なしでアクセスできます。
  • データベースの冗長化: MySQLやPostgreSQLなどのデータベースをDRBDでミラーリングし、高可用性を確保します。
  • クラスタリング環境での利用: DRBDは、PacemakerやCorosyncと組み合わせて、複数ノードで高可用性のクラスタを構成する際に使用されます。

まとめ

DRBDは、Ubuntuサーバーで高可用性を実現するための強力なツールです。データの同期と冗長化を行い、システムの耐障害性を向上させます。簡単な設定で、2台のサーバー間でブロックデバイスの複製を実現することができ、システム管理者にとって非常に有用な技術です。

Back to top button