エンタープライズ サーバーのクラスター化 - デモンストレーション

複数のリージョンで JCL 作業を共有するためにエンタープライズ サーバーのクラスター化機能を活用する方法を検証します。
このデモンストレーションでは、共有データセット (catalog および spool) にアクセスする JCL ジョブをクラスターで正常に実行し、同時にデータセットの完全性を維持する方法について検証します。
  1. Enterprise Developer を起動します。
  2. Web ブラウザで URL http://localhost:86 を指定します。メインの Enterprise Server Administration ホーム画面が表示されます。
  3. 左側のパネルで [Import] をクリックします。[Import server information] 画面が表示されます。
  4. デモンストレーション用のクラスター化リポジトリの場所、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\CICS\Classic\CLUSTER\repos を入力し、[Next] を 3 回クリックして、[OK] をクリックします。画面がメインの [Enterprise Server] ホーム画面に戻り、リージョンのリストに新たにインポートされたリージョン、ESCLMGRESCLCLI1ESCLCLI2 が表示されます。
  5. ESCLMGR サーバーの行で [Edit] をクリックします。[Configuration Information] ボックスで、ES_CLUSTER_SYSTEM_DIR 環境変数が適切であることを確認 (必要に応じて更新) します。通常またはデフォルトのインストールでは、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\CICS\Classic\CLUSTER\system のよう に設定されます。
  6. ESCLCLI1 および ESCLCLI2 サーバーでも上記の手順を繰り返します。
  7. [File > Import > General > Existing Projects into Workspace] をクリックして cluster プロジェクトを Eclipse にインポートします。[Next] をクリックします。
  8. デモンストレーション用のプロジェクト、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\CICS\Classic\CLUSTER に移動し、[OK] をクリックします。
  9. デモンストレーション用のプロジェクトが選択されており、[Copy projects into workspace] がオフであることを確認し、[Finish] をクリックします。[Navigator] ウィンドウにデモンストレーション用のプロジェクトが開きます。ここでプロジェクトの名前、CLUSTER を右クリックして [Build Project] を選択できます。プロジェクトがエラーなしでビルドされます。
  10. プロジェクトの内容を検証します。主なコンポーネントは次のとおりです。
    LCKSLEEP.JCL
    これはデータセット SYSI.CLUSTER.MYFILE でロックを取得し、LCKSLEEP.CBL を呼び出して 25 秒間スリープします。
    NOWAIT.JCL
    これはデータセット SYSI.CLUSTER.ANOTHER でロックを取得し、LCKSLEEP.CBL を呼び出して 5 秒間スリープします。
    WAIT4LCK.JCL
    これはデータセット SYSI.CLUSTER.MYFILE (LCKSLEEP.JCL と同じデータセット) でロックを取得し、WAIT4LCK.CBL を呼び出して 25 秒間スリープします。
    LCKSLEEP.CBL
    このプログラムはファイルを開き、そのファイルに書き込みを行い、スリープしてファイルを閉じます。
    WAIT4LCK.CBL
    このプログラムはファイルを開き、そのファイルに書き込みを行って閉じます。
    getosinf.cbl
    これはオペレーティング システムを決定し、これにより LCKSLEEP.CBL が正しい sleep API を呼び出すことができます。
    mfchkfs.cbl
    これは、ファイル操作の誤りを判定します。
  11. [Start > All Programs > Micro Focus Enterprise Developer > Tools > Enterprise Developer Command Prompt (32-bit)] を選択します。Enterprise Developer のコマンド プロンプトが表示されます。
  12. 次のコマンドを入力して ESCLMGR リージョンを起動します。
    casstart /rESCLMGR 
    ESCLMGR リージョンが起動したら、casstart /rESCLCLI1casstart /rESCLCLI2 を入力し残り 2 つのリージョンを起動します。
  13. サーバー エクスプローラーで [ESCLMGR] を右クリックし、[Associate with project] を選択して、[CLUSTER] が選択されていることを確認します。
  14. サーバー エクスプローラーで [Local [localhost:86]] を右クリックし、[Refresh] を選択します。これによりサーバーのリストが最新のステータスに更新されます。
  15. 3 つのリージョンが起動したら、付属の JCL ジョブをサブミットする必要があります。[COBOL Explorer] タブで、jcl フォルダーを展開し、LCKSLEEP.JCL を右クリックして [Submit to Enterprise Server] を選択します。この手順を WAIT4LCK.JCLNOWAIT.JCL でも繰り返します。次の連続したイベントが発生します。
    • ジョブ LCKSLEEP が実行を開始し、25 秒間スリープします。
    • ジョブ NOWAIT が実行を開始し、5 秒間スリープして正常に完了します。
    • ジョブ WAIT4LCK が起動しますが、LCKSLEEP.JCL を待ってデータセットをリリースします。
    • ジョブ LCKSLEEP が実行を正常に完了します。
    • ジョブ WAIT4LCK が実行を継続し、正常に完了します。

    ESCLCLI1 and ESCLCLI2 のコンソール ログに表示されるメッセージによってこの動作を確認できます。

    ESCLCLI1 コンソール ログのサンプル抜粋
     130212 10410153   4944 ESCLCLI1 CASSI5012I Successfully negotiated with ES Cluster manager ESCLMGR 10:41:01
    130212 10410173   6840 ESCLCLI1 CASBJ0005I Batch initiator started for job classes "A" 10:41:01
    130212 10410174   4944 ESCLCLI1 CASSI9025I RNLDEFs received and installed from ES Cluster Manager ESCLMGR. 10:41:01
    130212 10410214   6708 ESCLCLI1 CASSI1600I SEP initialization completed successfully 10:41:02
    130212 10410235   6860 ESCLCLI1 CASSI1600I SEP initialization completed successfully 10:41:02
    130212 10410235   6708 ESCLCLI1 CASSI5021I PLTPI Phase 2 - No PLT Specified 10:41:02
    130212 10580934   6840 ESCLCLI1 JCLCM0188I JOB01001 LCKSLEEP JOB  STARTED 10:58:08
    130212 10580955   6840 ESCLCLI1 Sleeping time will be 0000000025 seconds 10:58:09
    130212 10583555   6840 ESCLCLI1 JCLCM0182I JOB01001 LCKSLEEP JOB  ENDED   - COND CODE 0000 10:58:34 
    ESCLCLI2 コンソール ログのサンプル抜粋
    130212 10412143   7184 ESCLCLI2 CASSI5012I Successfully negotiated with ES Cluster manager ESCLMGR 10:41:21
    130212 10412163   7260 ESCLCLI2 CASBJ0005I Batch initiator started for job classes "B" 10:41:21
    130212 10412164   7184 ESCLCLI2 CASSI9025I RNLDEFs received and installed from ES Cluster Manager ESCLMGR.
    130212 10412204   7172 ESCLCLI2 CASSI1600I SEP initialization completed successfully 10:41:21
    130212 10412205   7272 ESCLCLI2 CASSI1600I SEP initialization completed successfully 10:41:22
    130212 10412225   7172 ESCLCLI2 CASSI5021I PLTPI Phase 2 - No PLT Specified 10:41:22
    130212 10581625   7260 ESCLCLI2 JCLCM0188I JOB01002 NOWAIT   JOB  STARTED 10:58:15
    130212 10581646   7260 ESCLCLI2 Sleeping time will be 0000000005 seconds 10:58:16
    130212 10582246   7260 ESCLCLI2 JCLCM0182I JOB01002 NOWAIT   JOB  ENDED   - COND CODE 0000 10:58:21
    130212 10582326   7260 ESCLCLI2 JCLCM0188I JOB01003 WAIT4LCK JOB  STARTED 10:58:23
    130212 10582346   7260 ESCLCLI2 MVSXR0092I JOB01003 WAIT4LCK Waiting for exclusive use of dataset
                      "SYSI.CLUSTER.MYFILE". 10:58:23
    130212 10583546   7260 ESCLCLI2 MVSXR0093I JOB01003 WAIT4LCK Required datasets have been acquired.
                      Execution resumed. 10:58:34
    130212 10583566   7260 ESCLCLI2 JCLCM0182I JOB01003 WAIT4LCK JOB  ENDED   - COND CODE 0000 10:58:35 
  16. サーバーを停止するには、コマンド casstop /rESCLMGRcasstop /rESCLCLI1casstop /rESCLCLI2エンタープライズ サーバーのコマンド プロンプトで発行します。
この演習では、データセットを共有せずに、エンタープライズ サーバーによって複数の JCL ジョブを並行して実行する方法のデモンストレーションを行いました。データセットを共有する 2 つの JCL ジョブは並行して実行しません。これらのジョブはデータセットの完全性を維持するために個別に実行します。