DRBD9のdocker連携機能の紹介

DRBD9のDocker Volumeプラグイン

 

docker docsを見ると確認できるのですが、DRBD9はdockerのボリュームプラグインを提供しています。

Dockerはソフトウェアコンテナ内のアプリケーションのデプロイメントを自動化するオープンソースソフトウェアです。(docker自体の詳細な説明は割愛いたします)

dockerはストレージ利用については課題がありました。コンテナを停止すると、基本的にはデータがすべて消えてしまう点です。
一応dockerではホスト上のディレクトリをコンテナのストレージに使用することで永続的なストレージとする事が可能です。しかしこれではコンテナをこのホストとは別のホストで起動する際にはデータにアクセスができないなどデータ共有においては問題となります。また実運用するのであれば可用性を上げるためデータ冗長化もしておきたいでしょう。

そこで、Doker1.8以降ではVolumeプラグイン機能が提供されています。このVolumeプラグインとしてDRBDをご利用いただけます。本記事ではこのDRBD Dockerプラグインについてご紹介いたします。

本プラグインを使うことで、DockerコマンドでDRBDのボリュームを自動的に作成することが可能になります。

※DRBD8は未対応で、DRBD9からの対応となります。

利用イメージは以下のようになります。

続きを読む “DRBD9のdocker連携機能の紹介”

drbdtopがやってきた!!

drbdtopはDRBDの2017の夏にリリースされた新しいツールです。

drbdtopでは、DRBDのリソースをリアルタイムで監視したり、DRBDリソースに対するいろいろなアクションを実行できます。これまでのDRBDでは管理コマンドdrbdadmを実行して行っていた操作、例えばリソースをプライマリロールに切り替えたり、リソースを切断する等がdrbdtopで行えます。

drbdtopはすでにLINBIT認定バイナリのリポジトリに登録されているので、RHEL、CentOSではyumコマンドで簡単にインストールできます。

インストールが終わったら早速実行してみましょう。

次のような画面が表示されます。

r0はDRBDのリソース名でこれがPrimaryの状態で正常に動作していることがわかります。複数のリソースが存在する場合はこのリストにもリソースが複数並びます。

リソースは[j]/[k]キーあるいはカーソルキーで選ぶことができ、選択した状態で[Enter]キーを押すと詳細情報の表示画面に切り替わります。次の画面はr0リソースの詳細情報の表示画面です。

この画面表示時に[s]、[d]、[m]、[i]などのキーを押すといろいろな情報の表示ができます。ここでおすすめなのは[d]の”detailed status”と[i]の”inSync”の表示です。

“detailed status”
“inSync”

drbdtopではDRBD間の通信を切ったり、スプリットブレインになったDRBDのリソースを復旧することもできます。

リソースにカーソルがあたった状態で、[c]のキーを押すと、画面の下に並んだコマンド一覧が次のように変わります。

[d]キーを押すと、相手のノードのDRBDとの通信が切れます。[c]キーを押すと通信が再開します。[m]キーを押すとスプリットブレインになった時にデータを破棄するノードに設定することができます。

このようにコマンドで実行していたDRBDの操作が、簡単なキャラクターベースのGUIで可能になりました。関連ツールの開発と改良は今後も続けられ、DRBDはますます便利になっていきます。

 

Pacemaker boothを使った自動フェイルオーバーDRシステムの構成

チケット手動管理型の4ノードDRクラスタの課題

サードウェアではDRBD 8系を使った2ノードのHAクラスタを2拠点に設置したDR(ディザスタリカバリ)システム構成の手順書を公開しています。

チケット手動管理型4ノードディザスタリカバリクラスタ構築手順書

上記の構成では拠点間でのアクティブ/スタンバイ切り替えは「チケット」の付与によって行っています。

チケット:リソースと依存関係を持たせ、チケットの有無でリソースの起動・停止を制御することができます。このチケットを使用すると、通常の死活監視が行えないWAN環境でも、サービスの切り替えやフェイルオーバが可能になります。

しかし管理上、以下の2つの問題点がありました。

  1. チケットの管理は人間系の判断によって行うか、または独自にスクリプトを作成して管理する必要がある
  2. サイトの切り替えが起きるとIPアドレスが変更されるため、外部からサービスへアクセスするにはDNSサービスの切り替え等を行う必要がある

これらの問題点は、それぞれ次のように解決可能です!

  1. Pacemakerのアドオン機能であるBoothを使用しチケットの自動割り振りを行う
  2. マネージドDNSサービスを使用する(DynDNSの使用)

続きを読む “Pacemaker boothを使った自動フェイルオーバーDRシステムの構成”

DRBD 9.0.8, DRBD Utils 9.0.0がリリースされました

6月1日にdrbd-utilsのバージョン9.0.0がリリースされました。また、6月20日にDRBDバージョン9の最新版であるdrbd-9.0.8がリリースされました。その他、DRBD 8.4.10、drbdmanage 0.99.5も今月リリースされています。本記事では、これらの最新バージョンの特徴や意義を紹介します。

続きを読む “DRBD 9.0.8, DRBD Utils 9.0.0がリリースされました”

DRBDのon-io-errorオプションにpass-onを指定すべきではない理由

on-io-errorの3つのオプション

DRBDのon-io-errorオプションは、下位デバイスにIOエラーがあった際の挙動を制御します。
on-io-errorオプションが使用されるのは、DRBDでレプリケーションするディスクに故障があり、書き込み/読み込みエラーが発生した場合です。この時に行う処理を指定します。

指定できる値は、以下の3つです。

  • pass_on
    ノードはディスクのステータスをInconsistentにし、I/Oエラーを起こしたブロックに対応するビットマップにマークをつける。そして、リモートのノード上で入出力を再度行う。
  • call-local-io-error
    ハンドラスクリプトの”local-io-error”を呼び出して実行する。
  • detach
    低レベルデバイスを切り離して、ディスクレスモードで処理を続行する。

ユーザーズガイドにはこのように書かれていますので、どれを使っても問題ないと感じると思います。
しかし、実際にはpass_onを使用することは強く非推奨です。

pass_onはなぜ非推奨なのか

続きを読む “DRBDのon-io-errorオプションにpass-onを指定すべきではない理由”