DRBD+iSCSIでサクッと作れる、Windows 10の「自動データ複製&冗長化システム」DRBDの仕組みを学ぶ(11)(2/5 ページ)

» 2016年09月09日 05時00分 公開
[澤田健株式会社サードウェア]

DRBDを使った「Windows環境の自動データ複製&冗長化システム」の構築

 では構築していきましょう。赤枠のLinux部分から始めます(図3)。

photo 図3 Linux部分の構築範囲

(2-1)OS、DRBDのインストールと初期化

 マシンへのOSおよびDRBDのインストールを済ませます。第4回「“Sambaサーバーの冗長化”をDRBDでサクッと実現してしまう方法」を参照しながら、「(4-4)同期状況を確認する」まで実行してください。

 IPアドレスとホスト名は、今回の環境に合わせて変更します。DRBDの同期は「10.0.1.1」と「10.0.1.2」の間で実施しますので間違えずに変更しましょう。一号機、二号機はインタフェースが3つずつ必要になります。

 DRBDを以下のコマンドで停止します。一号機、二号機共に実行します。

# drbdadm down r0

(2-2)「Pacemaker」「Corosync」のインストール

 第5回「障害時にサブサーバへ自動で切り替える“高可用性WordPressシステム”の作り方」を参照していただき、PacemakerとCorosyncをインストールし、さらに一号機と二号機をクラスタとして登録します。

(3)「iSCSIターゲット」のインストール

 iSCSIターゲットをインストールします。一号機、二号機のそれぞれで以下のコマンドを実行します。

# yum install -y targetcli

(4)Pacemakerの設定準備

 Pacemakerでリソースの登録をしていきます。今回は「iSCSITarget」「iSCSILogicalUnit」「portblock」というリソースエージェントを使います。

 設定の前に、GitHubから最新版をダウンロードしてファイルの差し替えを行います。

(4-1)Gitをインストール

 一号機で以下のコマンドを実行します。

# yum install -y git

(4-2)最新版のリソースエージェントを取得

 一号機で以下のコマンドを実行し、最新版のリソースエージェントを取得します。最後のlsコマンドで「resource-agents」ディレクトリがダウンロードされていることを確認します。

# cd /tmp
# git clone https://github.com/ClusterLabs/resource-agents.git
# ls

(4-3)リソースエージェントを配置する

 最新のリソースエージェントを所定のパスに配置します。一号機で以下のコマンドを実行します。上書きを尋ねられた場合は「yes」を選択します。

# cd /tmp/resource-agents/heartbeat 
# cp iSCSI* /usr/lib/ocf/resource.d/heartbeat 
# cp portblock /usr/lib/ocf/resource.d/heartbeat

 一号機から二号機へリソースエージェントをコピーします。

# cd /tmp/resource-agents/heartbeat 
# scp iSCSI* root@10.0.0.2:/usr/lib/ocf/resource.d/heartbeat
# scp portblock root@10.0.0.2:/usr/lib/ocf/resource.d/heartbeat

(5)Pacemakerの設定を行う

 Pacemakerのリソースを登録していきます。詳細は、第6回「障害時にサブサーバへ自動で切り替える“高可用性WordPressシステム”の作り方 後編」の「Pacemakerの設定を行う」を参考にしてください。

 pcsコマンドは原則としてプライマリーサーバ(今回は一号機)のみで実行します。また、コマンドの文字列が複数行にまたがっている箇所については、1行ずつそのままコピー&ペーストでコマンドを投入してください。

 stonithの設定を無効にします。

# pcs property set stonith-enabled=false

 Pacemakerで使われるスコア(stickiness)の設定を行います

# pcs property set default-resource-stickiness=200

 仮想IPアドレス(VIP)のリソースを設定します。

# pcs resource create res_ip ocf:heartbeat:IPaddr2 \
        params ip="192.168.0.150" cidr_netmask="24" \
        op start interval="0" timeout="20" \
        op stop interval="0" timeout="20" \
        op monitor interval="10" timeout="20"

 DRBDのWindows用データ格納先となるリソースを定義します。

# pcs resource create res_drbd_r0 ocf:linbit:drbd \
        params drbd_resource="r0" \
        op start interval="0" timeout="240" \
        op stop interval="0" timeout="120" \
        op monitor interval="20" role="Slave" timeout="20" \
        op monitor interval="10" role="Master" timeout="20"

 マルチステートメントリソース(MS)の設定をします。DRBD以外のリソースは一号機もしくは二号機のどちらかで起動しますが、DRBDはリアルタイムレプリケーション(即時複製)をするために、2つのサーバで常に起動することになります。常に起動するリソースのためにMSの設定で定義します。

# pcs resource master ms_drbd_r0 res_drbd_r0 \
      	master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

 iSCSIターゲットのリソースを設定します。

# pcs resource create iscsi-target iSCSITarget \
        params implementation=lio-t iqn="iqn.2016-04.3ware.co.jp:windows-disk" portals="192.168.0.150:3260" additional_parameters="DefaultTime2Retain=60 DefaultTime2Wait=5" \
        op start interval=0 timeout=60 \
        op stop interval=0 timeout=60 \
        op monitor interval=30s

  • 1行目:pcs resource create iscsi-target iSCSITarget

 「iscsi-target」という名前でリソースを定義し、「iSCSITarget」というリソースエージェントで操作します。

  • 2行目:params implementation=lio-t iqn="iqn.2016-04.3ware.co.jp:windows-disk" portals="192.168.0.150:3260" additional_parameters="DefaultTime2Retain=60 DefaultTime2Wait=5"

 「implementation」でiSCSIターゲットのデーモンの種類を指定し、「target_iqn」でiSCSIターゲットのIQNを定義し、「portals」でiSCSIターゲットのIPアドレスを指定します。

  • 3行目:op start interval=0 timeout=60

 オプションの設定です。このリソースが起動するまでの間隔(interval)を「0」秒として、さらに「60」秒以内に起動できなかったらタイムアウトエラーとする設定にしています。

  • 4行目:op stop interval=0 timeout=60

 同じくオプションの設定です。このリソースが停止するまでの間隔(interval)を「0」秒として、さらに「60」秒以内に停止できなかったらタイムアウトエラーとする設定にしています。

  • 5行目:op monitor interval=30s

 同じくオプションの設定です。このリソースが正常稼働していることを「30」秒に1回確認します。以降、op(オプション)に関する設定が繰り返し出てきます。設定の意味は同じですので、適宜こちらを参照してください。

 続いて、「iSCSILogicalUnit」のリソースを設定します。

# pcs resource create lun iSCSILogicalUnit \
        params implementation=lio-t target_iqn="iqn.2016-04.3ware.co.jp:windows-disk" lun=1 path="/dev/drbd0" \
        op start timeout=60 interval=0 \
        op stop timeout=60 interval=0 \
        op monitor interval=30 timeout=10

  • 1行目:pcs resource create lun iSCSILogicalUnit

 「lun」という名前でリソースを定義し、「iSCSILogicalUnit」というリソースエージェントで操作することを示しています。

  • 2行目:params implementation=lio-t target_iqn="iqn.2016-04.3ware.co.jp:windows-disk" lun=1 path="/dev/drbd0"

 「implementation」と、iSCSIターゲットのデーモンの種類を指定します。「target_iqn」で、iSCSIターゲットのIQNを定義し、「lun」はiSCSIターゲットとして公開するディスク、ここでは「1」を指定します。「path」で、iSCSIターゲットとして公開するディスクのパスを指定します。

 「portblock」のリソースを設定します。

# pcs resource create portbk portblock \
        params ip=192.168.0.150 portno=3260 protocol=tcp action=block \
        op start interval=0 timeout=20 \
        op stop interval=0 timeout=20 \
        op monitor interval=100 timeout=20 \
        meta target-role=Started

  • 1行目:pcs resource create portbk portblock

 「portbk」という名前でリソースを定義し、「portblock」というリソースエージェントで操作します。

  • 2行目:params ip=192.168.0.150 portno=3260 protocol=tcp action=block

 「ip」「portno」「protocol」でポートブロックを実行するIPアドレス、ポート番号、プロトコルを指定し、「action」で動作を指定します。ここでは「ポートをブロックする」設定としています。

 もう1つ「portblock」のリソースを設定します。

# pcs resource create portunbk portblock \
        params ip="192.168.0.150" portno=3260 protocol=tcp action=unblock \
        op start interval=0 timeout=20 \
        op stop interval=0 timeout=20 \
        op monitor interval=103 timeout=20

  • 1行目:pcs resource create portunbk portblock

 「portunbk」という名前でリソースを定義し、「portblock」というリソースエージェントで操作します。

  • 2行目:params ip="192.168.0.150" portno=3260 protocol=tcp action=unblock

 「ip」「portno」「protocol」でポートブロックを実行するIPアドレス、ポート番号、プロトコルを指定し、「action」で動作を指定します。ここでは「ポートのブロックを解除する」設定としています。

 これでリソースの登録は完了です。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。