##はじめに
##目次
- ARMとは?
- WAS z/OS Libertyとは?
- WAS z/OS LibertyのARMサポートはいつから?
- WAS z/OS LibertyをARM再起動するとどんな風になる?
- WAS z/OS LibertyをARM再起動する設定は?
- WAS z/OS Libertyをベースに稼働する他の製品でも使える?
##1. ARMとは?
z/OSにはAutomatic Restart Manager(ARM)と呼ばれるコンポーネントがあります。ARMは、自動再起動機能を提供します。
ARMは、バッチジョブや開始タスクが予期せず終了した後に自動的にそれらを再起動することで、可用性の向上を実現するリカバリー機能です。
予期せず終了したバッチジョブや開始タスクは、通常、同じz/OSシステムで再起動されます。z/OSシステム自体に障害が発生した場合は、別のz/OSシステムで再起動されます。
##2. WAS z/OS Libertyとは?
WAS z/OS Liberty(WebSphere Application Server for z/OS Liberty)は、2012年に出荷されたWAS z/OS V8.5から追加された新しくランタイムです。
以下のような特長があります。
-
Composable: モジュラー・ランタイム環境
- モジュール式機能で、稼働するアプリケーションに必要な機能のみを柔軟に構成することが可能です。
-
Lightweight: 軽量
- 構成可能なモジュラー・ランタイム環境により、従来のWASアプリケーション・サーバーより少ないメモリー使用量で稼働します。
-
Dynamic: 動的構成変更
- ランタイム機能の多くは、構成ファイルを変更することによって動的に更新可能です。
- アプリケーションは、USSディレクトリーのアプリケーション・ファイルを変更することで追加、更新可能です。
-
Fast: 高速
- 非常に迅速に起動することができます。
-
Simple: シンプルな構成
- 構成ファイルはserver.xml(必須)、jvm.options(オプション)、server.env(オプション)で、PCツールまたは手作業で編集するシンプルな構成です。
- 構成にシステム名を含まないため、構築したz/OSとは別システム名のz/OSでも起動可能です。
WAS for z/OS Libertyのプロセスは、2種類あります。
(1) サーバー・プロセス(モジュール名bbgzsrv)
アプリケーション・サーバー本体です。
1つのJVMとして起動する、スタンドアロン・サーバーです。
複数のサーバーを起動した場合、それらは独立しており、互いに関係も持ちません。
z/OS版の場合、STCとしてSTARTコマンドによる起動が推奨です。
(2) Angelプロセス(モジュール名bbgzangl)
z/OSの許可キーで実行され、保護されたシステム・サービスへのアクセスを代理して行うプロセスです。
保護されたシステム・サービスとは、JDBC Type2 (RRS接続)、SAF(RACFなど)によるアプリケーション認証が必要な処理です。
Angelプロセスの起動はオプションです。
サーバー・プロセスを起動したときにAngelプロセスが起動されていない場合、上記の保護されたシステム・サービスの使用ができません。
サーバー・プロセスとして、 Angelプロセスが起動を前提としない機能は問題なく動作します。
Angelプロセスは、構成ファイルもTCP/IPポートも持ちません。
WAS traditionalのDaemonとは、位置づけが異なります。
z/OSイメージで稼働するすべての Liberty サーバーが、1つのAngelを共有することができます。
複数のサーバー・プロセスでAngelを共有する場合、最新バージョンサーバー・プロセスと同レベルのAngelを稼働させる必要があります。
特定のAngel・プロセスを使用しているすべてのサーバーのリストを示すには、以下の MODIFY コマンドを使用します。
MODIFY angel_name,DISPLAY,SERVERS
実行例
F WLP01A,DISPLAY,SERVERS
CWWKB0067I ANGEL DISPLAY OF ACTIVE SERVERS
CWWKB0052I ACTIVE SERVER ASID 40 JOBNAME WLP04
CWWKB0052I ACTIVE SERVER ASID 42 JOBNAME WLP01
Angelに名前をつけると(Named Angelを使用すると)、ひとつのz/OSイメージで複数のAngelを稼働させ、特定のサーバー・プロセスで特定のAngelを使用するよう設定が可能です。
Named Angelを使用するには以下の設定が必要です。
Named Angelへのアクセス許可のためのRACF設定を行う
RDEF SERVER BBG.ANGEL.namedAngelName UACC(NONE)
PERMIT BBG.ANGEL .namedAngelName CLASS(SERVER) ACCESS(READ) ID(server_id)
AngelのStart ProcedureのNAME=にnamed_angel名を設定する
サーバー・プロセスのbootstrap.propertiesに以下の設定をする
com.ibm.ws.zos.core.angelName=named_angel名
com.ibm.ws.zos.core.angelRequired=true
この記事では、Named Angelを前提に記載します。
##3. WAS z/OS LibertyのARMサポートはいつから?
WAS z/OS Liberty 21.0.0.5より、LibertyのAngelプロセスおよびサーバー・プロセスにてARM機能が利用可能になりました。
WAS Libertyは、継続的シングル・ストリーム・デリバリー(SSCD:Single Stream Continuous Delivery)というソフトウェア・サポート・ライフサイクル・ポリシーに準拠します。WAS Libertyは基本的に4週間ごとにFix Packが提供されます。
WAS z/OS Liberty 21.0.0.5は、2021年の5月ごろに出荷されたFix Packレベルです。
##4. WAS z/OS LibertyをARM再起動するとどんな風になる?
以下は、ARM自動再起動時のSYSLOGの抜粋です。
C WLP04,ARMRESTART <===【サーバー・プロセスのキャンセル】
:
IEE301I WLP04 CANCEL COMMAND ACCEPTED
:
IEF170I 1 WLP04 RCC030I WLP04 STEP1 SYSTEM ABENDS 222
$HASP395 WLP04 ENDED - ABEND=S222
:
S WLP04 <===【サーバー・プロセスのARM再始動】
IXC812I JOBNAME WLP04, ELEMENT WLP04 FAILED.
THE ELEMENT WAS RESTARTED WITH PERSISTENT START TEXT.
IXC813I JOBNAME WLP04, ELEMENT WLP04 164
WAS RESTARTED WITH THE FOLLOWING START TEXT:
S WLP04
THE RESTART METHOD USED WAS DETERMINED BY THE ACTIVE POLICY.
:
+CWWKF0011I: The WLP04 server is ready to run a smarter planet. The 175
WLP04 server started in 7.150 seconds.
サーバー・プロセスが異常終了した場合は、ARMでサーバー・プロセスを再起動可能です。
Angelプロセスが異常終了した場合は、Named Angelで、かつ、Angel必須の場合、サーバー・プロセスも一緒に異常終了します。ARMでAngelプロセスとサーバー・プロセスを再起動可能です。Named Angelで、かつ、Angel必須の場合、Angelプロセスが先に起動を完了する必要があります。
##5. WAS z/OS LibertyをARM再起動する設定は?
ARM利用時は、一般的には、z/OSシステムの計画とインストールという全体的なタスクの一部として検討されます。ここでは、簡単ではありますが、ARMを有効にする手順についても記載します。
###5.1 z/OSシステムでのARM使用可能準備
ARMを有効にするには、一般的には、以下の手順を実行します。
- ARM CDS(カップル・データセット)を作成・定義します。
- ARMポリシーを定義します。
- ARMポリシーを開始します。
- ARMを利用するバッチジョブや開始タスクで、ARMに登録するための定義をします。
- ARMを利用するバッチジョブや開始タスクが、起動時にARMに登録することで、自動再起動が可能になります。
ARMポリシーは、自動再起動のアクションの定義です。IBMはデフォルトのARMポリシーを提供します。z/OSで提供される管理データ・ユーティリティー(IXCMIAPU)を使用して、新しいポリシーを定義したり、Policyのデフォルトを上書きしたりすることができます。
####5.1.1. ARM CDSの作成
ARM CDS作成
//CDS@ARM JOB ,,MSGCLASS=X,NOTIFY=&SYSUID
//STEP1 EXEC PGM=IXCL1DSU
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINEDS SYSPLEX(PLXQ1)
DSN(PLXQ1.ARM.CDS01) VOLSER(SYSVL1)
NOCATALOG
DATA TYPE(ARM)
ITEM NAME(POLICY) NUMBER(5)
ITEM NAME(MAXELEM) NUMBER(50)
ITEM NAME(TOTELEM) NUMBER(500)
DEFINEDS SYSPLEX(PLXQ1)
DSN(PLXQ1.ARM.CDS02) VOLSER(SYSVL2)
NOCATALOG
DATA TYPE(ARM)
ITEM NAME(POLICY) NUMBER(5)
ITEM NAME(MAXELEM) NUMBER(50)
ITEM NAME(TOTELEM) NUMBER(500)
/*
####5.1.2. ARM CDSの定義
ARM CDSの定義
COUPLE SYSPLEX(&SYSPLEX.)
PCOUPLE(&SYSPLEX..SYSPLEX.CDS01,SYSVL1)
ACOUPLE(&SYSPLEX..SYSPLEX.CDS02,SYSVL2)
DATA TYPE(WLM)
PCOUPLE(&SYSPLEX..WLM.CDS01,SYSVL1)
ACOUPLE(&SYSPLEX..WLM.CDS02,SYSVL2)
DATA TYPE(LOGR)
PCOUPLE(&SYSPLEX..LOGR.CDS01,SYSVL1)
ACOUPLE(&SYSPLEX..LOGR.CDS02,SYSVL2)
DATA TYPE(BPXMCDS)
PCOUPLE(&SYSPLEX..OMVS.CDS01,SYSVL2)
ACOUPLE(&SYSPLEX..OMVS.CDS02,SYSVL1)
DATA TYPE(ARM)
PCOUPLE(&SYSPLEX..ARM.CDS01,SYSVL1)
ACOUPLE(&SYSPLEX..ARM.CDS02,SYSVL2)
ARM CDSの動的定義
SETXCF COUPLE,TYPE=ARM,PCOUPLE=(PLXQ1.ARM.CDS01,SYSVL1)
IXC309I SETXCF COUPLE,PCOUPLE REQUEST FOR ARM WAS ACCEPTED
IEF196I IEF237I B54E ALLOCATED TO SYS00082
IXC286I COUPLE DATA SET
PLXQ1.ARM.CDS01,
VOLSER SYSVL1, HAS BEEN ADDED AS THE PRIMARY
FOR ARM ON SYSTEM SYS1
IXC811I SYSTEM SYS1 IS NOW ARM CAPABLE
SETXCF COUPLE,TYPE=ARM,ACOUPLE=(PLXQ1.ARM.CDS02,SYSVL2)
IXC309I SETXCF COUPLE,ACOUPLE REQUEST FOR ARM WAS ACCEPTED
IXC260I ALTERNATE COUPLE DATA SET REQUEST FROM SYSTEM
SYS1 FOR ARM IS NOW BEING PROCESSED.
DATA SET: PLXQ1.ARM.CDS02
IEF196I IEF237I B54F ALLOCATED TO SYS00083
IXC251I NEW ALTERNATE DATA SET
PLXQ1.ARM.CDS02
FOR ARM HAS BEEN MADE AVAILABLE
####5.1.3 ARM Policyの開始
ARM Policyの開始(デフォルト・ポリシーで)
SETXCF START,POLICY,TYPE=ARM
IXC805I ARM POLICY HAS BEEN STARTED BY SYSTEM SYS1.
POLICY DEFAULTS ARE NOW IN EFFECT.
###5.2. WAS z/OS LibertyをARMサポートレベルに
WAS for z/OS LibertyのARMサポートはバージョン21.0.0.5からです。バージョン21.0.0.5以上になるよう、Fix Packを適用します。
###5.3. WAS z/OS LibertyのAngelプロセスのARM設定
WAS z/OS Libertyには、Angelプロセスとサーバー・プロセスがあります。まずは、AngelプロセスのARM設定をします。
####5.3.1. ARM使用のための権限
z/OSは、以下の2つのメカニズムのいずれかによってARM APIへのアクセスを保護します。
(A) 呼び出し側がスーパーバイザ状態または認証されたキーであること
(B) プロセスの ID は、SAF FACILITY クラスの IXCARM.elementType.elementName エンティティーへの UPDATE アクセス権を持っていること
WAS for z/OS Libertyの場合、エンティティーは以下になります。
・elementType:SYSCB
・elementName:server.xmlに定義したARMエレメント名
Angelプロセスはスーパーバイザ状態であり、システム変更や操作なしにARM APIにアクセスできます。上記の(A)の条件に合致します。
サーバー・プロセスは、お客様は設定したエレメント名を使って適切なFACILITYクラスのエンティティへのアクセスを許可する必要があります。上記の(B)の条件に合致させます。
####5.3.2. ARMエレメント名の設定(スタート・プロシージャーの更新)
Angelプロセスが、ARMに登録する際のARMエレメント名をスタート・プロシージャーに設定します。
//BBGZANGL PROC PARMS='',COLD=N,NAME='WLP04A',SAFLOG=Y
//*------------------------------------------------------------------
// SET ROOT='/usr/lpp/WebSphere/Liberty/21004'
//*------------------------------------------------------------------
//* Start the Liberty angel process
//*------------------------------------------------------------------
//STEP1 EXEC PGM=BPXBATA2,REGION=0M,TIME=NOLIMIT,
// PARM='PGM &ROOT./lib/native/zos/s390x/bbgzangl COLD=&COLD NAME=X
// &NAME &PARMS SAFLOG=&SAFLOG'
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
//BBGZANGL PROC
//*------------------------------------------------------------------
//* Start the Liberty angel process
//*------------------------------------------------------------------
//STEP1 EXEC PGM=BPXBATA2,REGION=0M,TIME=NOLIMIT
//STDPARM DD *
PGM /usr/lpp/WebSphere/Liberty/21006/lib/native/zos/s390x/bbgzangl
COLD=N
NAME=WLP04A
SAFLOG=Y
ARMEL=WLP04A
/*
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
STDPARMを使用した理由:
以下のように単純に既存のAngelスタート・プロシージャーのPARMにARMELを追記すると、ROOTのPATHの長さなどによりPARMの100文字数制限超えになる場合、JCL ErrorでAngelプロセスの起動に失敗します。
PARMの100文字数制限を超えないよう、先のAngelスタート・プロシージャー(修正後)では、STDPARMを使用し、PARMを使用しないようにしました。
PARMの100文字数制限超えメッセージ:
IEF642I EXCESSIVE PARAMETER LENGTH IN THE PARM FIELD
//STEP1 EXEC PGM=BPXBATA2,REGION=0M,TIME=NOLIMIT,
// PARM='PGM &ROOT./lib/native/zos/s390x/bbgzangl COLD=&COLD NAME=X
// &NAME &PARMS SAFLOG=&SAFLOG ARMEL=WLP04A'
PARMS='',COLD=N,NAME='WLP04A',SAFLOG=Y
ROOT='/usr/lpp/WebSphere/Liberty/21006'
の場合
PARM='PGM /usr/lpp/WebSphere/Liberty/21006/lib/native/zos/s390x/bbgzangl COLD=N NAME=WLP04A SAFLOG=Y ARMEL=WLP04A'
で、108文字になります。
###5.4. WAS z/OS Libertyのサーバー・プロセスのARM設定
####5.4.1. ARM使用のためのRACF設定
RACF設定
RDEF FACILITY IXCARM.SYSCB.* UACC(NONE)
PERMIT IXCARM.SYSCB.* CLASS(FACILITY) ACCESS(UPDATE) ID(WSADMIN)
SETR RACLIST(FACILITY) GENERIC(FACILITY) REFRESH
####5.4.2. ARMサポート・フィーチャーの有効化(server.xmlの更新)
<featureManager>
:
<feature>zosAutomaticRestartManager-1.0</feature>
</featureManager>
####5.4.3. ARMエレメント名の設定(server.xmlの更新)
<automaticRestartManager zosArmElementName="WLP04"/>
###5.5. ARM登録の確認
####5.5.1. プロセスの起動
AngelプロセスはデフォルトでSYSLOGにメッセージが出力されます。
S WLP04A
IRR812I PROFILE WLP*.* (G) IN THE STARTED CLASS WAS USED 120
TO START WLP04A WITH JOBNAME WLP04A.
$HASP100 WLP04A ON STCINRDR
IEF695I START WLP04A WITH JOBNAME WLP04A IS ASSIGNED TO USER
WSADMIN , GROUP WSCFG1
$HASP373 WLP04A STARTED
CWWKB0079I THE ANGEL BUILD LEVEL IS 21.0.0.6 20210528-0200 / 124
2021.6.0.0 20210528-0200
CWWKB0084I ANGEL HAS SUCCESSFULLY REGISTERED AS ELEMENT NAME WLP04A 125
WITH THE AUTOMATIC RESTART MANAGER (ARM).
CWWKB0069I INITIALIZATION IS COMPLETE FOR THE WLP04A ANGEL PROCESS.
サーバープロセスのSYSLOGにはARM関連メッセージはデフォルトでは出力されません。
S WLP04
IRR812I PROFILE WLP*.* (G) IN THE STARTED CLASS WAS USED 128
TO START WLP04 WITH JOBNAME WLP04.
$HASP100 WLP04 ON STCINRDR
IEF695I START WLP04 WITH JOBNAME WLP04 IS ASSIGNED TO USER
WSADMIN , GROUP WSCFG1
$HASP373 WLP04 STARTED
+CWWKE0001I: The server WLP04 has been launched.
+CWLIB0103I: Resource manager BBG.WLP04.DA1CA979AA7BA5D6.IBM with the
corresponding token ID of 010000010235a0b8000000040000000a has
successfully restarted with Resource Recovery Services (RRS). Number
of unresolved units of recovery: 0
+CWLIB0104I: Recovery processing for resource manager 134
BBG.WLP04.DA1CA979AA7BA5D6.IBM with the corresponding token ID of
010000010235a0b8000000040000000a has completed.
+CWWKZ0001I: Application JDBCTestWeb started in 0.650 seconds.
+CWWKZ0001I: Application MBeanWeb started in 0.776 seconds.
+CWWKZ0001I: Application JMSQueue1Web started in 0.712 seconds.
+CWWKF0011I: The WLP04 server is ready to run a smarter planet. The 138
WLP04 server started in 10.922 seconds.
サーバー・プロセスのMSGLOGには出力されます。
[8/4/21 20:43:14:845 JST] 00000020
s.zos.restart.automanager.internal.ZosAutoRestartManagerImpl
I CWWKB0751I: This server registered with the automatic restart manager (ARM) as the WLP04 element name.
CWWKB0751I
メッセージをMSGLOG以外に出力させたい場合には、server.xml
のzosLogging
エレメントのhardCopyMessage
プロパティーやwtoMessage
プロパティーにて、CWWKB0751I
メッセージをConsoleやSYSLOGに出力させるよう設定します。
####5.5.2. ARM登録の確認
D XCF,ARMS,DETAIL
IXC392I 20.47.14 DISPLAY XCF 150
ARM RESTARTS ARE ENABLED
-------------- ELEMENT STATE SUMMARY -------------- -TOTAL- -MAX-
STARTING AVAILABLE FAILED RESTARTING RECOVERING
0 3 0 0 0 3 500
:
RESTART GROUP:DEFAULT PACING : 0 FREECSA: 0 0
ELEMENT NAME :WLP04 JOBNAME :WLP04 STATE :AVAILABLE
CURR SYS :SYS1 JOBTYPE :STC ASID :0050
INIT SYS :SYS1 JESGROUP:N1 TERMTYPE:ALLTERM
EVENTEXIT:*NONE* ELEMTYPE:SYSCB LEVEL : 3
TOTAL RESTARTS : 0 INITIAL START:08/04/2021 20:43:14
RESTART THRESH : 0 OF 3 FIRST RESTART:*NONE*
RESTART TIMEOUT: 300 LAST RESTART:*NONE*
RESTART GROUP:DEFAULT PACING : 0 FREECSA: 0 0
ELEMENT NAME :WLP04A JOBNAME :WLP04A STATE :AVAILABLE
CURR SYS :SYS1 JOBTYPE :STC ASID :0046
INIT SYS :SYS1 JESGROUP:N1 TERMTYPE:ALLTERM
EVENTEXIT:*NONE* ELEMTYPE:SYSCB LEVEL : 3
TOTAL RESTARTS : 0 INITIAL START:08/04/2021 20:42:10
RESTART THRESH : 0 OF 3 FIRST RESTART:*NONE*
RESTART TIMEOUT: 300 LAST RESTART:*NONE*
###5.6. ARM Policyの調整
必要に応じて、ARM Policyの調整をします。IBMはデフォルトのARMポリシーを提供します。z/OSで提供される管理データ・ユーティリティー(IXCMIAPU)を使用して、新しいポリシーを定義したり、Policyのデフォルトを上書きしたりすることができます。
##6. WAS z/OS Libertyをベースに稼働する他の製品でもARMは使える?
WAS z/OS Libertyをベースに稼働する他の製品でもARMは使えます。
ただし、WAS for z/OS Libertyを同梱している製品では、同梱のLibertyがバージョン21.0.0.5以上でも、ARMをサポートするフィーチャーが導入されていない場合はあります。
その場合は、以下の手順でARMをサポートするフィーチャーを導入してください。
(1) 導入されたフィーチャーを確認する
$ cd /usr/lpp/WebSphere/Liberty/21006/bin
$ ./productInfo featureInfo
:
zosAutomaticRestartManager-1.0 [1.0.0]
(2) 使用するLibertyバージョンのフィーチャーのリポジトリー・ファイルをダウンロードする
Fix Centralから稼働するLibertyのレベルに応じたリポジトリー・ファイルをダウンロードします。使用中のLibertyレベルが 21.0.0.9 の場合、wlp-featureRepo-21.0.0.9 で検索すると、「Directory-based Repository of Liberty 21.0.0.9 Features and Addons」 である wlp-featureRepo-21.0.0.9.zip を見つけやすいと思います。
https://www.ibm.com/support/fixcentral/
(3) リポジトリー・ファイルを自システムにアップロードする
(4) リポジトリー・ファイルから自システムへライブラリーのフィーチャーを導入する
./installUtility install zosAutomaticRestartManager-1.0 --from=/tmp/wlp-featureRepo-21.0.0.9.zip
以上