SAPシステムでの負荷分散

今回はSAP S/4HANAやSAP NetweaverなどのSAPシステムにおける負荷分散について説明します。
SAPシステムにおける負荷分散の方法として、下記が用意されています。
① ログオングループ ( Logon Group )
② SAP Web Dispacher
③ RFCサーバグループ ( RFC Server Group )
④ ジョブサーバグループ ( Batch Server Group )
■ ログオングループ
SAPシステムへのログオンを各アプリケーションサーバインスタンス ( PAS / AAS ) 間で分散させるための機能。
SAP GUI for Windowsからのログオンや他ABAPシステムまたは非SAPシステムからRFC経由でログオンする際の負荷分散として使用します。
グループにアプリケーションサーバインスタンスを登録することで、グループに向けてログオン要求が来たらグループ内のアプリケーションサーバインスタンスにログオンを振り分けます。
ログオングループの設定は、トランザクションコード SMLG から設定できます。

ログオングループでのアプリケーションサーバインスタンスの振り分けは、ASCSインスタンスのメッセージサーバが行っています。メッセージサーバはログオングループに属するアプリケーションサーバインスタンスの状態を管理しており、ログオン先サーバの決定方法に従って、ログオン要求をアプリケーションサーバインスタンスに振り分けます。
このためログオングループを使用したログオンでは、ASCSインスタンスのメッセージサーバへのアクセスが発生します。( メッセージサーバのポート番号「36xx」に対して通信が発生する。)
ログオン先のアプリケーションサーバインスタンスは、以下の決定方法から選択します。
・ 最高パフォーマンス ( Best Performance )
・ ラウンドロビン ( Round Robin )
・ 加重ラウンドロビン ( Weighted Round Robin )
最高パフォーマンス ( Best Performance ) ( デフォルト )
デフォルトのログオン先アプリケーションサーバインスタンスの決定方法。
インスタンスの応答時間やログオンユーザ数から算出されたサーバ品質とデルタ品質(※)をもとに最高品質のインスタンスが決定されます。
接続元は、この決定された最高品質のインスタンスにログオンします。
サーバ品質は、そのインスタンスにログオンする毎にデルタ品質だけ低下します。
各インスタンスはプロファイルパラメータ「rdisp/autoabaptime」( デフォルト:300秒 ) で指定された間隔または、5回そのインスタンスにログオンが発生したら、サーバ品質とデルタ品質の情報をメッセージサーバに送信します。メッセージサーバは受信した各インスタンスのサーバ品質から次のログオン先のインスタンスを決定します。
※ デルタ品質とは「新たなログオンに対する品質の変動値」のこと。
ラウンドロビン ( Round Robin )
ラウンドロビンの負荷分散を使用するには、ログオングループの定義で “ 外部RFC対応 ” を有効にする必要があります。
ログオングループに所属する全てのアプリケーションサーバインスタンスはサーバ品質が「1,000」、デルタ品質が「1」で割り当てられます。全てのインスタンスで同じサーバ品質・デルタ品質のため、理論上は全てのインスタンスに均等にログオンが分散されます。
サーバ品質は最高パフォーマンスと同じく、そのインスタンスにログオンする毎にデルタ品質だけ低下します。
しかし、多くのRFCプログラムが同時に実行されるとログオン先インスタンスが全て同じインスタンスにログオンしてしまう問題が発生します。このため、RFCプログラムの同時実行が多い場合は加重ラウンドロビンを使用することが推奨されてます。
加重ラウンドロビン ( Weighted Round Robin )
加重ラウンドロビンの負荷分散を使用するには、ログオングループの定義で “ 外部RFC対応 ” を有効にする必要があります。
ラウンドロビンのサーバ品質とデルタ品質に加えて、アプリケーションサーバインスタンスの処理能力に応じた重みが設定されます。重みの高いインスタンスに優先してログオンリクエストが送られます。
インスタンスの重みが上限に達したら、インスタンスリストの最後に周り、リスト内で次に重みの高いアプリケーションサーバインスタンスにログオンリクエストの送信先を切替ます。
このように通常のラウンドロビンに加えて、アプリケーションサーバインスタンスの処理能力を加味してログオン先を振り分けることになるため、特定のインスタンスがボトルネックとなることを回避し、バランス良くログオンを振り分けることができます。
なお、ラウンドロビンと加重ラウンドロビンはSAPGUI接続では使用できません。外部からのRFC接続にのみ使用可能となります。
■ SAP Web Dispatcher
SAPシステムへのHTTP(S)ベースのログオンリクエストをSAPアプリケーションサーバインスタンス ( PAS / AAS ) 間で分散するための製品となります。
SAP Web Dispatcherは、クライアント ( 接続元 ) とSAPアプリケーションサーバインスタンスの間に配置します。なお、SAP Web Dispatcherはプロキシではありませんが、リバースプロキシの機能を備えています。
SAP Web Dispatcherは、( ABAP ) SAP Central Services インスタンスのメッセージサーバにアクセスし、アプリケーションサーバインスタンスのリストからログオン先のインスタンスにログオンリクエストを転送します。
転送先は、アプリケーションサーバインスタンスの処理能力 ( ABAPシステムではダイアログワークプロセス数、Javaシステムではサーバプロセス数 ) によって決定されます。
なお、ABAPシステムではログオングループを使用することも可能となります。 ( ラウンドロビンまたは加重ラウンドロビンのログオングループのみ )

SAP Web DispatcherはFioriやWebGUI ( SAP GUI for HTML ) などのWebアクセス時の負荷分散やエンドツーエンドSSLやHTTP⇔HTTSへの切替で使用します。
SAP Web Dispatcherはスタンドアロン製品版と ( A ) SCSインスタンス ( ( ABAP ) SAP Central Services ) 統合版の2種類あります。
SAP Web DispatcherはABAP、JAVA両方のSAPシステムで使用することができます。
■ RFCサーバグループ
SAPシステム内の内部RFC向けの負荷分散機能。内部RFCの通信 ( 非同期RFC ) をRFCサーバグループで指定したアプリケーションサーバインスタンス間で分散する。
主な用途としては、並列処理ジョブに対して実行先サーバを制御したい場合になります。
並列処理ジョブのジョブ自体はバックグラウンドワークプロセスで起動されますが、並列処理タスクはダイアログワークプロセスで実行されます。
デフォルトの並列処理ジョブの並列処理タスクの実行先サーバは、全てアプリケーションサーバインスタンスが対象となります。
RFCサーバグループを使用することで、実行先のアプリケーションサーバインスタンスを制御することが可能となります。

Basisでの並列処理ジョブとしては、主にクライアントコピーのジョブが該当します。クライアントコピージョブは並列処理可能なジョブであるため、RFCサーバグループを指定することで、クライアントコピーの処理を特定のアプリケーションサーバインスタンスで実行することが可能となります。
なお、外部からのRFCログオンには使用できません。
RFCサーバグループの設定は、トランザクションコード RZ12 から設定できます。
RFCサーバグループでは、各アプリケーションサーバインスタンスに対して、リソースパラメータが設定可能となります。
リソースパラメータのデフォルト値は、全てプロファイルパラメータの値が利用されています。

■ ジョブサーバグループ
バックグラウンドジョブの実行先サーバをグループ化する機能。バックグラウンドジョブの実行先にジョブサーバグループを指定している場合は、ジョブサーバグループに所属するサーバでジョブが実行されるようになります。このため、ジョブサーバグループは厳密に言うと、ジョブの実行先サーバの負荷分散を行うための機能ではありません。
SAPシステムのバックグラウンドジョブは実行先サーバを指定しない場合、ランダムでジョブの実行先が選択されるため、デフォルトで負荷分散されるようになっています。
ジョブサーバグループは、トランザクションコード SM61 から設定できます。

バックグラウンドジョブを特定のアプリケーションサーバインスタンスで実行する、または実行しなようにする場合などの利用が主な利用となるかと思います。