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

【2026年版】AWSにおけるHULFTのHAクラスター構築 ~VPC内でファイル転送~ (Windows)

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

はじめに

Amazon Web Services(以降、AWS)において、ファイル転送ミドルウェアであるHULFTを冗長化する手順をご紹介します。

本記事は、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内に配置し、集信側のホストを冗長化します。HULFTでは転送相手となるホストをホスト名で管理する必要があるため、配信側ホストから集信側ホストへの転送はAWS仮想IPリソースによるVIPをAmazon Route 53のプライベートホストゾーンのAレコードに設定することで実現します。

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

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

HULFTを冗長化する際のベースとなる「VIP制御によるHAクラスター」を作成します。VPCおよびCLUSTERPROの構成は以下のとおりです。今回は、CLUSTERPROのフェールオーバーグループには「AWS仮想IPリソース」と「ミラーディスクリソース」のみを登録した構成としています。

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

  • RouteTables
  • Main
  • >10.0.0.0/16 → local
  • >0.0.0.0/0 → igw-1234abcd(Internet Gateway)
  • >172.16.0.1 → eni-1234abcd(ENI ID)

  • CLUSTERPRO
  • フェールオーバーグループ(failover)
  • AWS仮想IPリソース
  • >IPアドレス:172.16.0.1
  • ミラーディスクリソース
  • >データパーティション:Mドライブ
  • >クラスターパーティション:Rドライブ

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

【参考】

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の「アドミニストレーション マニュアル」を参照してください。

# 集信ポート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.vpc.local ← 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. VPCの設定

HULFTでは転送相手となるホストをIPアドレスではなく、ホスト名で管理しています。そこでVPC内でHULFT同士がホスト名で通信できるように、Amazon Route 53のプライベートホストゾーンを設定します。

AWSの操作はGUI(マネジメントコンソール)で行うことができますが、今回はAWS CLIを使ってプライベートホストゾーンを作成します。以降、すでにAWS CLIの実行に必要な設定等は完了していることを前提として説明を続けます。

プライベートホストゾーンを「vpc.local」という名称で作成します。

$ aws route53 create-hosted-zone --name vpc.local --caller-reference 2026-01-09-14:36 --vpc "VPCRegion=ap-northeast-1,VPCId=vpc-abcd1234" --hosted-zone-config "PrivateZone=true"
{
    "Location": "https://route53.amazonaws.com/2013-04-01/hostedzone/ABCDEFG1234567",
    "HostedZone": {
        "Id": "/hostedzone/ABCDEFG1234567", ← ホストゾーンID
        "Name": "vpc.local."

        "CallerReference": "2026-01-09-14:36",
        "Config": {
            "PrivateZone": true
        },
        "ResourceRecordSetCount": 2,
    },
    "ChangeInfo": {
        "Id": "/change/XXXXXXXXXXXXXX"
        "Status": "PENDING",
        "SubmittedAt": "2026-01-09T05:37:15.529000+00:00",
    },

    "VPC": {
        "VPCRegion": "ap-northeast-1"
        "VPCId": "vpc-abcd1234",
    }
}

作成したホストゾーンにAレコードを追加します。まずは以下のようにJSON形式のファイルを作成します。
ファイルパス(任意):C:\resource.json

※各行の左矢印(←)以降はコメントですので、実際に作成する際は記載不要です

{
  "Comment": "",
  "Changes": [
    {
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "cluster.vpc.local.", ← HAクラスター用のホスト名(集信側)
        "Type": "A",
        "TTL": 300,
        "ResourceRecords": [
          {
            "Value": "172.16.0.1" ← HAクラスター用の仮想IPアドレス
          }
        ]
      }
    },
    {
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "sendsvr.vpc.local.", ← 配信側のホスト名
        "Type": "A",
        "TTL": 300,
        "ResourceRecords": [
          {
            "Value": "10.0.10.100" ← 配信側のローカルIPアドレス
          }
        ]
      }
    }
  ]
}

作成したファイルを元に以下のコマンドを実行することで、Aレコードが追加できます。

$ aws route53 change-resource-record-sets --hosted-zone-id ABCDEFG1234567 --change-batch file://C:\resource.json
{
    "ChangeInfo": {
        "Id": "/change/XXXXXXXXXXXXXX"
        "Status": "PENDING",
        "SubmittedAt": "2026-01-09T06:57:31.896000+00:00",
        "Comment": "",
    }
}

以下のコマンドを実行し、Aレコードが追加されたことを確認します。

$ aws route53 list-resource-record-sets --hosted-zone-id ABCDEFG1234567
{
    "ResourceRecordSets": [
        {
            "Name": "vpc.local.",
            "Type": "NS",
            "TTL": 172800,

            "ResourceRecords": [
                {
                    "Value": "ns-1536.awsdns-00.co.uk."
                },
                {
                    "Value": "ns-0.awsdns-00.com."
                },
                {
                    "Value": "ns-1024.awsdns-00.org."
                },
                {
                    "Value": "ns-512.awsdns-00.net."
                }
            ]
        },
        {
            "Name": "vpc.local.",
            "Type": "SOA",
            "TTL": 900,

            "ResourceRecords": [
                {
                    "Value": "ns-1536.awsdns-00.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400"
                }
            ]
        },
        {
            "Name": "cluster.vpc.local.", ← クラスタ用のホスト名(集信側)
            "Type": "A",
            "TTL": 300,

            "ResourceRecords": [
                {
                    "Value": "172.16.0.1" ← クラスタ用の仮想IPアドレス
                }
            ]
        },
        {
            "Name": "sendsvr.vpc.local.", ← 配信側のホスト名
            "Type": "A",
            "TTL": 300,

            "ResourceRecords": [
                {
                    "Value": "10.0.10.100" ← 配信側のローカルIPアドレス
                }
            ]
        }
    ]
}

2.4. HULFTの設定

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

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

2.4.1. 配信側の設定

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

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

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

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

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

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

2.4.2. 集信側の設定

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

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

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

3. 動作確認

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

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

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

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

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

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

まとめ

今回はHULFTの最新版であるHULFT10をCLUSTERPROの最新版を用いて冗長化する構成を紹介しました。今回紹介した構成では同じVPC内に配信側と集信側のホストを配置し、集信側のホストを冗長化しましたが、同様の手順で配信側も冗長化することが可能です。また、popup明日公開する記事では配信側のホストを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導入支援サービスにて承っておりますので、上記窓口の"ご購入前のお問い合わせ"フォームまでお問い合わせください。