特集: DRBD9紹介 第6回「DRBDクライアント」

DRBD9の風変わりな新機能は「DRBDクライアント」です。これは、データを読み書きするローカルストレージを割り当てていないDRBDインスタンスのことで、ディスクレスDRBDと呼んでもいいでしょう。2ノードレプリケーションに限定されているDRBD8では、ディスクレスDRBDに有用性はなく、逆に故障修理の対象になります。しかしDRBD9では、3ノード以上のレプリケーションの1台でDRBDクライアントを積極的に活用し、まったく新しいストレージソリューションを実現できます。

DRBDクライアントの概要

下図では、上段の3台のサーバはそれぞれ何らかのアプリケーションを実行するサーバ、下段の5台のサーバはDRBD9で多重にレプリケートしているストレージクラスタです。それぞれ4ノードでレプリケートする3つのDRBDリソースA、B、およびCが動作しています。ただし、アプリケーション実行サーバ群のDRBDは、ローカルディスクを持たない「DRBDクライアント」として動作しています。

DRBDクライアント
DRBDクライアント
  • DRBDクライアントは通常「プライマリ」ロールで実行します。つまり、DRBDリソースをマウントして、アプリケーションのデータを読み書きします。
  • アプリケーションがDRBDクライアントに書き込んだデータは、ストレージクラスタの3台のサーバに冗長化して書き込まれますが、アプリケーション実行サーバのディスクには書き込まれません。
  • アプリケーションのデータはアプリケーション実行サーバには保存されていないため、アプリケーションが読み込むデータはストレージクラスタから負荷分散して読み込まれます。
  • DRBDクライアントはメタデータを持たないため、アプリケーション実行サーバ群の任意のノードに移動させることも可能です。

DRBDクライアントと他のDRBDインスタンス(対比して「DRBDサーバ」と呼びます)の関係は、iSCSIイニシエータとiSCSIターゲットの関係に似ています。すなわち、DRBDクライアントはディスク読み書き要求を複数のDRBDサーバに同時に送り、DRBDサーバにデータをディスクに書き込むか、またはディスクから読み込んだデータをDRBDクライアントに渡します。

DRBDプロトコルは、単なるレプリケーション制御だけでなく、ブロックベースのネットワークストレージを実現できるプロトコルと考えられます。機器、ネットワーク構成あるいは用途によっては、従来使っていたiSCSIが不要になります。

DRBDクライアントの用途

DRBD採用の最大のメリットは、カジュアルでローコストなIAサーバを使って、単一障害点を追放したクラスタシステムを構築できることです。OpenStackのCinder向けドライバ機能を例に、DRBD9がスケーラブルなストレージ基盤として活用できることを紹介します。

SAN専用製品を使う構成例

下図は、これまでの一般的なOpenStack環境の構成例です。仮想マシンイメージなどのためのブロックストレージを提供するCinderは、FC SANやIP SANなどのSANストレージ製品を採用するのが一般的でしょう。ストレージの故障は多数の仮想マシンのダウンを招くため、高い信頼性を期待できる製品が必要ですが、高価になります。

SANストレージベースのOpenStack環境
SANストレージベースのOpenStack環境

DRBD9多ノードレプリケーションとiSCSIの組み合わせ

「多ノードレプリケーション」で紹介したように、数台のIAサーバを用意して、2〜数ノードにレプリケートする多数のDRBDリソースを構築すれば、冗長化したCinder機能を安価に実現できます。Novaとの通信にiSCSIが使えるので、既存のOpenStack環境に違和感なく組み込めます。さらに、DRBD9のストレージクラスタ機能には、次のような高い付加価値を期待することもできるでしょう。

  • 「データ再配置」で説明したようにスケーラブルなストレージクラスタを実現できるため、数台のIAサーバから開始できる
  • 高速半導体ストレージと高速ネットワーク(10ギガ以上のイーサネットやInfinibandなど)を使えば、10数万IOPSといったきわめて高速なブロックストレージを安価に実現できる
  • スナップショットやDRBD Proxyと組み合わせて、バックアップや災害対策機能を追加できる
DRBD9ストレージクラスタを使ったOpenStack環境
DRBD9ストレージクラスタを使ったOpenStack環境

DRBDクライアントを使った最軽量構成

下図は、DRBD9の多ノードレプリケーションおよびDRBDクライアント機能を組み合わせた構成イメージ図です。Cinderのためだけの専用機器が不要なOpenStack環境が実現できます。

DRBDクライアントを使ってiSCSIを不要にしたOpenStack環境
DRBDクライアントを使ってiSCSIを不要にしたOpenStack環境
  • 各IAサーバは、DRBD9の多ノードレプリケーションを使ったストレージクラスタとして動作するとともに、同時にNovaのためのKVMハイパーバイザとしても動作します。
  • Nova側のDRBDクライアントは、ストレージクラスタ側のDRBDサーバとDRBDプロトコルで直接通信します。iSCSIプロトコルが不要なため、メモリやCPUなどのリソースを削減できるだけでなく、複数プロトコルの組み合せオーバヘッドの削減も期待できます。
  • 数台から開始してサーバを増強すればいいので、OpenStack導入の敷居を低くできます。

まとめ

これまで6回に分けてDRBD9の新機能の概要を紹介しました。多ノードレプリケーション、リソースの自動再配置、DRBDクライアントなどの機能を組み合わせると、スケーラビリティを備えたストレージクラスタの構築基盤になります。Cinderを例に効果的な利用イメージを紹介しましたが、他のストレージニーズにも応用していただけます。