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

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

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

はじめに

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

CLUSTERPROでは、IaCによるインフラ構築を実現するためのコマンドラインツールを用意しています。今回は、オンプレミス環境(Windows)で構築したクラスタ構成情報ファイルをAmazon Web Services(以降、AWS)環境で利用できるように変更する方法についてご紹介します。

クラスタ構成情報ファイル生成コマンドの解説や基本的な利用方法について、Linux環境における構築手順は以下をご参照ください。

この記事の内容

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

本記事では、オンプレミス環境で作成したHAクラスターのクラスタ構成情報ファイル(以降、clp.conf)から、AWS環境で動作するHAクラスターのclp.confを作成する手順を紹介します。
クラスタ構成情報ファイル生成コマンド(以降、clpcfadm.py)の詳細に関しては以下をご参照ください。

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

2. HAクラスター構成と構成情報の変更点

変更元となるオンプレミス環境と変更先となるAWS環境のHAクラスター構成は以下のとおりです。AWS環境ではフローティングIPリソースは利用できないため、AWS仮想IPリソースを利用したHAクラスター構成に変更します。AWS環境でのHAクラスターの構築に関しては、以下のガイドもご参照ください。

【参考】
  • Windows > クラウド > Amazon Web Services > CLUSTERPRO X 5.1 向け HAクラスタ 構築ガイド

環境の主な変更点は以下のとおりです。変更点以外のパラメータや利用しているOSは原則としてオンプレミス環境とAWS環境で共通とします。

  • AWS環境では10.0.0.0/16のIPアドレス範囲からクラスターにアクセスするため、インタコネクトおよびMDCのIPアドレスを修正し、不要になったIPを削除
  • フローティングIPリソースはAWS上では利用できないため削除
  • フローティングIPリソースの削除にあわせてフローティングIP監視リソースを削除
  • フローティングIPリソースの代わりにAWS仮想IPリソースを新規追加
  • AWS仮想IPリソースを監視するためにAWS仮想IP監視リソースを新規追加
  • オンプレミス環境からAWS環境に移行することでディスクのGUIDが変更されるため、ミラーディスクリソースのGUIDの値を変更

オンプレミス環境のclp.confから変更する項目の一覧は以下のとおりです。なお、オンプレミス環境で構築したHAクラスターのclp.conf(ZIP形式)は、オンプレミス環境のCluster WebUIに設定モードでアクセスし、「設定のエクスポート」を実行することで入手可能です。

 項目名  リソース名  変更内容
 クラスター  cluster1  変更なし
 サーバー  server01,server02  変更なし
 インタコネクト  lan0  IPアドレスを変更
 lan1  削除
 ミラーディスクコネクト(MDC)  mdc0  IPアドレスを変更
 mdc1  削除
 LANハートビート  lankhb0  変更なし
 lankhb1  削除
 フェールオーバーグループ  failover1  変更なし
 フローティングIPリソース  fip1  削除
 AWS仮想IPリソース  awsvip1  新規追加
 ミラーディスクリソース  md1  ミラーディスクのGUIDを変更
 サービスリソース  service1  変更なし
 フローティングIP監視リソース  fipw1  削除
 AWS仮想IP監視リソース  awsvipw1  新規追加
 ミラーディスク監視リソース  mdw1  変更なし
 サービス監視リソース  servicew1  変更なし
 ユーザ空間監視リソース  userw1  変更なし

3. HAクラスター移行手順

3.1 事前準備

オンプレミス環境からAWS環境への移行時にCLUSTERPROのバージョンアップも行う場合は、clpcfadm.pyを実行する前にclp.confを変換する必要があります。CLUSTERPRO X 5.x向けのclp.confの変換にはクラスタ構成情報変換コマンドを実行します。コマンドの利用方法については以下をご参照ください。

【参考】
  • CLUSTERPRO X 5.1 > Windows > インストール&設定ガイド
    →第 4 章 CLUSTERPRO をインストールする
      →4.2.3 旧バージョンのCLUSTERPRO Server からアップグレードするには

オンプレミス環境のclp.confから変更する項目であるAWS仮想IPリソースで利用するVPC IDとENI ID、ミラーディスクリソースで利用するGUIDを事前に確認します。確認した内容はコマンド実行時に利用します。確認方法は以下のとおりです。

  • 1.
    AWSマネジメントコンソールにアクセスし、サービスからVPCを選択します。
  • 2.
    左メニューからお使いのVPCを選択し、表示されるVPCの中から利用するVPC IDを確認します。
  • 3.
    AWSマネジメントコンソールのサービスからEC2を選択します。
  • 4.
    左メニューからネットワークインターフェースを選択し、表示されるネットワークインターフェースの中から利用するネットワークインターフェース ID(ENI ID)を確認します。
  • 5.
    server01、server02にそれぞれログインし、コマンドプロンプトを管理者権限で起動します。
  • 6.
    以下のコマンドを入力してクラスタパーティション、データパーティションで利用するドライブのGUIDを確認します。

clpdiskctrl get guid E:
clpdiskctrl get guid F:

3.2 clpcfadm.pyによるclp.confの変更

clpcfadm.pyでclp.confを変更する手順は以下のとおりです。

  • 1.
    server01にログインし、コマンドプロンプトを管理者権限で起動します。
  • 2.
    オンプレミス環境で作成したclp.confをAWS環境にコピーします。今回は「C:\Users\Administrator\」にclp.confを格納します。
  • 3.
    clpcfadm.pyを実行するため、clp.confを格納したフォルダーに移動します。

cd C:\Users\Administrator\

  • 4.
    clpcfadm.pyコマンドのmodオプションを実行し、オンプレミス環境で作成したclp.confがAWS環境でも読み書き可能か確認します。clp.confを正しく読み込めていれば、clp.conf内の設定値が一覧で表示されます。

C:\Users\Administrator>clpcfadm.py mod -t
all
cluster
group@failover1
heartbeat
messages
monitor
pm
resource
rm
server@server01
server@server02
servergroup
webalert
webmgr

コマンドの実行結果に「Invalid config file」と表示された場合は、clp.confを正しく読み取れていません。

C:\Users\Administrator>clpcfadm.py mod -t
Invalid config file. Use the 'create' option.

「Invalid config file」メッセージが表示された場合は以下の項目の確認、または、Cluster WebUIの「設定のエクスポート」を実行して再度clp.confを入手してください。

  • clp.confの設定値が文字化けしていないかどうか
  • clp.confの設定値にマルチバイト文字が含まれていないかどうか
  • clp.confの設定値の入力ミス、XMLタグの閉じ忘れなど記載に誤りがないかどうか
  • 5.
    以下のコマンドを実行してclp.confを変更します。変数を定義する部分のVPCID、ENIID、CLUSTERPARTITIONGUID、DATAPARTITIONGUIDに関しては事前準備で確認した値を設定してください。

rem 変数を定義
set FAILOVERNAME=failover1
set SERVER1NAME=server01
set SERVER2NAME=server02
set SERVER1IPADDRESS1=10.0.110.100
set SERVER2IPADDRESS1=10.0.120.100
set AWSVIP=172.16.0.1
set VPCID=vpc-1234567890abcdefg
set SERVER1ENIID=eni-1234567890abcdefg
set SERVER2ENIID=eni-abcdefg1234567890
set SERVER1CLUSTERPARTITIONGUID=12345678-0000-0000-0000-100000000000
set SERVER1DATAPARTITIONGUID=56781234-0000-0000-0000-104000000000
set SERVER2CLUSTERPARTITIONGUID=abcdefgh-0000-0000-0000-100000000000
set SERVER2DATAPARTITIONGUID=efghabcd-0000-0000-0000-104000000000

rem インタコネクト(lan0)の修正
clpcfadm.py mod -t server@%SERVER1NAME%/device@0/info --set %SERVER1IPADDRESS1%
clpcfadm.py mod -t server@%SERVER2NAME%/device@0/info --set %SERVER2IPADDRESS1%

rem インタコネクト(lan1)の削除
clpcfadm.py del device %SERVER1NAME% 1
clpcfadm.py del device %SERVER2NAME% 1

rem MDC(mdc0)の修正
clpcfadm.py mod -t server@%SERVER1NAME%/device@400/info --set %SERVER1IPADDRESS1%
clpcfadm.py mod -t server@%SERVER2NAME%/device@400/info --set %SERVER2IPADDRESS1%
clpcfadm.py mod -t server@%SERVER1NAME%/device@400/mdc/info --set %SERVER1IPADDRESS1%
clpcfadm.py mod -t server@%SERVER2NAME%/device@400/mdc/info --set %SERVER2IPADDRESS1%

rem MDC(mdc1)の削除
clpcfadm.py del device %SERVER1NAME% 401
clpcfadm.py del device %SERVER2NAME% 401
clpcfadm.py mod -t resource/md@md1/parameters/netdev@1/device --delete
clpcfadm.py mod -t resource/md@md1/parameters/netdev@1/mdcname --delete
clpcfadm.py mod -t resource/md@md1/parameters/netdev@1/priority --delete

rem LANハートビート(lankhb1)の削除
clpcfadm.py del hb lankhb 1

rem フローティングIPリソース(fip1)の削除
clpcfadm.py del rsc %FAILOVERNAME% fip fip1

rem AWS仮想IPリソース(awsvip1)の追加
clpcfadm.py add rsc %FAILOVERNAME% awsvip awsvip1

rem AWS仮想IPリソースに仮想IPアドレスを追加
clpcfadm.py mod -t resource/awsvip@awsvip1/parameters/ip --set %AWSVIP%

rem AWS仮想IPリソースに共通のVPCとENIの値を追加
clpcfadm.py mod -t resource/awsvip@awsvip1/parameters/vpcid --set %VPCID%
clpcfadm.py mod -t resource/awsvip@awsvip1/parameters/eniid --set %SERVER1ENIID%

rem AWS仮想IPリソースにserver01およびserver02のVPCとENIの値を追加
clpcfadm.py mod -t resource/awsvip@awsvip1/server@%SERVER1NAME%/parameters/vpcid --set %VPCID% --nocheck
clpcfadm.py mod -t resource/awsvip@awsvip1/server@%SERVER1NAME%/parameters/eniid --set %SERVER1ENIID% --nocheck
clpcfadm.py mod -t resource/awsvip@awsvip1/server@%SERVER2NAME%/parameters/vpcid --set %VPCID% --nocheck
clpcfadm.py mod -t resource/awsvip@awsvip1/server@%SERVER2NAME%/parameters/eniid --set %SERVER2ENIID% --nocheck

rem クラスターパーティション、データパーティションのGUIDを変更
clpcfadm.py mod -t resource/md@md1/server@%SERVER1NAME%/parameters/cpvolumeguid --set %SERVER1CLUSTERPARTITIONGUID%
clpcfadm.py mod -t resource/md@md1/server@%SERVER1NAME%/parameters/volumeguid --set %SERVER1DATAPARTITIONGUID%
clpcfadm.py mod -t resource/md@md1/server@%SERVER2NAME%/parameters/cpvolumeguid --set %SERVER2CLUSTERPARTITIONGUID%
clpcfadm.py mod -t resource/md@md1/server@%SERVER2NAME%/parameters/volumeguid --set %SERVER2DATAPARTITIONGUID%

rem フローティングIP監視リソース(fipw1)の削除
clpcfadm.py del mon fipw fipw1

rem AWS仮想IP監視リソース(awsvipw1)の追加
clpcfadm.py add mon awsvipw awsvipw1
clpcfadm.py mod -t monitor/awsvipw@awsvipw1/target --set awsvip1
clpcfadm.py mod -t monitor/awsvipw@awsvipw1/relation/type --set rsc
clpcfadm.py mod -t monitor/awsvipw@awsvipw1/relation/name --set awsvip1

上記コマンドの実行が完了したら、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 10.0.110.100 succeeded.
file delivery to server 10.0.120.100 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.

 
  • 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
    server02 ........: Online
      lankhb1        : Normal           LAN Heartbeat
  <group>
    failover1 .......: Online
      current        : server01
      awsvip1        : Online
      md1            : Online
      service1       : Online
  <monitor>
    awsvipw1         : Normal
    mdw1             : Normal
    servicew1        : Normal
    userw1           : Normal
 =====================================================================

4. 動作確認

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

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

http://<AWS仮想IPリソースで設定したIPアドレス>:29003

  • 2.
    Cluster WebUIのステータス画面から、server01でフェールオーバーグループ(failover1)が起動していること、[サーバ]、[グループ]、[モニタ]が正常に起動していることを確認します。
  • 3.
    Cluster WebUIから、フェールオーバーグループ(failover1)をserver01からserver02に手動で移動します。
  • 4.
    フェールオーバーグループ(failover1)がserver02側に移動していること、[サーバ]、[グループ]、[モニタ]が正常に起動していることをCluster WebUIで確認します。
フェールオーバーが正常にできることを確認することで、既存システムのオンプレミス環境からAWS環境への移行完了を確認できました。

まとめ

今回はclpcfadm.pyコマンドを利用して、オンプレミス環境で構築したクラスタ構成情報ファイルをAWS環境で利用できるように変更してみました。本記事で紹介したコマンドを応用することで、AnsibleやTerraformなどの構成管理ツールでクラスター構築を自動化し、IaCの促進につなげることができます。

参考

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

お問い合わせ

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