PowerHA SystemMirror for IBM i マルチターゲット地理的ミラーリングを構成してみた

# はじめに
IBM i 7.5でサポートされるようになったマルチターゲット地理的ミラーリングをPowerVS上に構成してみました。
PowerVS上での地理的ミラーリングの構成については、この記事がわかりやすいと思いますので、こちらを参照してみてください。 

 https://qiita.com/yoichi_nakamura/items/6f96923b83f281bfc55e 

また、PowerVSで利用可能になったPER (Power Edge Router)の構成方法はこちらの記事を参照してください。

https://qiita.com/y_tama/items/fc4828d747984747e86d
 
# 1.構成イメージ
シドニーと大阪のリージョンにPowerVSワークスペースを作成し、シドニーを本番サイト、大阪をバックアップサイトとし、3つのIBM iインスタンスを作成し、地理的ミラーリングを構成します。各リージョン間はTransit Gatewayで疎通されています。　
ネットワークについては検証用ですので簡易的な構成にしています。 IASPについては20GBの大きさのものをそれぞれのサイトに構成しています。　
これらの内容を踏まえた構成が以下のイメージになります。　
![構成イメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/ccc6ce31-fe56-bc0b-2e7b-ba06b756f7d1.png)

# 2.クラスター環境
## クラスター
まずベースとなるクラスターを作成していきます。クラスターは「CRTCLU」コマンドで作成することができます。作成する際にこのクラスターを構成するノード（各IBM i区画）を追加していきます。地理的ミラーリングを構成するノードは全て同じ装置ドメインに所属している必要があります。コマンドの例は以下のようになります。
```
CRTCLU CLUSTER(IBMI75CLU) NODE((IBMI751 ('192.168.0.27')) (IBMI752 ('192.168.0.29')) (IBMI753 ('192.168.1.28')))
```                                          
PowerHA System Mirror for IBM iのクラスター環境は「WRKCLU オプション6 クラスター・ノードの処理」コマンドで確認することができます。
![WRKCLU Option6](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/fedff33b-744d-39b4-5d36-f78fd30d7631.png)

## IASPの作成
プライマリーノード（本番業務が稼働するIBM i区画）でノード間でミラーリングされる独立ASP（IASP）を構成していきます。構成するために「CFGDEVASP」コマンドを実行します。
```
CFGDEVASP ASPDEV(IASP01) ACTION(*CREATE) UNITS(DMP022) CONFIRM(*NO)
```
このコマンドは対話型ジョブでも実行可能ですが、IASPディスクのフォーマットの処理が入るため、時間がかかります。SBMJOBコマンドを利用したバッチジョブでの実行をお勧めします。そのためにシステム・サービス・ツール（SST）でIASPに追加するディスクのIDを確認しておきます。またCONFIRMパラメーターも*NOを指定しておきます。
コマンドが完了するとIASP装置記述と共にIASPが構成されています。これらは「WRKCFGSTS」コマンドや「WRKDSKSTS」コマンドで確認することができます。

WRKCFGSTS *DEV IASP01
![WRKCFGSTS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/18760049-a08e-3acd-1d84-e70f7c733952.png)

WRKDSKSTS
![WRKDSKSTS](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/44f26718-fdbd-0258-e3f4-697fb6f0ed4f.png)
## クラスター資源グループ(CRG)の構成
クラスター資源グループは、クラスター内で共有されたり、切り替えられたりする資源の定義を行います。CRGの定義には、リカバリー・ドメインと呼ばれるIASPの切り替え先となるノードのリストを含みます。例えば地理的ミラーリングの場合、以下のような情報を含んでいます。
    ・ノードの現在の役割（プライマリーまたはバックアップ）
    ・レプリケーションに使用するデータポートIPアドレス
    ・ノード間で切り替えられるIASPやIPアドレスなどの構成オブジェクトのリスト
CRGは「CRTCRG」コマンドにより作成することができます。
```
CRTCRG CRG(IBMI75CRG) 
       CRGTYPE(*DEV) 
       RCYDMN((IBMI751 *PRIMARY *LAST SYD ('192.168.0.28'))    
              (IBMI752 *BACKUP *LAST SYD ('192.168.0.30')) 
              (IBMI753 *BACKUP *LAST OSA ('192.168.1.29'))) 
        CFGOBJ((IASP01 *DEVD *ONLINE)) FLVMSGQ(QSYS/QSYSOPR) FLVWAITTIM(*NOMAX)
```
FLVMSGQパラメーターは、フェイルオーバーのイベントが発生した時にそれを知らせるメッセージが送信されるメッセージ待ち行列を指定します。またFLVWAITTIMパラメーターは、フェイルオーバー・イベントが発生した時に切り替えの待ち時間を指定します。省略時の値は、*NOWAITで自動的に切り替えが発生することを示しています。ここでは自動的に切り替えをしたくないので、*NOMAXを指定しています。
# 3.地理的ミラーリングの構成
さてここから地理的ミラーリングの構成を行なっていきます。地理的ミラーリングの構成を行う際には、プライマリー・ノード上のIASPは非活動の状態である必要があります。
「WRKCFGSTS *DEV IASP01」コマンドで状況を確認し、非活動の状態にしておいてください。
## 1つめのバックアップ・ノードの地理的ミラーリングの構成
IASPが非活動であることを確認できたら、地理的ミラーリングの構成を行います。地理的ミラーリングの構成は「CFGGEOMIR」コマンドで行います。
このコマンドも実行時にターゲット・ノードへIASPの作成を行いますので、時間がかかります。バッチジョブでの実行が効率的であると思います。プライマリー・ノードと同様、事前にターゲット・ノードでのディスクの情報をあらかじめSSTで確認しておいてください。
```
CFGGEOMIR ASPDEV(IASP01) ACTION(*CREATE) DELIVERY(*SYNC) COMPRESS(*RESYNC) TGTNODE(IBMI752) UNITS(DMP024))
```
このコマンドでは地理的ミラーリングのコピー属性などに関する定義を行います。DELIVERYパラメーターはコピーの同期/非同期を設定します。マルチターゲット地理的ミラーリングの場合は、同じサイトにあるノードへのコピーは*SYNCである必要があります。
COMPRESSパラメーターは、初期同期と再同期に必要な時間を短縮することができ、Power10以降のシステムではハードウェア・アクセラレーションによる圧縮を使用します。Power10以前のシステムでは、ソフトウェア圧縮が使用されます。圧縮は、プライマリー・システムのCPUオーバーヘッドを増加させる可能性があるので、こちらも適用時には考慮が必要です。
## 2つめのバックアップ・ノードの地理的ミラーリングの構成
同様に2つめのバックアップ・ノードに対する地理的ミラーリングの構成を行います。
```
CFGGEOMIR ASPDEV(IASP01) ACTION(*CREATE) DELIVERY(*ASYNC) COMPRESS(*RESYNC) TGTNODE(IBMI753) UNITS(DMP013))                                    
```
サイトが異なるノードなので、ここではDELIVERYパラメーターは*ASYNCを指定する必要があります。
## ASPコピー記述の作成
本来であれば地理的ミラーリングの構成時にIASPのコピーを管理するASPコピー記述が作成されるはずなのですが、なぜか作成されないので、手動で作成してみます。
ASPコピー記述は「ADDASPCPYD」コマンドを使用して追加します。以下のコマンドは全てプライマリーノードであるIBMI751モードから実行します。
IBMI751用のコピー記述
```
ADDASPCPYD ASPCPY(SYD05_1) ASPDEV(IASP01) CRG(IBMI75CRG) SITE(SYD) LOCATION(IBMI751)
```
IBMI752用のコピー記述
```
ADDASPCPYD ASPCPY(SYD05_2) ASPDEV(IASP01) CRG(IBMI75CRG) SITE(SYD) LOCATION(IBMI752)
```
IBMI753用のコピー記述
```
ADDASPCPYD ASPCPY(OSA21_1) ASPDEV(IASP01) CRG(IBMI75CRG) SITE(SYD) LOCATION(IBMI753)
```
構成が完了すると「WRKCLU オプション10」のASPコピー記述の処理画面で以下のように表示されます。
![WRLCLU Option10](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/254971c8-be12-ef14-ecc9-c5ff15bbe544.png)

## ASPセッションの開始
最後に地理的ミラーリングのノード間のコピーを開始するASPセッションの開始の処理を行います。これを行うことにより、ノード間のIASPの同期が開始されることになります。この処理を開始するために「STRASPSSN」コマンドを使用します。コマンドを実行する前にプライマリーノードのIASPをオンに構成変更して、活動状態にしておきます。
```
STRASPSSN SSN(GEOMIRROR) TYPE(*GEOMIR) ASPCPY((SYD05_1 SYD05_2) (SYD05_1 OSA21_1))                                                        
```
このコマンドでIBMI751-IBMI752、IBMI751-IBMI753へのマルチターゲット地理的ミラーリングのコピーを開始することになります。
ASPセッションの状況は「DSPASPSSN」コマンドで表示させることができます。
```
DSPASPSSN SSN(GEOMIRROR)
```
最初にSTRASPSSNコマンドを実行したときはIBMI751-IBMI753のセッションが中断状態になっていたので、手動でセッションを再開させる必要がありました。イメージは以下のような感じです。DATA STATEの部分がこの画面ではBACKLEVELになっていますが、本来はUNUSABLEというステータスになると思います。
![DSPASPSSN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/c8b58f41-a048-e3c0-9683-1f0ceb2031bc.png)

セッションが開始され同期が取れている状態ではこのような画面になります。
![DSPASPSSN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/0edbcf0b-e4d9-692f-9b84-ef5430d6b84e.png)
この画面でF10コマンドを使用すると、この構成のトポロジー情報を表示することもできます。
![Topology](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/ae66e63f-4968-e3d7-1b8c-9986dbec6eeb.png)

セッションの操作は「CHGASPSSN」コマンドで実行することができます。このコマンドは各セッションの中断や再開などの操作に使用します。
```
CHGASPSSN SSN(GEOMIRROR) OPTION(*RESUME) ASPDEV(IASP01) ASPCPY((IBMI751 IBMI753))           
```
ASPセッションの操作は「WRKCLU」コマンドのメニューから実行することもできます。
例えばASPセッションの表示は、「WRKCLU オプション10」のASPコピー記述の処理で「25 セッションの表示」を実行することによって同じ画面に行くことができます。
またASPセッションの変更についてもメニューから実行することもできます。例えばASPセッションの変更（中断、切り離し、再開、属性変更）も同様に「WRKCLU オプション10」のASPコピー記述の処理から「22 セッションの変更」から実行することもできます。
![CHGASPSSN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/17f939ee-517b-bd8c-58ea-a059f6466897.png)

他のコマンドについてもメニューからも実行できますので、機会があれば確認してみてください。
# 4. 計画切り替えと非計画切り替えを試してみました
## 計画切り替え
計画切り替えについては、「CHGCRGPRI」コマンドで実行します。このコマンドでは*SAMESITEを指定しています。これは同じサイトにあるノードへ切り替えるということになりますので、IBMI752へ切り替えることになります。このコマンドは待機ノード側で実行します。
IBMNI752は青字の画面にしています。
```
CHGCRGPRI CRG(IBMI75CRG) SWTTYP(*SAMESITE) 
```
実行中は以下のような画面が表示されます。
![CHGCRGPRI](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/893f5e26-0bd0-5d24-81d7-2e44845b5412.png)

完了後、ASPセッションの状況を見ると以下のようになっています。
![DSPASPSSN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/69123f6c-2a12-e91c-fa18-8f07865af64d.png)

IBMI752がソースノードになっているのがわかると思います。
## 非計画切り替え
では非計画切り替えを試してみましょう。現在のプライマリーノードであるIBMI751をコンソールから制限状態にしてみます。
IBMI752でシステム操作員待ち行列QSYSOPRを見ると以下のメッセージが表示されています。
![DSPMSG QSYSOPR](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/f0ef5648-af04-ea69-0201-172f58713c4f.png)

このメッセージに「G」で応答することにより切り替えが始まります。
切り替えが完了し、ASPセッションを確認すると以下のようになっています。ソースノードがIBMI752に変わっていることがわかります。
![DSPASPSSN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/6ed6a867-0cb0-ff06-8af2-3d2c17c5ad1d.png)

また、この時まだIBMI753のノードとの同期は始まっていないので、CHGASPSSNコマンドを実行し、同期を開始します。今回はメニューから実行してみます。
![CHGASPSSN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/757571bf-c9f4-7dff-6f19-bcfe78abed5b.png)

コピーが開始されました。
![DSPASPSSN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/84309936-7577-68d8-d95d-4b92bd245a61.png)

さらにIBMI752を制限状態にするとIBMI753に以下のメッセージが送られます。
![DSPMSG QSYSOPR](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539469/7bd981e9-7874-b31a-3325-55a404a574cd.png)

同様に「G」で応答すると切り替えが始まります。

# 5. 終わりに
今回はマルチターゲット地理的ミラーリングの構成について紹介させていただきました。この機能により今までは2ノードのみだった地理的ミラーリングの構成が2サイト6ノードまで拡張できるようになりました。地理的ミラーリングやPowerHA SystemMirror for iを利用する場合は、ストレージ構成をIASPにする必要がありますが、近年のNVMeなどによるストレージのパフォーマンスの向上などによりストレージの制約も緩くなってきていると思います。またPowerVS環境でもPower Edge RouterによりPowerVS内のネットワーク構成も簡略化されています。地理的ミラーリングをIBM iの高可用性構成のオプションの1つとして検討してみてはいかがでしょうか？