サイト内の現在位置を表示しています。

クラスタ構成情報ファイル生成コマンドでHAクラスターを構築してみました(Windows/Linux)

CLUSTERPRO オフィシャルブログ ~クラブロ~

はじめに

サーバーやネットワークなどのインフラ環境を構築する方法にInfrastructure as Code(以下、IaC)というインフラの構成や設定をコード化して管理し、環境構築の自動化を行う手法があります。

CLUSTERPROでは、IaCによるインフラ構築を実現するためのコマンドラインツールを用意しています。今回はクラスタ構成情報ファイル生成コマンドを利用して、CLUSTERPROの構成情報をコマンドで生成し、HAクラスターを構築する方法についてご紹介します。

この記事の内容

1. クラスタ構成情報ファイル生成コマンドについて

1.1 クラスタ構成情報ファイル生成コマンドとは

CLUSTERPROでは、Cluster WebUIを利用してHAクラスターを構築するとサーバー内にクラスタ構成情報ファイル(以下、clp.conf)が生成されます。このclp.confをコマンドラインから生成するコマンドがクラスタ構成情報ファイル生成コマンド(clpcfset、clpcfadm.py)です。

クラスタ構成情報ファイル生成コマンドを利用することで、clp.confの生成をコード化することができますので、Cluster WebUIでは時間がかかる構築作業の自動化や手動操作による設定ミスなどを防止することができます。

1.2 clpcfsetとは

clpcfsetは、CLUSTERPRO X 4.3、CLUSTERPRO X 5.0で利用可能なコマンドとなり、Windows、Linuxのどちらにも対応しています。コマンドの詳細に関しては以下をご参照ください。
【参考】
  • CLUSTERPRO X 5.0 > Windows > リファレンスガイド
    →第 9 章 CLUSTERPRO コマンドリファレンス
      →9.30 クラスタ構成情報ファイルを生成する(clpcfset, clpcfadm.pyコマンド)
        →9.30.1 clpcfsetコマンド
  • CLUSTERPRO X 5.0 > Linux > リファレンスガイド
    →第 9 章 CLUSTERPRO コマンドリファレンス
      →9.32 クラスタ構成情報ファイルを生成する(clpcfset, clpcfadm.pyコマンド)
        →9.32.1 clpcfset コマンド

1.3 clpcfadm.pyとは

clpcfadm.pyは、clpcfsetの後継にあたるコマンドです。CLUSTERPRO X 5.0 以降で利用可能なコマンドとなり、Windows、Linuxのどちらにも対応しています。

CLUSTERPRO X 5.0以降のバージョンでは、こちらのコマンドの利用を推奨しており、今後の機能拡充はclpcfadm.pyに対して行われます。コマンドの詳細に関しては以下をご参照ください。

【参考】
  • CLUSTERPRO X 5.1 > Windows > クラスタ構築コマンドリファレンスガイド
    →第 2 章 コマンドリファレンス
      →2.1 clpcfadm.pyコマンド
  • CLUSTERPRO X 5.1 > Linux > クラスタ構築コマンドリファレンスガイド
    →第 2 章 コマンドリファレンス
      →2.1 clpcfadm.pyコマンド

1.4 利用シーン

Cluster WebUIを利用できない場合やサーバー名やIPアドレスなど一部のパラメータは異なるがその他の設定は同じHAクラスターを複数作成する場合などに、クラスタ構成情報ファイル生成コマンドの利用を推奨します。

また、クラスタ構成情報ファイル生成コマンドを利用してclp.confの作成を自動化することで、HAクラスターの構築を含めたIaCの実現につながります。クラスタ構成情報ファイル生成コマンドで利用するパラメータには、クラスタ名やリソース名などの任意で決定可能なパラメータと、ディスクのGUIDなどのように環境構築後に参照が必要なパラメータがあります。

環境構築後に参照が必要なパラメータを取得し、clp.confの作成を自動化する参考例としては、Ansibleを利用したHAクラスターの自動構築に関する以下の記事をご参照ください。

2. HAクラスター構成

クラスタ構成図

本記事では、clpcfadm.pyを利用してオンプレミス環境に「フローティングIPリソースを利用したミラーディスク型のHAクラスター」を構築する手順を紹介します。紹介する手順はWindowsの手順です。WindowsとLinuxでは一部のリソース名やパラメータが異なりますので、Linuxで実行するコマンド例に関してはガイドや参考リンクをご参照ください。

3. HAクラスター構築手順

3.1 オンプレミス環境の設定

以下の設定値で環境を構築します。server01、server02のCLUSTERPRO XやIISのインストール方法については省略します。

■OS、CLUSTERPRO

・Windows Server 2022
・CLUSTERPRO X 5.1 for Windows(内部バージョン:13.10)

■ネットワーク・ハードウェア

・操作用Client
  - IPアドレス:192.168.0.150
・server01
  - IPアドレス:192.168.0.151、192.168.1.151
  - ハードディスク(Eドライブ、Fドライブ、ミラーディスク用):5GB
・server02
  - IPアドレス:192.168.0.152、192.168.1.152
  - ハードディスク(Eドライブ、Fドライブ、ミラーディスク用):5GB

3.2 clpcfadm.pyによるclp.confの生成

構築するHAクラスターの構成は以下の通りです。

■フェールオーバーグループ(failover1)

・フローティングIPリソース(fip1)
  - IPアドレス:192.168.0.153
・ミラーディスクリソース(md1)
  - クラスタパーティション:E:
  - データパーティション:F:
・サービスリソース(service1)
  - 対象サービス:W3SVC ※IISサービス名

■監視

・フローティングIP監視リソース(fipw1)
  - 監視対象:fip1
  - 回復対象:fip1

・ユーザ空間監視リソース(userw)
  - 監視対象:- ※ユーザ空間監視リソースは監視対象の指定不要
  - 回復対象:LocalServer

・ミラーディスク監視リソース(mdw1)
  - 監視対象:md1
  - 回復対象:md1

・サービス監視リソース(servicew1)
  - 監視対象:service1
  - 回復対象:service1

リソースのタイムアウトや監視のインターバルなどのパラメータはデフォルト値を利用しています。各種パラメータの設定値を変更する場合のコマンド例に関してはガイドや参考リンクをご参照ください。

clpcfadm.pyでclp.confを生成する手順は以下の通りです。

  • 1.
    server01、server02にそれぞれログインし、コマンドプロンプトを管理者権限で起動します。
  • 2.
    以下のコマンドを入力してクラスタパーティション、データパーティションで利用するドライブのGUIDを確認します。確認したGUIDはclpcfadm.py実行時に利用します。

clpdiskctrl get guid E:
clpdiskctrl get guid F:

  • 3.
    server01にログインし、コマンドプロンプトを管理者権限で起動します。
  • 4.
    clp.confは、clpcfadm.pyを実行するフォルダ配下に生成されます。今回は「C:\Users\Administrator\」でclpcfadm.pyを実行するため、対象のフォルダに移動します。

cd C:\Users\Administrator\

  • 5.
    以下のコマンドを実行します。変数のCLUSTERPARTITIONGUID、DATAPARTITIONGUIDには事前に確認したドライブのGUIDを指定します。

rem 変数を定義
set CLUSTERNAME=cluster1
set FAILOVERNAME=failover1
set SERVER1NAME=server01
set SERVER2NAME=server02
set SERVER1IPADDRESS1=192.168.0.151
set SERVER1IPADDRESS2=192.168.1.151
set SERVER2IPADDRESS1=192.168.0.152
set SERVER2IPADDRESS2=192.168.1.152
set FLOATINGIP=192.168.0.153
set CLUSTERPARTITION=E:
set DATAPARTITION=F:
set SERVER1CLUSTERPARTITIONGUID=12345678-0000-0000-0000-100000000000
set SERVER1DATAPARTITIONGUID=12345678-0000-0000-0000-104000000000
set SERVER2CLUSTERPARTITIONGUID=23456789-0000-0000-0000-100000000000
set SERVER2DATAPARTITIONGUID=23456789-0000-0000-0000-104000000000
set TARGETSERVICE=W3SVC

rem クラスターの追加
clpcfadm.py create %CLUSTERNAME% SJIS

rem サーバーの追加
clpcfadm.py add srv %SERVER1NAME% 0
clpcfadm.py add srv %SERVER2NAME% 1

rem インタコネクトの追加
clpcfadm.py add device %SERVER1NAME% lan 0 %SERVER1IPADDRESS1%
clpcfadm.py add device %SERVER2NAME% lan 0 %SERVER2IPADDRESS1%
clpcfadm.py add device %SERVER1NAME% lan 1 %SERVER1IPADDRESS2%
clpcfadm.py add device %SERVER2NAME% lan 1 %SERVER2IPADDRESS2%

rem MDCの追加
clpcfadm.py add device %SERVER1NAME% mdc 0 %SERVER1IPADDRESS1%
clpcfadm.py add device %SERVER2NAME% mdc 0 %SERVER2IPADDRESS1%
clpcfadm.py add device %SERVER1NAME% mdc 1 %SERVER1IPADDRESS2%
clpcfadm.py add device %SERVER2NAME% mdc 1 %SERVER2IPADDRESS2%

rem カーネルモードLANハートビートの追加
clpcfadm.py add hb lankhb 0 0
clpcfadm.py add hb lankhb 1 1

rem failoverグループの追加
clpcfadm.py add grp failover %FAILOVERNAME%

rem フローティングIPリソースの追加
clpcfadm.py add rsc %FAILOVERNAME% fip fip1
clpcfadm.py mod -t resource/fip@fip1/parameters/ip --set %FLOATINGIP%

rem ミラーディスクリソースの追加
clpcfadm.py add rsc %FAILOVERNAME% md md1

rem クラスターパーティション、データパーティションの追加
clpcfadm.py mod -t resource/md@md1/parameters/volumemountpoint --set %DATAPARTITION%
clpcfadm.py mod -t resource/md@md1/server@%SERVER1NAME%/parameters/volumeguid --set %SERVER1DATAPARTITIONGUID% --nocheck
clpcfadm.py mod -t resource/md@md1/server@%SERVER2NAME%/parameters/volumeguid --set %SERVER2DATAPARTITIONGUID% --nocheck
clpcfadm.py mod -t resource/md@md1/parameters/cpvolumemountpoint --set %CLUSTERPARTITION%
clpcfadm.py mod -t resource/md@md1/server@%SERVER1NAME%/parameters/cpvolumeguid --set %SERVER1CLUSTERPARTITIONGUID% --nocheck
clpcfadm.py mod -t resource/md@md1/server@%SERVER2NAME%/parameters/cpvolumeguid --set %SERVER2CLUSTERPARTITIONGUID% --nocheck

rem ミラーディスクリソースで使用するMDCの追加
clpcfadm.py mod -t resource/md@md1/parameters/netdev@0/device --set 400 --nocheck
clpcfadm.py mod -t resource/md@md1/parameters/netdev@0/mdcname --set mdc1 --nocheck
clpcfadm.py mod -t resource/md@md1/parameters/netdev@0/priority --set 1 --nocheck
clpcfadm.py mod -t resource/md@md1/parameters/netdev@1/device --set 401 --nocheck
clpcfadm.py mod -t resource/md@md1/parameters/netdev@1/mdcname --set mdc2 --nocheck
clpcfadm.py mod -t resource/md@md1/parameters/netdev@1/priority --set 2 --nocheck

rem サービスリソースの追加
clpcfadm.py add rsc %FAILOVERNAME% service service1
clpcfadm.py mod -t resource/service@service1/parameters/name --set %TARGETSERVICE%

rem フローティングIP監視リソースの追加
clpcfadm.py add mon fipw fipw1
clpcfadm.py mod -t monitor/fipw@fipw1/target --set fip1
clpcfadm.py mod -t monitor/fipw@fipw1/relation/name --set fip1 --nocheck
clpcfadm.py mod -t monitor/fipw@fipw1/relation/type --set rsc --nocheck

rem ユーザ空間監視リソースの追加
clpcfadm.py add mon userw userw
clpcfadm.py mod -t monitor/userw@userw/relation/name --set LocalServer --nocheck
clpcfadm.py mod -t monitor/userw@userw/relation/type --set cls --nocheck

rem ミラーディスク監視リソースの追加
clpcfadm.py add mon mdw mdw1
clpcfadm.py mod -t monitor/mdw@mdw1/parameters/object --set md1
clpcfadm.py mod -t monitor/mdw@mdw1/relation/name --set md1 --nocheck
clpcfadm.py mod -t monitor/mdw@mdw1/relation/type --set rsc --nocheck

rem サービス監視リソースの追加
clpcfadm.py add mon servicew servicew1
clpcfadm.py mod -t monitor/servicew@servicew1/target --set service1
clpcfadm.py mod -t monitor/servicew@servicew1/relation/name --set service1 --nocheck
clpcfadm.py mod -t monitor/servicew@servicew1/relation/type --set rsc --nocheck

上記コマンドの実行が完了したら、clp.confの生成は完了です。コマンドのサンプルは以下のリンクよりダウンロード可能です。サンプルを利用する場合はファイル名の「_」を「.」に変更します。また、サンプルは動作を保証するものではありません。

3.3 clp.confの反映

生成したclp.confをサーバーに反映する手順は以下の通りです。

  • 1.
    server01にログインし、コマンドプロンプトを管理者権限で起動します。
  • 2.
    以下のコマンドでHAクラスターの状態を確認します。

clpstat -s

HAクラスターを未構築の場合は、以下のメッセージが表示されます。HAクラスターを構築済みの場合でserver01、server02がOnlineの場合はHAクラスターを停止してください。

The cluster is not created.

  • 3.
    状態を確認後、以下のコマンドで構成情報を反映します。

clpcfctrl --push -x C:\Users\Administrator\

以下のように「succeeded」と表示されたら反映は成功です。

file delivery to server 192.168.0.151 succeeded.
file delivery to server 192.168.0.152 succeeded.
clp.conf delivered.
To apply the changes you made, restart the CLUSTERPRO Node Manager service.
To apply the changes you made, restart the CLUSTERPRO Web Alert service.
To apply the changes you made, restart the CLUSTERPRO Manager service.
To apply the changes you made, restart the CLUSTERPRO Information Base service.
To apply the changes you made, restart the CLUSTERPRO API service.

  • 4.
    反映コマンド実行後に表示された各サービスを以下のコマンドで再起動します。

clpcl -r -a --nm
clpcl -r -a --alert
clpcl -r -a --web
clpcl -r -a --ib
clpcl -r -a --api

それぞれ「Command succeeded」と表示されることを確認します。

Start server01 : Command succeeded.
Start server02 : Command succeeded.

※Linuxの場合は、各サービスの再起動後、以下のコマンドでミラーエージェントのサービスを起動してください。

clpcl -s -a --md

  • 5.
    以下のコマンドでCLUSTERPROサービスを起動します。

clpcl -s -a

「Command succeeded」と表示されることを確認します。

Start server01 : Command succeeded.
Start server02 : Command succeeded.

  • 6.
    以下のコマンドでHAクラスターの状態を確認します。

clpstat -s

server01、server02のステータスが「Online」になっており、配下のリソースのステータスが「Normal」となっていることを確認します。「Online」になっていない場合は時間をおいてから再度コマンド実行を試します。ステータスが「Error」や「Caution」の場合は、clp.confの設定値に誤りがないか確認します。

 ========================  CLUSTER STATUS  ===========================
  Cluster : cluster1
  <server>
   *server01 ........: Online
      lankhb1        : Normal           LAN Heartbeat
      lankhb2        : Normal           LAN Heartbeat
    server02 ........: Online
      lankhb1        : Normal           LAN Heartbeat
      lankhb2        : Normal           LAN Heartbeat
  <group>
    failover1 .......: Online
      current        : server01
      fip1           : Online
      md1            : Online
      service1       : Online
  <monitor>
    fipw1            : Normal
    mdw1             : Normal
    servicew1        : Normal
    userw            : Normal
 =================================================================

4. 動作確認

以下の手順でHAクラスターが正常に構築できているかを確認します。

  • 1.
    操作用Client上でWebブラウザを起動し、以下のURLにアクセスしてCluster WebUIを表示します。

http://<server01のIPアドレス>:29003

  • 2.
    Cluster WebUIのステータス画面から、server01でフェールオーバーグループ(failover1)が起動していること、[サーバ]、[グループ]、[モニタ]が正常に起動していることを確認します。
  • 3.
    server01にログインして、データパーティション(F:)直下にHTMLファイルを配置します。
  • 4.
    IISを起動し、データパーティション(F:)直下のHTMLファイルをWebサイトとして追加します。
  • 5.
    操作用Client上のWebブラウザからフローティングIPリソース(fip1)のIPアドレスにアクセスし、server01のHTMLファイルがWebページとして表示されることを確認します。

http://<フローティングIPリソース(fip1)のIPアドレス>

  • 6.
    Cluster WebUIから、フェールオーバーグループ(failover1)をserver01からserver02に手動で移動します。
  • 7.
    フェールオーバーグループ(failover1)がserver02側に移動していること、[サーバ]、[グループ]、[モニタ]が正常に起動していることをCluster WebUIで確認します。
  • 8.
    server02にログインして、データパーティション(F:)直下にHTMLファイルが保存されていることを確認し、記載内容を変更します。
  • 9.
    IISを起動し、データパーティション(F:)直下のHTMLファイルをWebサイトとして追加します。
  • 10.
    操作用ClientのWebブラウザからフローティングIPリソース(fip1)のIPアドレスにアクセスし、server02のHTMLファイルがWebページとして表示されることを確認します。

http://<フローティングIPリソース(fip1)のIPアドレス>

上記の動作確認により、フェールオーバーの前後で、フローティングIPアドレス経由でHAクラスターに接続できること、ディスクがミラーリングされていることを確認できます。

まとめ

今回はCLUSTERPROのclp.confを生成するclpcfadm.pyコマンドを利用してオンプレミス環境でのHAクラスター構築を試してみました。本記事で紹介したコマンドを応用することで、Ansibleなどの構成管理ツールでHAクラスター構築を自動化し、IaCの実現につなげることができます。

本記事の構成をご検討の際は、CLUSTERPROのpopup試用版を用いて検証した後、ご提案・構築ください。

参考

CLUSTERPRO導入支援サービスではコンフィグコード化支援も行っております。クラスタ構成情報ファイルの自動生成に関するご要望がありましたら、popup関連サービスの導入支援サービスの窓口までお問い合わせください。

お問い合わせ

本記事に関するお問い合わせは、popupお問い合わせ窓口までお問い合わせください。
  • 本記事で紹介しているスクリプトの内容についてのお問い合わせ、および、お客様環境に合わせたカスタマイズにつきましてはCLUSTERPRO導入支援サービスにて承っておりますので、上記窓口の"ご購入前のお問い合わせ"フォームまでお問い合わせください。
  • CLUSTERPRO以外のソフトウェアのサポートについてはそれぞれの購入元にお問い合わせください。