Japan
サイト内の現在位置を表示しています。
負荷分散機能を使ってみよう ~ラウンドロビン方式編~
JobCenter Lab vol.20こんにちは。
WebSAM JobCenter ブログ担当の坂本です。
今回は、WebSAM JobCenterのジョブ負荷分散機能の一つであるラウンドロビン方式についてご紹介いたします。本機能がどのような機能で設定をどのようにすればよいかを説明させて頂きます。
負荷分散機能の概要
WebSAM JobCenterのジョブ負荷分散機能は以下の2つの方式があります。
①ラウンドロビン方式
複数のサーバに対してジョブを順繰りに転送します。この方式は各サーバのキューの溜まり具合は考慮しません。何らかの理由でジョブを転送できなかった場合には、転送可能なサーバへジョブを転送します。また、バージョンの異なるMG、SVを混在して利用することが可能です。下図の丸い図形はリクエストされたジョブで、丸い図形の中の数字はジョブの実行順序です。

図中のrrpipeclientとはラウンドロビン方式用のパイプキューです。
ラウンドロビン方式は投入されるリクエストが比較的短い時間で完了し、投入するジョブの負荷もあまり変わらない環境での使用に適しています。
②デマンドデリバリ方式
パイプキューとバッチキューが相互に通信し、キューの溜まり具合に応じて各リクエストが最も早く実行される実行先を探してジョブを投入します。連携するMG、SVはマシングループを構成している必要があるのでMGとSVのバージョンが一致している必要があります。
デマンドデリバリ方式は投入するジョブの処理時間や使用する資源に大きくばらつきがある場合に使用します。
※デマンドデリバリ方式の詳細については今回割愛させて頂きます
今回のブログではWindows版WebSAM JobCenterのラウンドロビン方式の設定方法と動作確認方法について記載します。
ラウンドロビン方式の設定方法
以下の条件でラウンドロビン方式の設定を実施します。
- MG1台、SV3台(全てWindowsServer)
- SVのホスト名はServer1、Server2、Server3
- MGのラウンドロビン方式用のパイプキューからSVのバッチキューへジョブを転送し実行する
- ラウンドロビン方式用のパイプキュー名はpipeR
SV上のバッチキュー名はrrbatch - MGに各SVのマシン登録が済んでいること
- MGとSVの名前解決や必要なポートの穴あけが完了していること
- ※マシン間の通信をチェックする場合 jc_ping という便利なコマンドがあります。JobCenter Lab vol.6「あれ、つながらない!WebSAM JobCenterの導通確認をするときのノウハウ」を参照してください
<設定方法>
MGのサーバにログインし、以下のNQSを制御するqmgrコマンドを実行し、ラウンドロビン方式用のパイプキューrrpipeclientを作成します。
cd /d C:\JobCenter\SV\bin\qcmd |
「qmgr」コマンドを実行します。
qmgr |
以下のサブコマンドを実行してください。
Mgr: create pipe_queue pipeR priority=10 run_limit=3 server=(rrpipeclient) destination=(rrbatch@Server1, rrbatch@Server2, rrbatch@Server3) |
以下のメッセージが出力されていることを確認します。
Queue pipeR created. NQS manager[TCML_COMPLETE ]: Transaction complete at local host. |
Server1~Server3のマシン登録が完了していない場合には「No such machine.」といったエラーメッセージが出力されます。マシン登録を実施して再度上記のサブコマンドを実行してください。
上記サブコマンドを実行することで多重度3、転送先がServer1~3のrrbatchへ転送するpipeR(これがrrpipeclientです)がMG上に作成されます。MGのキュー一覧に表示されない場合にはF5キーを押して画面を更新してください。

作成したパイプキューを使用するために「pipeR」を右クリックして「開始」、「有効」をそれぞれ選択してください。

各SV上でバッチキューrrbatchを作成します。

設定は以上で終了です。
動作確認をしてみよう
それでは実際に作成したパイプキュー(pipeR)を使用して動作を確認してみます。以下のジョブネットワークを作成してください。
並列処理部品を使用し、単位ジョブを3つ並列実行させるジョブネットワークを作成し ます。単位ジョブのスクリプトには「hostname」と記載してください。

ジョブネットワークを右クリックして「パラメータ」を選択します。
「デフォルト投入キュー」にMG上の「pipeR」パイプキューを指定します。

以上で準備は完了です。作成したジョブネットワークを実行してみましょう。
ジョブネットワークを右クリックして「即時実行」-「OK」を選択します。
正常終了したらJOB1、JOB2、JOB3をダブルクリックで開き、「出力結果」タブにhostnameコマンドの結果であるServer1、Server2、Server3がそれぞれ出力されていることを確認してください。pipeRパイプキューで転送設定されているサーバ3台に対して順繰りにジョブ実行できていることが確認できました。

追加の動作確認でServer1のバッチキューが停止していた場合にどのような動作になるか確認してみましょう。Server1の「rrbatch」バッチキューを右クリックして「無効」を選択します。これでServer1の「rrbatch」バッチキューが利用できなくなりました。
再度、作成したジョブネットワークを実行してみましょう。
ジョブネットワークを右クリックして「即時実行」-「OK」を選択します。
正常終了したらJOB1、JOB2、JOB3をダブルクリックで開き、「出力結果」タブに「Server2」、「Server3」、「Server2」がそれぞれ出力されていることを確認してください。「Server1」は利用できないためサーバ2台に対して順繰りにジョブ実行できていることがわかりました。

おわりに
今回のブログはいかがでしたでしょうか?。ラウンドロビン方式の負荷分散機能の構築方法や利用シーンについてご確認頂ければ幸いです。
本ブログは皆様から頂いた様々なお問合せを参考にして更新しております。今後も皆様のお役に立つ情報を発信して行きたいと考えておりますのでWebSAM JobCenterブログをよろしくお願いいたします。
[参考情報]
https://jpn.nec.com/websam/jobcenter/download.html
⇒WebSAM JobCenter NQS機能利用の手引き
⇒WebSAM JobCenterコマンドリファレンス