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

【2026年版】AWSにおけるHULFTのHAクラスター構築 ~インターネット経由でファイル転送~ (Windows)

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

はじめに

Amazon Web Services(以降、AWS)において、ファイル転送ミドルウェアであるHULFTを冗長化する手順をご紹介します。 popup昨日公開した記事 はファイルを送る配信側ホストとファイルを受け取る集信側ホストを同じVPC内に配置するパターンでしたが、この記事では配信側ホストをVPC外に配置するパターンを扱います。
VPC外に配信側ホストを配置することで、オンプレミス環境や集信側とは異なるVPCから、VPC内の集信側ホストへファイル転送を行う構成が実現可能となります。

本記事は、HULFT8およびCLUSTERPRO X 3.3を使用していたpopup以前の記事について、最新バージョンであるHULFT10およびCLUSTERPRO X 5.3に対応した内容へ刷新した記事となります。CLUSTERPROに関しては、管理GUIがWebManagerからCluster WebUIへ変更されたこともあり、両製品の最新環境に合わせて改訂を行っています。

HULFT(ハルフト)は、企業活動において発生する売上データや顧客情報、ログデータなど、ITシステムに蓄積されたデータの送受信を行うファイル連携ミドルウェアです。業務システムの基盤として使えるように、文字コード変換を始めとする多彩な機能を備え、サーバーやプラットフォーム、コード体系などが異なる様々なファイルを、業界標準のTCP/IPプロトコルを使って安全、確実に送り届けます。

この記事の内容

1. HAクラスター構成

HULFTでファイルを転送するには、ファイルを送る配信側ホストとファイルを受け取る集信側ホストそれぞれにHULFTをインストールします。今回は配信側ホストをオンプレミス環境(VPC外)に集信側ホストをVPC内に配置し、集信側のホストを冗長化します。HULFTでは転送相手となるホストをホスト名で管理する必要があるため、配信側ホストから集信側ホストへの転送はAWS DNSリソースによりAmazon Route 53のパブリックホストゾーンのAレコードのルーティング先サーバ(IPアドレス)を切り替えることで実現します。

なお、本記事ではAmazon Route 53にて予めパブリックなドメインの取得が完了していることを前提として、「DNS名制御によるHAクラスター」構成を利用していますが、Amazon Route 53のパブリックホストゾーン用ドメインを準備することが難しい場合は、AWS Elastic IPリソースを利用した「EIP制御によるHAクラスター」構成も利用可能です。(※こちらも動作確認済みです。)配信側ホストから集信側ホストへの転送は、CLUSTERPROのAWS Elastic IPリソースがElastic IPアドレスをクラスターサーバー間で付け替えることで実現します。フェールオーバー時も宛先 IPアドレスが変わらないため、配信側ホストは常に同じ IPアドレス宛てにファイル転送を行うことが可能です。

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

2.1. DNS名制御によるHAクラスターの作成

HULFTでは転送相手となるホストをIPアドレスではなく、ホスト名で管理しています。そこで配信側ホストが、インターネット経由で集信側ホストにホスト名でアクセスできるようにAmazon Route 53のホストゾーンを設定します。今回は、パブリックホストゾーンを「clusterpro.net」という名称で作成しました。 また、各EC2インスタンスに静的なパブリックIPv4アドレスを割り当てるためにElastic IPアドレスを関連付けします。
HULFTを冗長化する際のベースとなる「DNS名制御によるHAクラスター」を作成します。VPC及びCLUSTERPROの構成は以下の通りです。今回は、CLUSTERPROのフェールオーバーグループには「AWS DNSリソース」と「ミラーディスクリソース」のみを登録した構成としています。

  • VPC
  • CIDR:10.0.0.0/16
  • Subnets
  • Subnet-a:10.0.110.0/24
  • Subnet-c:10.0.120.0/24

  • CLUSTERPRO
  • フェールオーバーグループ(failover)
  • AWS DNSリソース
  • >ホストゾーンID:ABCDEFG1234567
  • >リソースレコードセット名:cluster.clusterpro.net.
  • >IPアドレス(共通):<server1のElastic IPアドレス>
  • >IPアドレス(server1):<server1のElastic IPアドレス>
  • >IPアドレス(server2):<server2のElastic IPアドレス>
  • ミラーディスクリソース
  • >データパーティション:Mドライブ
  • >クラスターパーティション:Rドライブ

  • 本記事内で使用している「cluster.clusterpro.net」は説明用のサンプルドメイン名です。
    実際の設定時は、ご自身が取得・管理しているドメイン名に読み替えてご利用ください。
  • リソースレコードセット名は末尾にドット (.) を付けた形式で設定してください。

フェールオーバーグループにAWS DNSリソースとミラーディスクリソースを登録したら、各インスタンスでフェールオーバーグループが正常に起動できることを確認します。

【参考】
popupCLUSTERPRO X ソフトウェア構築ガイド
   Windows > クラウド > Amazon Web Services > CLUSTERPRO X 5.3 向け HA クラスタ 構築ガイド
     → 第 7 章 DNS名制御によるHAクラスタの設定

2.2. HULFTのインストールとHAクラスターへの組み込み

2.2.1. HULFTのインストールと設定

HAクラスターを構成する各インスタンスにWindows版HULFT10をインストールします。インストール時の設定はすべてデフォルトを選択します。インストールが完了したら、各インスタンスのHULFTのサービスの状態を確認します。サービスが停止状態であることを確認し、サービスのスタートアップの種類を「自動」から「手動」に変更します。

C:\Users\Administrator>sc query HULFT

SERVICE_NAME: HULFT
        TYPE               : 110  WIN32_OWN_PROCESS  (interactive)
        STATE              : 1  STOPPED ← 停止状態
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

C:\Users\Administrator>sc config HULFT start= demand
[SC] ChangeServiceConfig SUCCESS

次に各インスタンスでHULFTの「システム環境情報設定ファイル」を編集し、HULFTが使用する設定ファイルのパスを指定します。
ファイルパス(デフォルト):C:\HULFT Family\hulft10\bin\hulft.ini

[PATH]
HULPATH=M:\hulft10\etc ← ミラーディスクのデータパーティション(Mドライブ)配下の任意のパスを指定

2.2.2. HAクラスター向けの設定変更

フェールオーバーグループが起動している現用系インスタンスで「環境設定ファイル格納フォルダ」を「システム環境情報設定ファイル」で指定したフォルダにコピーします。フェールオーバーグループが停止している場合、フェールオーバーグループを起動し、データパーティション(Mドライブ) にアクセスできる状態になってからコピーを行います。
フォルダパス(デフォルト):C:\HULFT Family\hulft10\etc

環境設定ファイル格納フォルダには、HULFTのシステム動作に必要な設定ファイルが保存されており、ポート番号の指定など各種動作パラメータの設定ができます。

C:\Users\Administrator>xcopy "c:\HULFT Family\hulft10\etc" "M:\hulft10\etc\" /E /Y
~~(省略)~~
C:\HULFT Family\hulft10\etc\ucf\EB2ASKX.UCF
C:\HULFT Family\hulft10\etc\ucf\EB2ASNEC.UCF
x 個のファイルをコピーしました

次にコピーしたHULFTの「システム動作環境設定ファイル」を編集します。
ファイルパス:M:\hulft10\etc\hulenv.cnf

以下の項目はHULFTクラスタ対応機能として関連のあるものを抜粋しています。各項目の詳細はHULFTの「アドミニストレーション マニュアル」を参照してください。

自ホスト名に設定するHAクラスター用のホスト名はインターネット経由でアクセス可能なもの(今回は「cluster.clusterpro.net」)を指定します。

# 集信ポートNo.
# 1 から 65535 まで
sddport = 32000

# サービスポートNo.
# 1 から 65535 まで
srvport = 31001

# サービスプロセスポートNo.
# 1 から 65535 まで、または設定値なし
srvcprocport = 40000 ← 追加(未使用の任意ポートNo.)

# スケジューラポートNo.
# 1 から 65535 まで、または設定値なし
schport = 50000 ← 追加(未使用の任意ポートNo.)

# 未配信ファイルのクリア
# 0: 削除しない
# 1: 削除する
delreqcpfile = 0 ← フェールオーバーの発生後、自動再配信をする場合

# 管理情報の2重化
# 0: 2重化しない
# 1: 2重化する
adjoinadminfile = 1

# 処理状況の出力およびイベントログ
# 0: 出力しない
# 1: 出力する
alertmsgput = 1

# 処理状況格納ファイル件数
# 100 から 1000000 まで
consolelogcnt = 10000

# サービス起動同期
# 0: 非同期
# 1: 同期
startsync = 1 ← 自動起動するように指定されたプロセスが正常に起動したことを確認してからHULFTのサービスを開始

# 自ホスト名
myhostname = cluster.clusterpro.net ← HAクラスター用のホスト名を指定

【参考】
popupHULFT10 for Windows アドミニストレーション マニュアル
   →3. HULFTの動作環境
     →3.5 システム動作環境の設定について
       →3.5.3 システム動作環境設定一覧
       →3.5.4 各項目の説明

2.2.3. HULFTのHAクラスターへの組み込み

CLUSTERPROによるHULFTの起動・停止制御はCLUSTERPROのサービスリソースにより実現できます。フェールオーバーグループに「サービスリソース」を追加する際、サービス名欄にて「HULFT」を選択してください。サービスリソースを追加すると、サービス監視リソースも追加されます。サービス監視リソースはHULFTサービスが起動しているかを監視します。

次にカスタム監視リソースを登録します。 カスタム監視リソースで実行するスクリプトにはHULFTの「リモート生存監視コマンド(utlalivecheck)」を記述して、対象のHULFTサービスが開いているポート番号に接続できるかを確認します。
サービス監視とカスタム監視を併用することで、サービス監視のみでは捉えきれない通信系障害もカスタム監視で検知できます。また、障害発生時に両方の監視結果を比較することで、原因の切り分けができます。
モニタリソースのタイプは「カスタム監視」を選択します。監視タイミングは「活性時」を選択し、対象リソースにはHULFTの制御を行うサービスリソースを指定します。

「編集」を選択し、監視スクリプトを登録します。監視スクリプトのサンプルは後述します。

回復動作にて「回復対象に対してフェイルオーバ実行」を選択し、回復対象にフェールオーバーグループを指定します。これにより監視スクリプトで異常を検知した際、すぐにフェールオーバーを行うことができます。

監視スクリプトを作成します。以下の監視スクリプトは参考です。
このスクリプトでは、HULFTのリモート生存監視コマンドを使用して指定したポートの死活チェックを行い、異常が検知された場合はログを出力して終了します。

@echo off
SET ALIVE_CHECK="C:\HULFT Family\hulft10\bin\utlalivecheck"
REM
REM 監視対象ポート
SET RCVPORT="40000"
SET OBSPORT="31000"
REM 監視するポートを追加したい場合は下記のようにポートを追加してください
REM SET xxxxxxx="yyyyy"

REM リモート生存監視コマンドによる生存確認
%ALIVE_CHECK% -p %RCVPORT%
SET RET=%ERRORLEVEL%
IF %RET% NEQ 0 (
 clplogcmd -m "recieve port error " -l ERR
 GOTO ERROR
)
REM 追加ポートがあれば同様に応答確認やエラー判定などの監視処理を追加してください
exit 0
:ERROR
exit %RET%

本スクリプトはサンプルであり動作を保証するものではありません。

リソースの追加が完了したら、設定の反映を行いフェールオーバーグループを起動します。

2.3. HULFTの設定

HULFTでファイル転送を行うための設定をします。配信管理情報のファイルIDと集信管理情報のファイルIDは完全に一致している必要があります。

HULFTの基本的な解説は「DMS Cube」を参照してください。

2.3.1. 配信側の設定

配信側のインスタンスにもHULFTをインストールします。インストール時に入力する項目は集信側と同じくデフォルトを選択します。インストールが完了したら、HULFTの「システム動作環境設定ファイル」を編集します。
ファイルパス(デフォルト):C:\HULFT Family\hulft10\etc\hulenv.cnf

# 自ホスト名
myhostname = sendsvr.dc.local ← 配信側のホスト名

次にHULFT管理画面より設定を行います。最初に「詳細ホスト情報」のアイコンをクリックします。

次に、集信側のホスト名を追加します。

次に「転送グループ情報」のアイコンをクリックし、転送グループIDを登録します。ホスト名は登録しておいた集信側のホスト名を選択し、ホストを追加します。

次に「配信管理情報」のアイコンをクリックし、ファイルIDを登録します。ファイル名に転送したいファイルを指定します。転送グループIDは登録しておいたものを選択します。
ファイルパス(任意):C:\data\sample.txt

2.3.2. 集信側の設定

現用系インスタンス(集信側)にてHULFT管理画面を立ち上げます。「詳細ホスト情報」のアイコンをクリックし、配信側のホスト名を追加します。配信側と同じ手順なので画面イメージは省略します。

次に「集信管理情報」のアイコンをクリックし、配信側で設定したものと同じファイルIDを登録します。ファイル名には受信したファイルを格納するパスを指定しますが、集信側に格納されたファイルが自動的に待機系インスタンスにミラーリングされるように、データパーティション(Mドライブ)配下をファイルの格納先として指定します。
ファイルパス(任意):M:\data\recvfile.txt

※補足:登録モードは任意ですが今回は「置き換え」を選択します。

3. 動作確認

配信側のHULFT管理画面より「配信管理情報」のアイコンをクリックし、登録してあるファイルIDを選択します。右クリックで表示されるメニューから「配信要求」を選択します。

配信の確認画面が表示されるので「配信要求」ボタンをクリックします。

配信要求が成功するとその旨を伝えるダイアログが表示されます。

集信側の現用系インスタンス(server1)のデータパーティション(Mドライブ)にファイルが作成されていればファイルの転送は成功です。

次に、フェールオーバーグループを現用系インスタンス(server1)から待機系インスタンス(server2)へ移動します。フェールオーバーグループの移動完了後、旧待機系インスタンス(server2)のデータパーティション(Mドライブ)を確認して、転送したファイルが存在していればミラーリングに成功しています。

最後に、配信側より再度ファイルを転送してみましょう。データパーティション(Mドライブ)配下のファイルが更新されていればフェイルオーバー先での転送も成功です。

まとめ

今回は、HULFTの最新版であるHULFT10とCLUSTERPROの最新版を用いて、集信側ホストをVPC内で冗長化し、一方で配信側ホストはVPC外に配置する構成をご紹介しました。

利用製品

本記事の環境を構築する際に利用した製品です。

■ OS共通
   – CLUSTERPRO X Media 5.3
   – CLUSTERPRO X Startup Kit 5.3
■ Windows
   – CLUSTERPRO X 5.3 for Windows VM (1ノードライセンス)
   – CLUSTERPRO X Replicator 5.3 for Windows (1ノードライセンス)

お問い合わせ

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