最も簡単な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にデバイスを公開すれば、ストレージは無限に増やせます。この話はまた別の機会に紹介します。