最も簡単なSDS運用方法

DRBDでSDSと聞いても、どんな構成になるかサッパリ判らない方も多いと思います。

そこでDRBD9を使ったSDSの運用で、誰でもすぐに試せる例を紹介します。

今回はKVMの仮想マシン環境を作成してDRBD SDSを試します。

用意するもの

サーバーをマシンを2台用意して下さい。KVMを動かすため、実サーバを用意します。
Nested KVMが利用できる方はそれを使っていただいても結構です。

弊社ではDL360 gen8 2台を使って、下図のような構成にしました。

nic0は環境へアクセスするためのネットワーク、nic1とnic2は死活監視用、nic1がDBRDのデータ同期のネットワークで、nic1は2つの目的の為に兼用しています。
※単にDRBD9を使うだけなら、nic1だけで十分です。nic0でDRBDのデータ同期を動かす運用も可能ですが、
 パフォーマンスが悪くなるのでお勧めしません。

構築の流れ

まず、2台のサーバでDRBD9が動く環境を作って下さい。DRBD9の管理ツールとしてdrbdmanageとLINSTORがあります。drbdmanageはUbuntuや、RHEL/CentOSではパッケージ化されたものが比較的簡単に入手できます。OpenSUSEでは現時点(2017年7月)動作するdrbdmanageは提供されていません。drbdmanageはLINSTORと比べると安定して動作しないので、 https://github.com/LINBIT からソースコード入手して、ビルドされることを勧めます。

DRBD9とdrbdmanageまたはLINSTORのインストールと動作確認が済んだら、次にKVMをインストールします。

KVMのインストールはいろいろなサイトで紹介されているので、詳細はそれらを参照下さい。

運用方法

DRBD9のリソースを定義して、仮想ゲストが動作するのに必要なブロックデバイスを作成します。

例えば次はdrbdmanageを使って10Gのボリュームを作成する例です。

drbdmanage add-resource centosvol
drbdmanage add-volume centosvol 10G
drbdmanage assign-resource centosvol vm01 vm02

これはLINSTORを使って10Gのボリュームを作成する例です。

linstor resource-definition create centvol
linstor volume-definition create centvol 10G
linstor resource create vm01  centvol --storage-pool pool0 
linstor resource create vm02  centvol --storage-pool pool0 

※データプール名pool0やホスト名vm01、vm02は環境により変わります。

どちらのコマンドでも/dev/drbd100、/dev/drbd1000のような10GBのブロックデバイスが作成されます。

KVMのvirt-managerを起動して新しい仮想マシンを定義します。

既存ディスクイメージをインポート(E)を選択すると次の設定画面が表示されます。

ここで既存ストレージのパスとしてDRBDのブロックデバイスを指定します。さらにOSの種類(T):とバージョンを設定して次の設定に進みます。

割り当てるメモリー量とCPU数を指定します。設定したら次の設定に進みます。

この画面では、名前(N)の変更で名前を設定し、インストールの前に設定をカスタマイズする(U)をチェックしておきます。
DRBDのブロックデバイスにはOSが入っていないので、次のカスタマイズ画面でインストールメディアを指定しないと仮想ゲストはインストールできません。

完了(F)を押して次の画面に進みます。

ハードウェアの追加(D)からIDE CD-ROMデバイスを追加して、インストールするOSのイメージファイルを読み込みます。インストールの開始ボタンを押すと、インストーラが起動してDRBDのブロックデバイスにOSがインストールできます。

インストールが終わると、KVMの仮想環境として普通に使えます。上の図では仮想ゲスト(test)はvm01で動作しており、ストレージはvm01とvm02で冗長化されたボリュームとして存在します。

vm01の/etc/libvirt/qemuに保存された仮想ゲストの設定ファイルをvm02にコピーして、その設定をvm02のKVMに登録すれば、vm01が停止してもvm02でこの仮想ゲストを起動できます。

設定ファイルのコピーには仮想ホストvm01で次のコマンドを実行します。(仮想ゲスト名がtestの場合)

[root@vm01 ~]# cd /etc/libvirt/qemu
[root@vm01 qemu]# scp test.xml vm02:/etc/libvirt/qemu/

コピーした設定ファイルの登録は次のコマンドをvm02で実行します。

[root@vm02 ~]# virsh define /etc/libvirt/qemu/test.xml

仮想ゲストにストレージデバイスを追加したい場合は、drbdmanageやLINSTORコマンドで新たなボリュームを定義して、仮想ゲストの設定すれば、追加したボリュームを利用できます。

今回は2台のサーバを使って仮想ゲストがインストールされたボリュームを冗長化する方法を紹介しました。
サーバの台数を増やし、DRBDクライアントを使ってvm01にデバイスを公開すれば、ストレージは無限に増やせます。この話はまた別の機会に紹介します。