JP2016051446A - 計算機システム、計算機、負荷分散方法及びそのプログラム - Google Patents

計算機システム、計算機、負荷分散方法及びそのプログラム Download PDF

Info

Publication number
JP2016051446A
JP2016051446A JP2014178100A JP2014178100A JP2016051446A JP 2016051446 A JP2016051446 A JP 2016051446A JP 2014178100 A JP2014178100 A JP 2014178100A JP 2014178100 A JP2014178100 A JP 2014178100A JP 2016051446 A JP2016051446 A JP 2016051446A
Authority
JP
Japan
Prior art keywords
computer
processing
external system
processing request
application server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014178100A
Other languages
English (en)
Other versions
JP6272190B2 (ja
Inventor
辰彦 宮田
Tatsuhiko Miyata
辰彦 宮田
潤 吉原
Jun Yoshihara
潤 吉原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014178100A priority Critical patent/JP6272190B2/ja
Priority to US14/739,551 priority patent/US9736235B2/en
Publication of JP2016051446A publication Critical patent/JP2016051446A/ja
Application granted granted Critical
Publication of JP6272190B2 publication Critical patent/JP6272190B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】簡単な構成で計算機の負荷を分散する。【解決手段】計算機システムであって、複数の外部システムからの要求によって処理を実行する複数の計算機を備え、前記複数の計算機の各々は、メモリと、前記メモリを参照するプロセッサと、他の計算機と通信するためのネットワークインタフェースと、を有し、同一ネットワークセグメント内の他の計算機と、前記各計算機が算出した受付重み統計値を共有しており、前記各計算機のプロセッサは、一つの前記外部システムから同一ネットワークセグメント内に同報されるブロードキャストを受信し、前記共有される受付重み統計値を参照して、前記受信したブロードキャストに応答するかを判定し、応答すると判定した場合、前記一つの外部システムに処理要求を送信させるために、前記ブロードキャストを送信した外部システムに応答を返信する。【選択図】図1

Description

本発明は、計算機に関し、特に、アプリケーションを実行する計算機に関する。
<分散アプリケーション基盤のアーキテクチャ>
近年、分散配置型アプリケーションサーバは、サーバノードのスケールアウトを容易にし及び冗長性を確保するために、ACT−STANBYで代替サーバを予め用意しておく高信頼性を有する固定的なアーキテクチャがある。この他に、ノードを分散配置して、分散配置されたノードを監視し、状態通知ノードが各ノードの状態を他のノードへ通知し、各ノードが互いの状態を把握しながら、障害が発生したノードの代替をするアーキテクチャが提案されている。
この様な分散配置型アプリケーションサーバの実装例として特許文献1に記載されるサーバアクセス制御システムがある。特許文献1に記載されるサーバアクセス制御システムでは、サーバは、全て同一のIPv6エニキャストアドレスとマルチキャストアドレスとを実装し、端末1からのアクセスはエニキャストアドレスを用いる。サーバは、端末1からのファイル要求に対し提供不可と判断した場合に、マルチキャストアドレスを用いて該ファイル要求内容を他のサーバに送信し、提供可能な旨を最初に受信したサーバのユニキャストアドレスをルーティング情報として端末1へ通知する。端末1は、ルーティング情報を受信した後、受信したエニキャストアドレスをルーティング情報とするIPv6拡張ヘッダを付加してエニキャストアドレス宛のメッセージを送信する。
<一般的なアプリケーションサーバでの負荷分散・冗長管理技術>
一般的なアプリケーションサーバにおいて、大量のリクエスト処理に対応するためにスケールアウトして処理能力を増やす場合、主に以下の二つの方法が採用される。
一つ目は、負荷分散装置による処理分散である。具体的には、アプリケーションサーバ群の前段にL4SWやL7SW等の負荷分散装置を配置する。外部システムは、負荷分散装置のIPアドレスに対して処理要求を送信する。処理要求を受信した負荷分散装置は、後段に設置した各アプリケーションサーバの状態に従って処理を振り分ける。アプリケーションサーバをスケールアウトする場合、追加するアプリケーションサーバを負荷分散装置に登録する。負荷分散装置は、受信した処理要求を追加されたアプリケーションサーバに振り分けることによって、追加されたアプリケーションサーバは処理要求を受信する。
二つ目は、ネームサーバによるアプリケーションサーバのアドレスの管理である。具体的には、アプリケーションサーバ群のIPアドレスを管理するネームサーバを配置する。ネームサーバは、各アプリケーションサーバの状態を監視する。外部システムは、アプリケーションサーバへ処理要求を送信する前にアプリケーションサーバのIPアドレスをネームサーバに問い合わせ、応答で受信したIPアドレスに処理要求を送信する。アプリケーションサーバをスケールアウトする場合、追加するアプリケーションサーバをネームサーバに登録する。ネームサーバは、外部システムからのIPアドレスの問い合わせに対して、追加されたアプリケーションサーバのIPアドレスを応答することによって、追加されたアプリケーションサーバは処理要求を受信する。
<一般的なアプリケーションサーバでの負荷分散ポリシ>
一般的に、負荷分散技術を導入して複数のアプリケーションサーバを配置した場合、外部システムからのリクエストをどのサーバに割り振るかについて、主に以下の二つの方法が採用される。
一つ目は、ラウンドロビンである。具体的には、外部システムからのリクエストを、複数のアプリケーションサーバに順に振り分ける方式である。ラウンドロビンでは、外部システムからのリクエストを各アプリケーションサーバに均等に振り分けることができる。
二つ目は、アプリケーションサーバの負荷によって処理を振り分ける方法である。複数のアプリケーションサーバのCPU負荷、メモリ使用量、ネットワークの利用帯域など、アプリケーションサーバから取得できる情報を用いて、現在の負荷が低いアプリケーションサーバに処理要求を転送する。この方法では、各アプリケーションサーバの現在の負荷状態に応じて、負荷を効率よく分散できる(例えば、特許文献2参照)。
特開2006−338624公報 特開2010−9449公報
前述した従来技術を用いた負荷分散では、アプリケーションサーバの前段に負荷分散装置又はネームサーバを導入する必要がある。
通常、外部システムの増加や処理要求量の増加に伴ってアプリケーションサーバを増設するが、負荷分散装置やネームサーバがボトルネックとなり、アプリケーションサーバの増設が限界に達する。また、負荷分散装置やネームサーバを配置することによって、システム内で管理する装置が増加して管理コストが高くなる。
さらに、特許文献1に記載された技術では、ファイルを提供可能と判断した場合に、サーバは、ファイル送信パケットとして要求されたファイルを指定されたアドレスから、端末へ送信する。その際、端末からのエニキャストアドレス宛のメッセージが自身のユニキャストアドレスへ到達されるようなルーティング情報をIPv6拡張ヘッダとして付加したファイル送信パケットを作成、送信する(段落[0028]参照)。しかし、他のサーバの状況を考慮して、処理の可否を判断していない。
また、従来技術を用いた負荷分散では、CPU負荷状態、メモリ使用量、ネットワーク帯域の利用量などの一般的な負荷計測値を用いることによって、サーバ全体の現在の負荷状態や、サーバ全体の過去の負荷状態の統計値を取得することができる。しかし、サーバ全体的の情報及び各サーバの情報では、将来において各サーバへ掛かる負荷状態の予測が困難で、負荷分散の効率を向上することができない。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、計算機システムであって、複数の外部システムからの要求によって処理を実行する複数の計算機を備え、前記複数の計算機の各々は、メモリと、前記メモリを参照するプロセッサと、他の計算機と通信するためのネットワークインタフェースと、を有し、同一ネットワークセグメント内の他の計算機と、前記各計算機が算出した受付重み統計値を共有しており、前記各計算機のプロセッサは、一つの前記外部システムから同一ネットワークセグメント内に同報されるブロードキャストを受信し、前記共有される受付重み統計値を参照して、前記受信したブロードキャストに応答するかを判定し、応答すると判定した場合、前記一つの外部システムに処理要求を送信させるために、前記ブロードキャストを送信した外部システムに応答を返信する。
本発明の代表的な実施の形態によれば、簡単な構成で計算機の負荷を分散することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
第1の実施例のネットワークの概要を説明する図である。 第1の実施例のアプリケーションサーバ及び外部システムの物理的な構成を示すブロック図である。 第1の実施例の外部システムの機能ブロック図である。 第1の実施例のアプリケーションサーバの機能ブロック図である。 第1の実施例の処理カウント数を更新する処理のフローチャートである。 第1の実施例の受付重み統計値算出処理のフローチャートである。 第1の実施例の自ノード管理テーブルの構成例を示す図である。 第1の実施例の自ノード管理テーブルの構成例を示す図である。 第1の実施例の処理カウント管理テーブルの構成例を示す図である。 第1の実施例の受付重み統計値管理テーブルの構成例を示す図である。 第1の実施例の受付重み統計値管理テーブルの構成例を示す図である。 第1の実施例の実行処理管理テーブルの構成例を示す図である。 第1の実施例のキューレコード追加時の更新処理のフローチャートである。 第1の実施例のキューレコード削除時の更新処理のフローチャートである。 第1の実施例の処理要求管理キューの構成例を示す図である。 第1の実施例のアプリケーションサーバ間で情報を共有するシーケンス図である。 第1の実施例の他ノード管理テーブルの構成例を示す図である。 第1の実施例の他ノード管理テーブルの構成例を示す図である。 第1の実施例の処理シーケンスである。 第1の実施例の処理シーケンスである。 第1の実施例の処理要求送受信機能が実行する処理を示すフローチャートである。 第1の実施例の受信可否判定処理のフローチャートである。 第1の実施例の処理要求受信処理の詳細を示すフローチャートである。 第1の実施例の受付設定管理テーブルの構成例を示す図である。 第1の実施例の受付重み統計値管理テーブルの構成例を示す図である。 第1の実施例の受付重み統計値管理テーブルの構成例を示す図である。 第1の実施例の受付重み統計値算出処理のフローチャートである。 第1の実施例の受付重み統計値管理テーブルの構成例を示す図である。 第1の実施例の受付重み統計値管理テーブルの構成例を示す図である。
図1は、本発明の第1実施例のアプリケーションサーバ2と、該アプリケーションサーバ2にアクセスする外部システム6との間を接続するネットワークの概要を説明する図である。
まず、図1を用いて、本実施例のアプリケーションサーバ2(分散ノード)について、端末−サーバ間における通信のネットワークの概要、及びアプリケーションサーバ2とノードとの間のネットワークの概要を説明する。アプリケーションサーバ2−1からアプリケーションサーバn(2−n)は、同一のネットワークセグメント7内のIPアドレスを持ち、ルータ4の配下の一つのセグメント内で接続している。また、アプリケーションサーバ2−1〜2−nを収容するネットワークセグメント内には、状態通知ノード1が設けられる。複数の外部システム6−1〜6−nは、ネットワーク5及びルータ4を経由して、各アプリケーションサーバ2−1〜2−nに処理要求を送信する。
ネットワーク5は、TCP/IPプロトコルを用いた、IPネットワークでよいが、他の形式のネットワークでもよい。
図2は、第1実施例のアプリケーションサーバ2及び外部システム6の物理的な構成を示すブロック図であり、図3、図4にて後述するアプリケーションサーバ2及び外部システム6の機能ブロックを実現するためのハードウェアを示す。
アプリケーションサーバ2及び外部システム6は、CPU12、メモリ13、ストレージ16、インタフェース20、21を有する計算機である。
CPU12は、メモリ13に格納されたアプリケーションプログラム15から、その動作手順を読み出して、図3、図4に示した種々の処理モジュールの動作を実行する。メモリ13は、ストレージ16に格納されたプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。ストレージ16は、例えば、磁気記憶装置、フラッシュメモリ等の大容量かつ不揮発性の記憶装置であり、CPU12によって実行されるプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、アプリケーションプログラム15は、プログラムを起動する際に、ストレージ16に格納されたアプリケーションプログラムファイル18がコピーされることによって生成される。
CPU12が実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して計算機に提供され、非一時的記憶媒体であるストレージ16に格納される。このため、計算機は、リムーバブルメディアからデータを読み込むインタフェースを有するとよい。
データベース22及びメモリ13上のアプリケーション情報一時格納領域26は、各処理モジュールが動作する際に必要な情報を格納しており、CPU12は、この情報を必要に応じて読み出し及び書き込む。具体的には、CPU12は、インタフェース21を経由して、データベース22に格納されたデータを読み出し及び書き込む。
データベース22は、例えば、磁気記憶装置、フラッシュメモリ等の大容量かつ不揮発性の記憶装置及び該記憶装置のデータの入出力を制御する制御システム(例えば、DBMS)によって構成される。データベース22とアプリケーションサーバ2は物理的に異なる装置で構成しても、一つの装置内に構成してもよい。また、アプリケーションサーバ2及び外部システム6の各処理モジュールの一部をソフトウェアではなく、ハードウェアで構成してもよい。さらに、外部システム6は、必要に応じてデータベース22を持ってもよいし、持たなくてもよい。
インタフェース20は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインタフェース装置である。また、アプリケーションサーバ2及び外部システム6は、インタフェース20を経由して、物理的に異なる位置に配置された装置と通信する。
本実施例のアプリケーションサーバ2及び外部システム6の各々は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
次に、図3、図4の機能ブロック図、図15、図16のシーケンス図、図17の外部システム6の処理のフローチャート、及び図18、図19のアプリケーションサーバ2の処理のフローチャートを用いて、外部システム6がアプリケーションサーバ2に処理を要求するまでの動作を説明する。
図3は、第1実施例の外部システム6の機能ブロック図である。
外部システム6は、処理要求送信先アプリケーションサーバ管理機能31、ブロードキャスト送受信機能34、ユーザプログラム保持・実行機能37及び処理要求送受信機能39を有する。
処理要求送信先アプリケーションサーバ管理機能31は、外部システム6が処理要求を送信するアプリケーションサーバ2の送信元情報(IPアドレス、送信先ポート番号など)、及びアプリケーションサーバ2を特定するためのブロードキャスト送信の情報(IPアドレス、ポート番号など)を管理する機能ブロックである。
処理要求送信先アプリケーションサーバ管理機能31は、送信先ノード管理モジュール32を有する。送信先ノード管理モジュール32は、アプリケーションサーバ2の間の通信状況に合せでデータを登録及び削除する。具体的には、ブロードキャスト送信やブロードキャスト応答を受信した時、アプリケーションサーバ2のIPアドレスやポート番号を記録する。また、アプリケーションサーバ2に処理要求が到達しなかった時、記録したIPアドレスやポート番号を削除する。
ブロードキャスト送受信機能34は、アプリケーションサーバ2を特定するためのブロードキャストの送受信を行う機能ブロックであり、ブロードキャスト情報生成・結果解析モジュール35及びブロードキャスト送受信モジュール36を有する。ブロードキャスト情報生成・結果解析モジュール35は、送信するブロードキャストのデータを生成し、受信したブロードキャスト応答のデータを解析する。ブロードキャスト送受信モジュール36は、ブロードキャストパケットを送信し、応答を待ち受ける。
ユーザプログラム保持・実行機能37は、外部システム6が実行するプログラムを保持し、実行する機能ブロックであり、保持されたユーザプログラム38を適時実行する。
処理要求送受信機能39は、外部システム6からアプリケーションサーバ2への処理要求を送受信する機能ブロックである。処理要求送受信機能39は、処理要求先判定モジュール40、処理要求生成・処理結果解析モジュール41及び処理要求送受信モジュール42を有する。
処理要求先判定モジュール40は、ユーザプログラム38からアプリケーションサーバ2へ送信する処理要求を受けた時、処理要求の宛先となるアプリケーションサーバ2のIPアドレス及びポート番号を、送信先ノード管理モジュール32から取得する。処理要求生成・処理結果解析モジュール41は、送信する処理要求のデータ作成及び受信した処理結果応答のデータを解析する。処理要求送受信モジュール42は、処理要求パケットを送信し、応答を待ち受ける。
図4は、第1実施例のアプリケーションサーバ2の機能ブロック図である。
アプリケーションサーバ2は、ブロードキャスト管理機能51、ブロードキャスト送受信機能55、アプリケーションサーバ状態管理機能58、分散状態送受信機能63、要求処理実行機能66及び処理要求送受信機能71を有する。
ブロードキャスト管理機能51は、外部システム6から受信したブロードキャストに応答を返信するか判定する機能ブロックであり、受付設定管理テーブル52、受付設定管理部53及びブロードキャスト応答可否判定部54を有する。受付設定管理テーブル52は、ブロードキャストパケットを待ち受けるポート番号を管理するためのテーブルである(図20参照)。受付設定管理部53は、受付設定管理テーブル52からデータを取得する。ブロードキャスト応答可否判定部54は、自ノード及び他ノードの状態に基づいて、外部システム6から受信したブロードキャストに応答するかを判定する。
ブロードキャスト送受信機能55は、外部システム6からブロードキャストを受信し、受信したブロードキャストに対する応答を返信する機能ブロックであり、受信ブロードキャスト分析・応答生成モジュール56及びブロードキャスト受信・応答返信モジュール57を有する。受信ブロードキャスト分析・応答生成モジュール56は、受信したブロードキャストパケットのデータを解析し、受信したブロードキャストパケットに返信する応答のデータを生成する。ブロードキャスト受信・応答返信モジュール57は、ブロードキャストパケットを待ち受け、ブロードキャストパケットへの応答パケットを送信する。
アプリケーションサーバ状態管理機能58は、他ノードの状態を保持し、自ノードの状態を計算及び保持する機能ブロックであり、他ノード管理テーブル59、他ノード状態管理部61、自ノード管理テーブル60及び自ノード状態管理部62を有する。他ノード管理テーブル59は、他ノードの状態を保持するテーブルである(図14A参照)。また、他ノード管理テーブル59は、図示を省略する処理カウント管理テーブル131(図8参照)及び受付重み統計値管理テーブル371(図9A参照)を含む。他ノード状態管理部61は、他ノード管理テーブル59のデータを入出力する。自ノード管理テーブル60は、自ノードの状態を保持するテーブルである(図7A参照)。自ノード状態管理部62は、自ノードの処理状況に応じて自ノードの状態を算出し、算出した自ノードの状態を保持する。また、自ノード状態管理部62は、自ノードの状態が変化した場合、自ノードの状態を他ノードへ通知する。
分散状態送受信機能63は、他ノードの状態を受信し、自ノードの状態が変化した場合に他ノードへ通知する機能ブロックであり、状態解析・生成モジュール64及び他ノード状態送受信モジュール65を有する。状態解析・生成モジュール64は、受信した他ノードの状態のデータを解析し、送信する自ノードの状態のデータを生成する。他ノード状態送受信モジュール65は、他ノードからの状態通知を待ち受け、自ノードの状態の通知パケットを送信する。
要求処理実行機能66は、アプリケーションサーバ2内で実行する処理モジュールを保持し、外部システム6からの要求に応じて処理を実行する機能ブロックであり、実行処理管理テーブル67、実行処理管理部68及び要求処理実行部70を有する。実行処理管理テーブル67は、実行する処理を保持するテーブルである(図10参照)。実行処理管理部68は、実行処理管理テーブル67で管理される処理に関する情報を入出力する。要求処理実行部70は、外部システム6から受けた処理要求に対応する処理のモジュールを取得して、実行する。
処理要求送受信機能71は、外部システム6から処理要求を受信し、処理結果を応答する機能ブロックであり、処理要求管理キュー72、処理要求解析・処理結果返信モジュール73及び処理要求送受信モジュール74を有する。処理要求管理キュー72は、外部システム6から受信した複数の処理要求の状態を管理する(図12参照)。具体的には、外部システム6から受信した処理要求はキュー72にキューイングされ、処理応答を返信すると対応する処理要求をキュー72から削除する。処理要求解析・処理結果返信モジュール73は、受信した処理要求のデータを解析し、返信する応答のデータを生成する。処理要求送受信モジュール74は、外部システム6からの処理要求パケットを待ち受け、処理結果応答を送信する。
次に、外部システム6がアプリケーションサーバ2に処理を要求する動作を説明する。
まず、図15のステップ255で、外部システム6がアプリケーションサーバ2へ処理要求を送信したい旨の要求が、ユーザプログラム38(図3参照)内で発生する。これは、例えば、Javaプログラム(Javaは登録商標、以下同じ。)の場合、図3に示す処理要求送信先アプリケーションサーバ管理機能31、ブロードキャスト送受信機能34、処理要求送受信機能39を包含したプログラムライブラリをユーザプログラム38にインポートして、ユーザプログラム38からこれらのライブラリを参照可能にする。そして、ユーザプログラム38内で、インポートしたライブラリのメソッドを呼び出すことによって要求を発生することができる。
図17は、発生した処理要求を受け付けた後に、処理要求送受信機能39が実行する処理を示すフローチャートである。
まず、ステップ281で、処理要求送受信機能39が処理要求を受け付けると、処理要求生成・処理結果解析モジュール41はアプリケーションサーバ2へブロードキャスト送信をする処理要求のメッセージを生成する(ステップ282)。次に、処理要求送受信モジュール42は、処理要求先判定モジュール40を経由して、送信先ノード管理モジュール32に処理要求先を取得する(ステップ283)。送信先ノード管理モジュール32は、受け付けた処理要求を送信するアプリケーションサーバ2の情報(例えば、IPアドレス)を保持しているかを判定する(ステップ284)。送信先のアプリケーションサーバ2の情報を保持している場合、ステップ290へ進み、処理要求先を決定し、決定された処理要求先を処理要求先判定モジュール40を経由して、処理要求送受信モジュール42へ返信する。
一方、ステップ284で、送信先のアプリケーションサーバ2の情報を保持していない場合、アプリケーションサーバ2が存在するネットワークセグメントのブロードキャストIPアドレス及びネットワークポートにブロードキャストパケットを送信する(ステップ285)。このアプリケーションサーバ2が存在するネットワークセグメントのブロードキャストIPアドレス及びネットワークポートは、予め外部システム6に設定ファイルとして保持される。例えば、図1に示す様に、アプリケーションサーバ2のネットワークセグメントが192.168.0.0/24である場合、ブロードキャストアドレスは192.168.0.255となる。
図15のSeq1:初回処理要求255のシーケンスを用いて、外部システム6が処理要求をアプリケーションサーバ2に送信する正常系の動作(ブロードキャストの送信、処理要求の送信、結果を正常に受信)を説明する。
前述したステップ284の処理は、図15のステップ232の要求先判定に対応する。外部システム6が送信したブロードキャストパケット233−1は、一旦ルータ4で受信した後、ルータ4がネットワークセグメント配下の全てのIPアドレス(アプリケーションサーバ2)にブロードキャストパケット233−2を送信する。
各アプリケーションサーバ2では、ブロードキャスト受信・応答返信モジュール57が、受付設定管理テーブル52に予め設定されているIPアドレス及び受付ポート番号で待ち受けをしている。
図20は、受付設定管理テーブル52の構成例を示す図である。
受付設定管理テーブル52は、設定項目に対応する値を保持するテーブルであり、受付設定管理部53によってアクセスされる。例えば、レコード342にはIPアドレスが設定され、レコード343には受付ポート番号が設定される。
外部システム6が送信するブロードキャストパケットのポート番号は、アプリケーションサーバ2が待ち受けているポート番号(レコード343の値)と一致しているので、アプリケーションサーバ2は送信されたブロードキャストパケットを受信する。
次に、アプリケーションサーバ2は、受信可否を判定する(ステップ234)。この受信可否判定の詳細を図18を用いて説明する。
図18は、受信可否判定処理のフローチャートである。
まず、アプリケーションサーバ2では、ブロードキャスト受信・応答返信モジュール57がブロードキャストパケットを受信する(ステップ301)。
次に、受信ブロードキャスト分析・応答生成モジュール56が、ブロードキャストパケットの内容を解析し、受信したブロードキャストパケットのIPアドレスから、ブロードキャストパケットを送信した外部システム6を判定し、当該ブロードキャストパケットに応答すべきかの判定をブロードキャスト応答可否判定部54に依頼する(ステップ302)。
ブロードキャスト応答可否判定部54は、判定の依頼を受けると、アプリケーションサーバ状態管理機能58にアクセスして、アプリケーションサーバ状態管理機能58内の処理カウント管理テーブル131(図8参照)及び受付重み統計値管理テーブル371(図9A参照)を参照する(ステップ303)。
図8は、処理カウント管理テーブル131の構成例を示す図である。
処理カウント管理テーブル131は、処理要求を受け付けたプロセスの数を保持するテーブルであり、他ノード状態管理部61によってアクセスされる。処理カウント管理テーブル131は、外部システムのIPアドレス132、処理133〜135及び重み合計値136のカラムを有する。すなわち、処理カウント管理テーブル131は、全ての外部システム6のIPアドレスをカラム132に記録したレコードを保持している。つまり、処理カウント管理テーブル131は、集計期間において処理要求を受け付けた外部システム6の数のレコードを保持する。
図9A、図9Bは、受付重み統計値管理テーブル371の構成例を示す図である。
受付重み統計値管理テーブル371は、外部システム6毎の受付重み統計値を管理するテーブルであり、他ノード状態管理部61によってアクセスされる。受付重み統計値管理テーブル371は、外部システムのIPアドレス372に対応して受付重み統計値373を保持する。受付重み統計値管理テーブル371は、処理カウント管理テーブル131と同様に、全ての外部システム6のIPアドレスをカラム372に記録したレコードを保持している。つまり、受付重み統計値管理テーブル371は、集計期間において処理要求を受け付けた外部システム6の数のレコードを保持する。
図18に戻って説明を続ける。受信したブロードキャストパケットを送信した外部システム6のIPアドレスと、処理カウント管理テーブル131に記録されたIPアドレス132と、受付重み統計値管理テーブル371に記録されたIPアドレス372とを比較することによって、ブロードキャストパケットを送信した外部システム6のIPアドレスに対応するレコードが各テーブルに存在するかを判定する(ステップ304)。
いずれかのテーブルにレコードが存在する場合、各テーブルから該当レコードを削除して(ステップ305)、ステップ306に進む。一方、いずれのテーブルにもレコードが存在しない場合、ステップ306に進む。
ステップ306では、ブロードキャスト応答可否判定部54は、自ノード状態管理部62を経由して自ノード管理テーブル60を参照することによって、自ノードの負荷状態を取得する。
図7Aは、自ノード管理テーブル60の構成例を示す図である。
自ノード管理テーブル60は、設定項目121と値122とを組み合わせたレコードによって自ノードの状態を管理するテーブルであり、自ノード状態管理部62によってアクセスされる。例えば、レコード123にはノード名が設定され、レコード124にはIPアドレスが設定され、レコード125には処理要求受け付けポート番号が設定され、レコード126には受付重み統計値が設定され、レコード127には受付重み現在値が設定され、レコード128には現在の受付可否状態が設定され、レコード129には状態通知ノード1のIPアドレスが設定される。
例えば、レコード128の現在の受付可否状態の値によって、ノードの負荷状態を知ることができる。レコード128の値が「受付可」である場合、プロセスの受け付けが可能な低い負荷状態である。また、レコード128の値が「受付不可」である場合、プロセスの受け付けが不可能な高い不可状態である。
図18に戻って説明を続ける。ステップ307では、ステップ306で取得した負荷状態(レコード128の現在の受付可否状態)の値が「受付不可」である場合、ステップ314に進み、ブロードキャストパケットに対して応答せずに、受信可否判定処理を終了する。
一方、ステップ306で取得した負荷状態の値が「受付可」である場合、ステップ308へ進み、他ノード状態管理部61を経由して他ノード管理テーブル59を参照して、自ノードの受付重み統計値と他ノードの受付重み統計値とを比較する。
図14Aは、他ノード管理テーブル59の構成例を示す図である。
他ノード管理テーブル59は、他ノードの状態を管理するためのテーブルであり、他ノード状態管理部61によってアクセスされる。他ノード管理テーブル59は、ノード名212、IPアドレス213、状態214、受付重み統計値215、受付可否状態216及び処理要求ポート番号217のカラムを有する。
ノード名212は他ノードの名称であり、IPアドレス213は他ノードのIPアドレスである。状態214は、他ノードが現在稼働中であるかを示し、「稼働中」又は「未稼働」のいずれかが記録される。受付重み統計値215は、他ノードの受付重み統計値である。受付可否状態216は、他ノードの現在の状態を示し、「受付可」又は「受付不可」のいずれかが記録される。
図18に戻って説明を続ける。ステップ308では、他ノード管理テーブル59のレコードのうち、状態214が「稼働中」であり且つ受付可否状態216が「受付可」であるノードを選択し、選択されたノードの受付重み統計値215の値を取得する。そして、ステップ306で取得した自ノード管理テーブル60から取得した自ノードの受付重み統計値126の値と、取得した他ノードの受付重み統計値とを比較する。例えば、自ノードの受け付け重み統計値の合計値を示すレコード127の値は「782」である。また、他ノード管理テーブル59からは、レコード218の受付重み統計値は「2200」であり、レコード221の受付重み統計値の合計値は「1022」である。
なお、対象ノードについて、図9Aに示す外部システム単位での受付重み統計値を比較してもよい。また、図21に示す処理毎の受付重み統計値を比較してもよい。
次に、ステップ309では、自ノードの受付重み統計値と他ノードの受付重み統計値とを比較した結果、自ノードが要求を受け付けるかを判定する。具体的には、自ノードの受付重み統計値が最小値であるかを判定する。自ノードの受付重み統計値が最小値ではない場合、ステップ314へ進み、ブロードキャストパケットに対して応答せずに、受信可否判定処理を終了する。一方、自ノードの受付重み統計値が最小値である場合、ステップ310へ進む。前述した例では、自サーバの受付重み統計値は「782」であり、他ノードの受付重み統計値が「2200」、「1022」であるため、自ノードが最小値があると判定され、ステップ310へ進む。
なお、ステップ308、309では、図14に示す他ノード管理テーブル59の受付重み統計値215の値を比較しているが、よりきめ細やかな比較を行うために、各ノードが共有する受付重み統計値管理テーブル(図9A)で管理される外部システム毎の受付重み統計値や、受付重み統計値管理テーブル(図21A、図21B)で管理される処理毎の受付重み統計値を用いて比較してもよい。
例えば、図23に示す外部システム毎の受付重み統計値をノード間で共有している場合、最も処理負荷が大きい外部システム6の重み統計値を各ノードの外部システム毎の受付重み統計値管理テーブルから選択する。そして、ステップ309で、選択された重み統計値が最小のノードが要求を受けると判定してもよい。図23に示す例では、アプリケーションサーバ2−1についてのテーブル401のレコード411と、アプリケーションサーバ2についてのテーブル402のレコード412と、アプリケーションサーバnについてのテーブル403のレコード413とを比較する。その結果、アプリケーションサーバ2−1の重み統計値「489」が最小であるため、アプリケーションサーバ2−1が要求を受けると判定する。また、アプリケーションサーバ2〜nは、重み統計値が最小ではないため、要求を受けないと判定する。
図23に示す受付重み統計値管理テーブルでは、各アプリケーションサーバの受付重み統計値の合計値414〜416は「1124」、「779」、「719」であるため、合計値で判定すればアプリケーションサーバnが要求を受けると判定できる。しかし、特定の外部システム6からの負荷の集中度を重視した場合、アプリケーションサーバnはIPアドレスが43.57.193.238の外部システム6から高い頻度で処理要求を受けており、一つの外部システム6からのアクセスの集中度は、アプリケーションサーバ2−1より高い。
また、例えば、図24に示す処理毎の受付重み統計値をノード間で共有している場合、ステップ309で、処理「p1」の要求数が最小のノードが処理を受けると判定してもよい。図24に示す例では、アプリケーションサーバ2−1についてのテーブル421のレコード431と、アプリケーションサーバ2についてのテーブル422のレコード432と、アプリケーションサーバnについてのテーブル423のレコード433とを比較する。その結果、アプリケーションサーバ2−1の要求数「15」が最小であるため、アプリケーションサーバ2−1が要求を受けると判定する。また、アプリケーションサーバ2〜nは、要求数が最小値ではないため、要求を受けないと判定をする。
このように重みの比較方法や、比較する値を変えることによって、処理要求を受けるアプリケーションサーバ2の全体の負荷だけでなく、様々な要素を用いて判定することができる。
図18に戻って説明を続ける。ステップ310では、ブロードキャスト応答可否判定部54が、ブロードキャストパケットに返信するために、自ノード状態管理部62を経由して自ノード管理テーブル60から応答情報を取得する。具体的には、ノード名123、IPアドレス124及び処理要求受付ポート番号125を自ノード管理テーブル60(図7A)から取得する。ブロードキャスト応答可否判定部54は、取得した情報を受信ブロードキャスト分析・応答生成モジュール56へ送信する。
次に、受信ブロードキャスト分析・応答生成モジュール56は、受信した情報に基づいてブロードキャストパケットへの応答メッセージを生成する(ステップ311)。そして、ブロードキャスト受信・応答返信モジュール57は、送信元の外部システム6のIPアドレス及びポート番号に応答を返信し(ステップ312)、受信可否判定処理を終了する(ステップ313)。
ステップ312で返信されたブロードキャスト応答パケットは、ルータ4を経由して外部システム6に到達する(図15のステップ235)。
外部システム6は、図17のステップ285でブロードキャストパケットを送信した後、ブロードキャスト送受信モジュール36にて、アプリケーションサーバ2からの応答を待ち受ける(ステップ286)。ブロードキャスト応答を受信していない場合、ステップ287に進み、タイマがタイムアウトしたかを判定する。タイムアウトまでの時間は外部システム6に予め設定されている。また、外部システム6はステップ285でブロードキャスト情報を送信してからの経過時刻をカウントする。そして、カウントされた経過時間が予め設定されたタイムアウト時間を超過した場合、処理要求送信処理は異常終了する(ステップ288)。
具体的には、ブロードキャスト送受信モジュール36は、タイムアウトを検知すると、タイムアウトをブロードキャスト情報生成・結果解析モジュール35に送信する。ブロードキャスト情報生成・結果解析モジュール35は、タイムアウトをユーザプログラム38に送信する。例えば、Javaプログラムの場合、ブロードキャスト情報生成・結果解析モジュール35は、タイムアウトの状態を例外としてユーザプログラム38にスローする。ユーザプログラム38は例外をキャッチするプログラムを作成することで、スローされたタイムアウトを検知することができる。
カウントされた経過時刻が予め設定されたタイムアウト時刻を超過していない場合、ステップ286に戻り、ブロードキャスト応答の受信を繰り返し判定する。
一方、ステップ286で、ブロードキャスト応答の受信を判定した場合、ステップ289へ進む。ステップ289では、送信先ノード管理モジュール32は、受信したブロードキャスト応答の内容をメモリに格納することによって、処理要求先を登録する(図15のステップ236)。そして、受信したブロードキャスト応答の情報を処理要求先判定モジュール40へ送信する。処理要求先判定モジュール40は、処理要求先を決定し(ステップ290)、処理要求送受信モジュール42は、決定された処理要求先に処理要求を送信する(ステップ291)。
外部システム6が送信した処理要求は、ルータ4を経由して、ブロードキャストパケットに応答したアプリケーションサーバ2へ到達する(図15のステップ237)。
そして、処理要求を受信したアプリケーションサーバ2は、処理要求を受けるかを判定し(ステップ238)、処理を実行する(ステップ239)。以下、処理要求受付判定から実行された処理結果の返信について説明する。
図19は、ステップ238及び239の処理(処理要求受信処理)の詳細を示すフローチャートである。
アプリケーションサーバ2の処理要求送受信モジュール74が処理要求を受けると(ステップ321)、処理要求解析・処理結果返信モジュール73は、受信した処理要求の内容を解析する。具体的には、処理要求解析・処理結果返信モジュール73は、実行処理管理部68を経由して実行処理管理テーブル67を参照して、受信した処理要求の種類を判定し、メッセージに対応する処理を特定する(ステップ322)。
図10は、実行処理管理テーブル67の構成例を示す図である。
実行処理管理テーブル67は、処理142、メッセージ143及び各処理の重み係数144のカラムを有するテーブルで、実行処理管理部68によってアクセスされる。アプリケーションサーバ2では、起動前に実行処理管理テーブル67が設定され、処理モジュールが実行可能なようにデプロイされる。
例えば、外部システム6からメッセージ「msgP1」が付与された処理要求を受けた場合、ステップ322でメッセージの内容を解析し、実行処理管理テーブル67の処理142が「msgP1」であるレコードを選択する。本例では、レコード145が選択され、メッセージ「msgP1」はアプリケーションサーバ2で管理するメッセージであり、対象プロセスが「p1」であるため、処理を実行する。一方、実行処理管理テーブル67にレコードが存在しないメッセージを受信した場合、当該アプリケーションサーバ2で処理が実行できないので、エラー応答を外部システム6へ返信する。
図19に戻って説明を続ける。ステップ322で処理要求内容の解析が正常に終了すると、処理要求解析・処理結果返信モジュール73は、自ノード状態管理部62を経由して自ノード管理テーブル60(図7A)の受付可否状態128の値を参照し、自ノードの現在の受付可否を判定する(ステップ323)。
次に、ステップ324で、自ノードの受付可否状態の値が「受付可」であるかを判定する。自ノードの受付可否状態の値が「受付可」である場合、ステップ327に進み、処理要求を処理要求管理キュー72へ格納する。その後、処理要求受信処理を終了する(ステップ328)。
要求処理実行部70は、キュー72へ格納された処理要求を、順次、取得して処理する。要求処理実行部70は、キュー72から取得した処理要求の処理結果を処理要求管理キュー72を経由して処理要求解析・処理結果返信モジュール73に送る。処理要求解析・処理結果返信モジュール73は、処理結果に基づいて返信情報を生成し、処理要求送受信モジュール74が外部システム6へ応答を返信する。
アプリケーションサーバ2から返信された処理結果応答メッセージは、ルータ4を経由して外部システム6へ転送される(図15のステップ240)。
一方、ステップ324で、自ノードの受付可否状態の値が「受付不可」である場合の処理は、図16のSeq3:アプリケーションサーバ要求受信拒否(代替要求先ノード付与)275のシーケンスを用いて後述する。
外部システム6は、図17のステップ291で処理要求を送信すると、処理要求の応答を待ち受け、処理要求の応答を受信したかを判定する(ステップ292)。そして、外部システム6は、処理要求の応答を受信しない場合、ステップ294に進み、タイマがタイムアウトしたかを判定する。タイムアウトまでの時間は外部システム6に予め設定されている。また、外部システム6はステップ291で処理要求を送信してからの経過時刻をカウントする。そして、カウントされた経過時刻が予め設定されたタイムアウト時刻を超過していない場合、ステップ292に戻り、処理要求の応答の受信を繰り返し判定する。
一方、カウントされた経過時間が予め設定されたタイムアウト時間を超過した場合、ステップ295に進み、処理要求先としてメモリに記録している情報は無効であるため、処理要求先の情報を削除する。この具体的なシーケンスは、図15のSeq2:アプリケーションサーバダウン時256のシーケンスを用いて後述する。
ステップ292で処理結果を受信したと判定された場合、受信した応答が正常かを判定する(ステップ296)。正常な応答を受信した場合、受信した応答(すなわち、処理の結果)を処理要求生成・処理結果解析モジュール41を経由してユーザプログラム38へ返信し、処理要求送信処理を終了する(ステップ293)。
一方、ステップ296にて、拒否応答を受信したと判定された場合、代替となるアプリケーションサーバ2の情報を取得し(ステップ297)、ステップ289へ戻る。この処理の詳細は、図16のSeq3:アプリケーションサーバ要求受信拒否(代替要求先ノード付与)275のシーケンスを用いて後述する。
次に、図15のSeq2:アプリケーションサーバダウン時256のシーケンスを参照して、外部システム6がアプリケーションサーバ2宛に処理要求を送信したが、アプリケーションサーバ2に処理要求が到達しないので、再度ブロードキャストして、処理を行うアプリケーションサーバ2を特定する動作を説明する。Seq2の処理要求受付(ステップ241)から要求先判定(ステップ242)、処理要求送信(ステップ243−1)までの処理は、前述のSeq1の処理要求受付(ステップ231)から処理要求送信(ステップ237)と同じであるため、説明は省略する。
例えば、外部システム6が処理要求先として特定しているアプリケーションサーバ2−nがダウンした場合(ステップ244)、外部システム6が送信した処理要求は宛先のアプリケーションサーバ2−nに届かない(ステップ243)。このため、前述した図17のステップ294でタイムアウトと判定される。この場合、メモリに登録している処理要求先の情報は無効であるため、外部システム6は処理要求先の情報を削除する(図17のステップ295、図15のステップ245)。
その後、図17においてステップ283へ戻り再度処理要求先の存在を判定するが、ステップ295で、先に決定された処理要求先のアプリケーションサーバ2の情報を既に削除しているため、ステップ284の判定はNとなり、ブロードキャスト情報を再度送信する(ステップ285)。すなわち、図15のステップ246で要求先を判定し、ブロードキャストパケットを送信する(ステップ247−1)。その後のシーケンスは、ステップ233−1でブロードキャストパケットを送信した後のシーケンスと同じである。
しかし、アプリケーションサーバ2−nはダウンしているため、ステップ247−2のブロードキャストは受信できない。一方、ブロードキャストパケットを受信した各アプリケーションサーバ2は、ステップ234と同様に受信可否を判定する(ステップ248)。判定処理の詳細は前述と同じである。この受信可否判定248で、アプリケーションサーバ2−1が受信すると判定した場合、ブロードキャスト応答が外部システム6に転送される(ステップ249)。外部システム6は新たな処理要求先としてアプリケーションサーバ2−1の情報を登録し(ステップ250)、アプリケーションサーバ2−1に処理要求を送信する(ステップ251)。アプリケーションサーバ2−1は、処理要求を受信すると、処理要求を受けるかを判定し(ステップ252)、処理を実行し(ステップ253)、処理結果応答メッセージを送信する。アプリケーションサーバ2−1から返信された処理結果応答メッセージは、ルータ4を経由して外部システム6へ転送される(ステップ254)。
以上に説明した処理によって、処理要求から処理結果返信までのシーケンスが終了する。
次に、図16のSeq3:アプリケーションサーバ要求受信拒否(代替要求先ノード付与)275のシーケンスを参照して、外部システム6が拒否応答を受信して、代替の処理要求先に対して処理要求を送信する動作を説明する。図16の処理要求受付(ステップ261)から要求先判定(ステップ262)、処理要求送信(ステップ263)までの処理は、前述のSeq1の処理要求受付(ステップ231)から処理要求送信(ステップ237)と同じであるため、説明は省略する。
アプリケーションサーバ2−nが処理要求を受けると判定すると、図19に示すフローチャートの処理を実行する。そして、ステップ324で「受付不可」と判定された場合(ステップ264)、Seq3のシーケンスを実行する可能性がある。
図19のフローチャートを参照して、アプリケーションサーバ2の動作を説明する。
アプリケーションサーバ2は、ステップ324で値が「受付不可」であった場合、ステップ325に進む。
ステップ325では、図18のステップ308と同様に、他ノード状態管理部61を経由して他ノード管理テーブル59のレコードを取得し、取得したレコードを比較する。なお、ステップ325では、比較対象に自ノードは含めない。これは、ステップ324で自ノードは現在の受付可否状態が「受付不可」となっていることを確認しているためである。
次に、ステップ325での比較結果に基づいて、対象となる他ノードが存在するかを判定する(ステップ326)。処理を実行可能なノードが存在する場合、代替サーバの情報を外部システム6に送信する前に、受付重み統計値を代替先のアプリケーションサーバ2−1に送信する(ステップ332)。これは、代替先のアプリケーションサーバ2が外部システム6から処理要求を受ける際に、代替前のアプリケーションサーバ2が管理していた受付重み統計値を引き継ぎ、ブロードキャストパケットへの応答可否判定で活用するためである。
具体的には、まず、他ノード状態管理部61を経由して他ノード管理テーブル59を参照し、ステップ322で解析した外部システム6のIPアドレスと、処理カウント管理テーブル131の外部システム132と、受付重み統計値管理テーブル371の外部システム372とが一致するレコードを抽出する。例えば、処理要求に含まれる外部システム6のIPアドレスが「192.168.1.21」である場合、処理カウント管理テーブル131(図8)のレコード137及び受付重み統計値管理テーブル371(図9A)のレコード374が該当する。
次に、状態解析・生成モジュール64が、これらのレコードに基づいて、代替先のアプリケーションサーバ2へ送信する受付重み統計値を生成する。他ノード状態送受信モジュール65は、生成した受付重み統計値を代替先のアプリケーションサーバ2に送信する。例えば、図16に示す場合、アプリケーションサーバ2−nがアプリケーションサーバ2−1を代替サーバとして選択しており、アプリケーションサーバ2−1へ受付重み統計情報を送信して、処理を要求した外部システム6の情報を通知する(ステップ265)。状態解析・生成モジュール64は、他ノード状態管理部61を経由して他ノード管理テーブル59へアクセスし、他ノード管理テーブル59(図14)のIPアドレス213から、送信先のアプリケーションサーバ2−1のIPアドレスを取得する。
アプリケーションサーバ2−1では、他ノード状態送受信モジュール65が、受付重み統計値を受信し、受信した受付重み統計値は状態解析・生成モジュール64を経由して、他ノード状態管理部61が他ノード管理テーブル59内の処理カウント管理テーブル131(図8)及び受付重み統計値管理テーブル371(図9A)にレコードを追加する(ステップ266)。
図19に戻って、アプリケーションサーバ2−nが実行する処理の説明を続ける。アプリケーションサーバnでは、ステップ332で受付重み統計値を送信した後、処理要求解析・処理結果返信モジュール73が受付を拒否する応答を生成する(ステップ329)。生成される応答は、代替ノードとしてステップ325で比較して特定したノードのノード名、IPアドレス及び処理要求受付ポート番号を含む。具体的には、処理要求解析・処理結果返信モジュール73は、他ノード管理テーブル59(図14)からノード名212、IPアドレス213及び処理要求ポート番号217の値を取得し、要求受付拒否応答に含める。この処理は、図16の代替要求受付ノード情報付与267に該当する。処理要求送受信モジュール74は、生成した応答メッセージを外部システム6へ送信する(ステップ330)。その後、処理要求受信処理を終了する(ステップ331)。
ステップ330で外部システム6へ送信された要求受付拒否応答は、図16のステップ268にて、ルータ4を経由して外部システム6へ到達する。
外部システム6は、図17に示すステップ292で、処理要求の応答を待ち受けている。外部システム6は、ステップ268で応答が到達すると、受信した応答が正常かを判定する(ステップ296)。しかし、この応答は拒否応答であるため、ステップ296ではNと判定され、代替となるアプリケーションサーバ2の情報を拒否応答メッセージから取得する(ステップ297)。そして、メモリに登録している処理要求先の情報は不要であるため、外部システム6は処理要求先の情報を削除する(ステップ298)。その後、ステップ289へ戻り、代替の処理要求先を登録する。ステップ297で取得した代替要求先の情報とステップ286で受信したブロードキャスト応答の情報は同じ情報である。具体的には、他ノード管理テーブル59(図14)のノード名212、IPアドレス213及び処理要求ポート番号217を登録する。この処理は、図16の要求先削除269、要求先登録270に該当する。
その後のシーケンス(ステップ271〜274)は、Seq1:初回処理要求255のシーケンス(ステップ237〜240)と同じである。すなわち、外部システム6は、代替要求先に処理要求を送信する(ステップ271)。代替先のアプリケーションサーバ2−1は、処理要求受付可否を判定し(ステップ272)、要求された処理を実行し(ステップ273)、処理結果(正常応答)を外部システム6へ応答する(ステップ274)。
次に、受付重み統計値、受付重み現在値をアプリケーションサーバ2が算出する処理を説明する。
図12は、処理要求管理キュー72の構成例を示す図である。
キュー72は、送信元となる外部システムのIPアドレス172、受信メッセージ173、処理174、状態175のカラムを有する。状態175は、「処理待ち」「処理中」「処理完了」の何れかの値となる。キュー72の構造は、テーブル形式でもよいし、別の形式でもよい。また、キュー72は、メモリ13に保持されてもよいし、データベース22に保持されてもよい。
処理要求管理キュー72の動作を説明する。新たな処理要求がキュー72へ入力されると、テーブル72の最下行に新たなレコードが追加される。また、要求処理実行部70が処理を実行する場合、テーブル72の最上行のレコードを取得して、当該レコードの状態175を「処理待ち」から「処理中」へと更新する。キュー72は、最上行のレコードの処理が完了すると、処理の完了を処理要求解析・処理結果返信モジュール73へ通知し、状態175を「処理完了」へ更新する。そして、処理要求解析・処理結果返信モジュール73は、処理要求送受信モジュール74を経由して、外部システム6へ処理結果応答を送信する。キュー72は、処理結果応答の送信が完了すると、当該処理のレコードをキュー72から削除する。
キュー72へのレコードの追加及び削除時に、要求された処理の実行と共に、受付重み統計値のカウントアップ処理、及び受付重み現在値の更新処理が実行される。
図5は、受付重み統計値で利用する処理カウント数を更新する処理のフローチャートである。
まず、キュー72からレコードの削除を検知すると(ステップ81)、自ノード状態管理部62は、処理要求管理キュー72の送信元172から、処理要求元の外部システム6のIPアドレスを取得する(ステップ82)。
次に、取得したIPアドレスが処理カウント管理テーブル131(図8参照)に記録されているかを判定する(ステップ83)。取得したIPアドレスが処理カウント管理テーブル131に記録されていない場合、新たな処理要求元の外部システム6を登録するため、外部システムのIPアドレス132が処理要求元の外部システム6のIPアドレスであるレコードを処理カウント管理テーブル131に追加する(ステップ84)。この時、レコードを処理カウント管理テーブル131の他のカラム133〜136には0を記録する。
一方、ステップ83で、取得したIPアドレスが処理カウント管理テーブル131に記録されている場合は、ステップ85に進み、削除したキュー72のレコードから、要求された処理を完了した処理名を取得する(ステップ85)。例えば、図12に示すキュー72においてレコード176が削除された場合、完了した処理が「p1」であることが処理174から取得できる。
次に、処理カウント管理テーブル131において、処理要求元に対応するレコードの完了した処理133〜135の値を1増加する(ステップ86)。例えば、図12に示すキュー72においてレコード176が削除された場合、送信元の外部システム6のIPアドレスが「192.168.2.21」であり、要求された処理が「p1」であるため、処理カウント管理テーブル131のレコード137の「p1」133の値を1増加する。
その後、処理カウント管理テーブル131のレコード137の重み合計値136を更新する(ステップ87)。具体的には、実行処理管理テーブル67(図10)の重み係数144から対応する処理の重み係数を取得し、処理カウント管理テーブル131のレコード137の重み合計値136に加算する。その後、処理カウント数更新処理を終了する(ステップ88)。
このようにして、アプリケーションサーバ2は、要求を受けた処理が完了すると、処理カウント数更新処理を実行し、処理カウント管理テーブル131を更新する。
次に、前述した受信可否判定処理(図18)のステップ303やステップ308などで参照される受付重み統計値を、各アプリケーションサーバが算出する動作を説明する。
図6は、受付重み統計値算出処理のフローチャートである。
アプリケーションサーバ2は、統計値算出処理を繰り返し(例えば所定の時間毎に)実行する(ステップ101)。統計値の算出時間を制御するためのパラメータは、予めメモリに記録される。例えば、統計値算出間隔は3600秒(1時間ごと)と設定してもよい。アプリケーションサーバ2は、この算出で統計値を算出する。また、1回の統計値の算出に用いるサンプリング回数を記録するとよい。さらに、統計値を最後に算出した時刻を記録するとよい。アプリケーションサーバ2は、統計値最終算出時刻に統計値算出間隔を加算した時刻に次の受付重み統計値を算出する。例えば、統計値最終算出時刻が「2014/06/24 13:31:15」である場合、次回の算出処理開始時刻は、その1時間後の「2014/06/24 14:31:15」となる。
次に、処理カウント管理テーブル131(図8)から、処理対象とする外部システム6のレコードを選択する(ステップ102)。統計値算出処理のループによって1レコードずつ処理し、最終的には全レコードについて統計値を算出する。
次に、選択したレコードの外部システムのIPアドレス132が、受付重み統計値管理テーブル371(図9A)の外部システム372に登録されているかを判定する(ステップ103)。
選択したレコードの外部システム6が受付重み統計値管理テーブル371に登録されていない場合、この外部システム6の統計値は初めて算出するので、受付重み統計値管理テーブル371にレコードを追加する(ステップ104)。その時、処理カウント管理テーブル131(図8)の重み合計値136の値を、受付重み統計値373の値に登録する。この重み統計値の値が、最初に算出する統計値となる。
次に、ステップ105〜108で統計値を算出する。まず、現在の重み統計値と(統計サンプリング回数−1)とを乗算した値を求める(ステップ105)。例えば、受付重み統計値管理テーブル371(図9A)のレコード374の値から統計値を算出する場合、レコード374の受付重み統計値373は「233」であり、統計サンプリング回数は「3」であるため、計算結果は233×(3−1)=466となる。
次に、ステップ105で算出された乗算値に、処理カウント管理テーブル131の重み合計値136を加算する(ステップ106)。例えば、処理カウント管理テーブル131のレコード137の重み合計値136が「302」であるため、計算結果は466+302=768となる。
次に、ステップ106で算出された加算値を、統計サンプリング回数で除した値を算出する(ステップ107)。例えば、統計サンプリング回数は「3」であるため、計算結果は768÷3=256となる。なお、この値が新たな重み統計値となる。
最後に、ステップ107の計算結果を受付重み統計値373に記録する(ステップ108)。更新前の受付重み統計値管理テーブル371(図9A)と、更新後の受付重み統計値管理テーブル371−2(図9B)を比較すると、IPアドレスが192.168.1.21の外部システム6の重み統計値は、「233」から「256」へ変化した。
選択された一つの外部システム6についてステップ108までの処理が終了すると、全ての外部システム6についての重み統計値の算出が終了したかを判定する(ステップ109)。一部の外部システム6についての重み統計値が算出されていない場合、ステップ102へ戻り、次に統計値を算出する外部システム6のレコードを選択する。一方、全ての外部システム6についての重み統計値の算出が終了している場合、全ての外部システム6の算出後の受付重み統計値を合計し、その合計値で自ノード管理テーブル60(図7A)の受付重み統計値126の値を更新する(ステップ110)。例えば、受付重み統計値管理テーブル371−2(図9B)の各レコードの受付重み統計値373の合計値が、全ての外部システム6の統計値を算出後の受付重み統計値であり、256+45+445=746となる。
最後にステップ111で、メモリに記録された統計値最終算出時刻を現在時刻に更新し、受付重み統計値算出処理を終了する(ステップ112)。
次に、処理要求管理キュー72レコードを追加又は削除する時の受付重み現在値及びアプリケーションサーバ2の受付可否状態を更新する処理を説明する。
図11Aは、キューレコード追加時の更新処理のフローチャートである。
処理要求管理キュー72(図12)にレコードが追加されると(ステップ151)、自ノード状態管理部62は、追加された処理要求の対象である処理の重み係数を、自ノード管理テーブル60(図7A)の受付重み現在値へ加算する(ステップ152)。具体的には、自ノード状態管理部62は、追加された処理要求の対象である処理の重み係数を、実行処理管理テーブル67(図10)の重み係数14から取得する。また、自ノード状態管理部62は、処理要求管理キュー72から受けた追加レコードの処理174と一致するレコードを実行処理管理テーブル67から検索する。例えば、キュー72にレコード177が追加された場合、処理174は「p3」であり、実行処理管理テーブル67のレコード146が該当し、当該処理p3の重み係数は「1」である。その結果、自ノード状態管理部62は、自ノード管理テーブル60の受付重み現在値127に1を加算する。
次に、受付重み現在値が閾値を超えているかを判定する(ステップ153)。閾値は予めアプリケーションサーバ2に設定されている値であり、例えば30を定義する。受付重み現在値が閾値を超えると受け付けが不可能となる。受付重み現在値が閾値を超えていない場合、ステップ154をスキップして、更新処理を終了する(ステップ155)。
一方、受付重み現在値が閾値を超えている場合、自ノード管理テーブル60の現在の受付可否状態128を「受付不可」へ更新する(ステップ154)。その結果、受信可否判定処理(図18)のステップ307でブロードキャストに応答しないと判定し、処理要求受信処理(図19)のステップ324で処理要求を拒否する。
図11Bは、キューレコード削除時の更新処理のフローチャートである。
処理要求管理キュー72からレコードが削除されると(ステップ161)、自ノード状態管理部62は、削除された処理要求の対象である処理の重み係数を、実行処理管理テーブル67(図10)の重み係数14から取得し、自ノード管理テーブル60(図7A)の受付重み現在値から減算する(ステップ162)。
次に、受付重み現在値が閾値以下となったかを判定する(ステップ163)。閾値は予めアプリケーションサーバ2に設定されている値であり、例えば30を定義する。受付重み現在値が閾値以下でない場合、ステップ164をスキップして、更新処理を終了する(ステップ165)。
一方、受付重み現在値が閾値以下である場合、自ノード管理テーブル60の現在の受付可否状態128を「受付可」へ更新する(ステップ164)。その結果、受信可否判定処理(図18)のステップ307でブロードキャストに応答すると判定し、処理要求受信処理(図19)のステップ324で処理要求を受け付ける。
次に、アプリケーションサーバ2の状態が変化した場合(サーバ起動時、サーバ状態変化時、サーバダウン時)のサーバ間での情報を共有を説明する。本実施例では、アプリケーションサーバ2は、他ノード管理テーブル59(図14)を共有しているが、他の情報を共有してもよい。
図13は、アプリケーションサーバ2の状態が変化した場合にアプリケーションサーバ間で情報を共有するシーケンス図である。
まず、Seq1:サーバ起動時203のシーケンスを用いて、各アプリケーションサーバが起動したときの情報の共有の動作を説明する。
例えば、アプリケーションサーバ2−1が起動する(ステップ181)。起動直後のアプリケーションサーバ2−1の自ノード管理テーブル60−1は、図7Bに示す様に、受付重み統計値126は「0」であり、受付重み現在値127は「0」であり、現在の受付可否状態128は「受付可」である。アプリケーションサーバ2−1は、起動後、起動したことと現在の自ノード状態を、状態通知ノード1へ送信する(ステップ182)。状態通知ノード1のIPアドレスは、アプリケーションサーバ2−1の起動前に、自ノード管理テーブル60−1のレコード129に事前に設定しておく。
状態通知ノード1は、起動通知182を受けると、アプリケーションサーバ2−1が稼働状態であること及び送信された情報を内部の記憶装置に保持する。また、状態通知ノード1は、情報が保持されている他のアプリケーションサーバにアプリケーションサーバ2−1の情報の追加・変更を通知する。図示する例では、アプリケーションサーバ2−1からの起動通知182のタイミングでは、他のアプリケーションサーバは起動しておらず、状態通知ノード1も起動しているアプリケーションサーバ2の情報を保持していないため、他のアプリケーションサーバ2へ通知されない。
その後、アプリケーションサーバ2−2が起動する(ステップ183)。アプリケーションサーバ2−2は、アプリケーションサーバ2−1と同様に、起動後、起動したことと現在の自ノードの情報を、状態通知ノード1へ送信する(ステップ184)。状態通知ノード1は、起動通知184を受けると、このタイミングでアプリケーションサーバ2−1の情報を保持しているため、アプリケーションサーバ2−2が追加されたこと、及びアプリケーションサーバ2−2の状態情報をアプリケーションサーバ2−1に通知する(ステップ185)。
また、現在稼動しているアプリケーションサーバの情報を、新たに起動したアプリケーションサーバ2−2に通知する(ステップ186)。アプリケーションサーバ2−2では、他ノード状態送受信モジュール65が稼動中のアプリケーションサーバの情報を受信し、状態解析・生成モジュール64が通知を受けた他のアプリケーションサーバ2の情報を他ノード状態管理部61を経由して他ノード管理テーブル59に登録する。既に同じアプリケーションサーバが登録されている場合は、既に登録されている情報を更新する。
その後、アプリケーションサーバ2−3が起動すると(ステップ187)、前述と同様に、アプリケーションサーバ2−3は、状態通知ノード1へ起動通知を送信する(ステップ188)。状態通知ノード1は、稼働中サーバ変更通知をアプリケーションサーバ2−1、2−2に通知し(ステップ189、190)。現在稼動しているアプリケーションサーバの情報を、新たに起動したアプリケーションサーバ2−3に通知する(ステップ191)。
その結果、各アプリケーションサーバの現在の状態をアプリケーションサーバ間で共有することができる。例えば、Seq1:サーバ起動時203のシーケンスの後のアプリケーションサーバ2−1の他ノード管理テーブル59−1は、図14Bに示す形態となる。
次に、Seq2:サーバ状態変化時204のシーケンスを用いて、アプリケーションサーバ2の自ノード管理テーブル60の値が変化したときの情報の共有の動作を説明する。
例えば、アプリケーションサーバ2−1が大量の処理要求を受けた(ステップ192)。アプリケーションサーバ2−1は、処理要求受信処理(図19)のステップ327で、受信した処理要求を処理要求管理キュー72に登録し(ステップ193)、更新処理(図11A)のステップ152で受付重み現在値を更新する。しかし、所定量のキューが格納されると、受付重み現在値が閾値を超えるため、更新処理(図11A)のステップ154の処理が実行され、現在の受付可否状態を「受付不可」へ更新する(ステップ194)。
その後、アプリケーションサーバ2−1は、状態の変化を状態通知ノード1へ通知する(ステップ195)。状態通知ノード1は、状態変化通知195を受けると、アプリケーションサーバ2−1の新しい状態を内部の記憶装置に保持する。また、状態通知ノード1は、情報が保持されている他のアプリケーションサーバに、アプリケーションサーバ2−1の情報の変更を通知する(ステップ196、197)。図示する例では、アプリケーションサーバ2−1からの状態変化通知195のタイミングで、他のアプリケーションサーバ2−2、2−nが稼働しており、状態通知ノード1がこれらのアプリケーションサーバの情報を保持している。このため、状態通知ノード1は、アプリケーションサーバ2−1の状態変化を、他のアプリケーションサーバ2−2、2−nに通知する。
アプリケーションサーバ2−2、2−nでは、他ノード状態送受信モジュール65が稼動中アプリケーションサーバの情報を受信し、状態解析・生成モジュール64が通知を受けた他のアプリケーションサーバ2の情報を他ノード状態管理部61を経由して他ノード管理テーブル59の他アプリケーションサーバの情報を更新する。
次に、Seq3:サーバダウン時205のシーケンスを用いて、アプリケーションサーバがダウンしたときの情報の共有の動作を説明する。
アプリケーションサーバ2−1及び状態通知ノード1は、アプリケーションサーバ2−1の起動通知時からコネクションを張っている。状態通知ノード1は、このコネクションを定期的に監視している。例えば、アプリケーションサーバ2−1がダウンした場合(ステップ198)、アプリケーションサーバ2−1と状態通知ノード1の間のコネクションは切断される(ステップ199)。このため、アプリケーションサーバ2−1がダウンして一定期間が経過すると、状態通知ノード1は、定期監視により、アプリケーションサーバ2−1とのコネクションが切れたことを検知する(ステップ200)。
状態通知ノード1は、ステップ200でコネクション切断を検知すると、アプリケーションサーバ2−1の新しい状態を内部の記憶装置に保持する。また、状態通知ノード1は、情報が保持されている他のアプリケーションサーバに、アプリケーションサーバ2−1のダウンを通知する(ステップ201、202)。図示する例では、アプリケーションサーバ2−1のダウンを検出したタイミングで、他のアプリケーションサーバ2−2、2−nが稼働しており、状態通知ノード1がこれらのアプリケーションサーバの情報を保持している。このため、状態通知ノード1は、アプリケーションサーバ2−1のダウンを、他のアプリケーションサーバ2−2、2−nに通知する。
アプリケーションサーバ2−2、2−nでは、他ノード状態送受信モジュール65が稼動中アプリケーションサーバの情報を受信し、状態解析・生成モジュール64が通知を受けた他のアプリケーションサーバ2の情報を他ノード状態管理部61を経由して他ノード管理テーブル59の状態214を「未稼働」へ更新する。
このように、各アプリケーションサーバは状態通知ノード1を経由して、互いの情報を共有する。なお、情報の共有方法は例示した以外の方法でもよい。
図21A、図21B、図22には、前述した受付重み統計値算出処理(図6、図9A)の別な例を示す。
図6では外部システム毎に受付重み統計値を算出する処理を説明し、図9Aでは算出された受付重み統計値を外部システム毎に管理する受付重み統計値管理テーブルを説明した。一方、図22では処理毎に受付重み統計値を算出する処理を説明し、図21A、図21Bでは算出された受付重み統計値を管理する処理毎に統計値管理テーブルを説明する。
図22に示す受付重み統計値算出処理では、図6と同様に、アプリケーションサーバは、繰り返し(例えば所定の時間毎に)処理を実行する(ステップ391)。
ステップ392から395で、処理毎に統計値を算出する。例えば、処理p1について、ステップ392では、図21Aに示す受付重み統計値管理テーブル381の処理382が「p1」のレコード384の要求数383の「15」を用いる。ステップ393では、処理カウント管理テーブル131(図8)の全外部システムのカラム133の合計値を加算する。ステップ394では、算出された加算値を、統計サンプリング回数「3」で除する。ステップ395では、受付重み統計値管理テーブル381(図21A)の要求数383及び重み385を更新する。
その後、選択された一つの外部システム6についてステップ108までの処理が終了すると、全ての外部システム6についての重み統計値の算出が終了したかを判定する(ステップ396)。
ステップ397、398の処理は、図6のステップ110、111の処理と同じである。
更新前の受付重み統計値管理テーブル381(図21A)と、更新後の受付重み統計値管理テーブル381−2(図21B)を比較すると、処理p1の重み統計値は、「30」から「42」へ変化した。
このようにして、図24に示す処理毎の受付重み統計値をノード間で共有することができる。
なお、図6に示すシーケンスと図22に示すシーケンスとは、両方を実行しても、いずれか一方のみを実行してもよい。なお、情報を共有するアプリケーションサーバ2は、互いに同じ種類の情報を共有するために、同じ処理を行い、各アプリケーションサーバ2は同じ情報を算出する必要がある。
以上に説明したように、本発明の第1実施例によれば、負荷分散装置やネームサーバ等の特別な装置を導入することなく、L2SW、L3SW等の汎用的なネットワーク装置によって、アプリケーションサーバを分散配置環境を実現することができ、負荷分散や冗長性を確保することができる。
また、システム拡張のボトルネックを解消することができる。さらに、システム内の管理装置が減ることによって、管理の手間やコストを軽減することができる。
さらに、各ノードへの処理要求と受付重み統計値を参照して振分先を決定するので、ノードクラスタ全体の負荷分散の効率をより高めることができる。
また、受付重み統計値を参照して代替先のアプリケーションサーバを選択するので、自ノードが処理を実行できない場合でも、適切なアプリケーションサーバを選択することができる。また、選択された代替先のアプリケーションサーバの情報を処理要求を送信した外部システムに通知し、処理要求を送信した外部システムの情報を選択された代替先のアプリケーションサーバに通知するので、代替先のアプリケーションサーバに確実に処理を引き継ぐことができる。
また、受付重み統計値が最低のアプリケーションサーバを代替先のアプリケーションサーバとして選択するので、負荷が低いアプリケーションサーバを的確に選択することができる。
また、受付重み統計値は、外部システム毎に要求された処理の種別毎の回数と、処理の種別の重み係数とを乗じて、前記外部システム毎に算出される負荷情報としたので、集中的に処理を依頼している外部システムを特定できる。このため、特定の外部システムからの負荷が集中しているアプリケーションサーバではなく、複数の外部システムからの平均的な負荷がかかっているアプリケーションサーバを選択することができる。
また、受付重み統計値は、外部システム毎に要求された処理の種別毎の回数と、処理の種別の重み係数とを乗じて、処理の種別毎に算出される負荷情報としたので、処理毎に負荷を平準化することができる。
また、受付重み統計値が最低である場合に、ブロードキャストに応答すると判定するので、負荷が低いアプリケーションサーバを選択することができる。
また、現在処理要求を受付可能なアプリケーションサーバの中で受付重み統計値を比較するので、突発的な負荷変動によって、現在処理要求を受け付けていない計算機を除外して、的確に振り分け先を決定できる。
また、現在稼働中である計算機の中で受付重み統計値を比較するのでメンテナンスなどで停止中の計算機を除外して、的確に振り分け先を決定できる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を有するものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
1 状態通知ノード
2、2−1〜2−n アプリケーションサーバ
4 ルータ
5 ネットワーク
6、6−1〜6−n 外部システム
7 ネットワークセグメント
12 CPU
13 メモリ
15 アプリケーションプログラム
16 ストレージ
18 プリケーションプログラムファイル
20、21 インタフェース
22 データベース
26 アプリケーション情報一時格納領域

Claims (14)

  1. 計算機システムであって、
    複数の外部システムからの要求によって処理を実行する複数の計算機を備え、
    前記複数の計算機の各々は、
    メモリと、前記メモリを参照するプロセッサと、他の計算機と通信するためのネットワークインタフェースと、を有し、
    同一ネットワークセグメント内の他の計算機と、前記各計算機が算出した受付重み統計値を共有しており、
    前記各計算機のプロセッサは、
    一つの前記外部システムから同一ネットワークセグメント内に同報されるブロードキャストを受信し、
    前記共有される受付重み統計値を参照して、前記受信したブロードキャストに応答するかを判定し、
    応答すると判定した場合、前記一つの外部システムに処理要求を送信させるために、前記ブロードキャストを送信した外部システムに応答を返信することを特徴とする計算機システム。
  2. 請求項1に記載の計算機システムであって、
    前記各計算機のプロセッサは、
    一つの前記外部システムから処理要求を受信し、
    前記要求された処理を実行するかを判定し、
    前記要求された処理を実行しないと判定した場合、前記共有される受付重み統計値を参照して、前記複数の計算機から代替計算機を選択し、
    前記選択した代替計算機の情報を前記処理要求を送信した外部システムに通知し、
    前記処理要求を送信した外部システムの情報を、前記選択した代替計算機に通知することを特徴とする計算機システム。
  3. 請求項1又は2に記載の計算機システムであって、
    前記受付重み統計値は、前記外部システム毎に要求された処理の種別及び回数と、各前記処理の種別に対応して定められた重み係数とに基づいて、前記外部システム毎に算出される負荷情報であることを特徴とする計算機システム。
  4. 請求項1又は2に記載の計算機システムであって、
    前記受付重み統計値は、前記外部システム毎に要求された処理の種別及び回数と、各前記処理の種別に対応して定められた重み係数とに基づいて、前記処理の種別毎に算出される負荷情報であることを特徴とする計算機システム。
  5. 請求項1又は2に記載の計算機システムであって、
    前記各計算機のプロセッサは、前記他の計算機より前記受付重み統計値が低い場合に、前記ブロードキャストに応答すると判定することを特徴とする計算機システム。
  6. 請求項5に記載の計算機システムであって、
    前記複数の計算機は、処理要求の受付可否の情報を共有しており、
    前記各計算機のプロセッサは、現在処理要求を受け付けできる計算機の中で前記受付重み統計値が最も低い場合に、前記ブロードキャストに応答すると判定することを特徴とする計算機システム。
  7. 請求項5に記載の計算機システムであって、
    前記複数の計算機は、稼働中であるかの情報を共有しており、
    前記各計算機のプロセッサは、現在稼働中である計算機の中で前記受付重み統計値が最も低い場合に、前記ブロードキャストに応答すると判定することを特徴とする計算機システム。
  8. 請求項2に記載の計算機システムであって、
    前記各計算機のプロセッサは、前記受付重み統計値が最も低い計算機を前記代替計算機として選択することを特徴とする計算機システム。
  9. 複数の外部システムからの要求によって処理を実行する計算機であって、
    メモリと、
    前記メモリを参照するプロセッサと、
    他の計算機と通信するためのネットワークインタフェースと、を有し、
    同一ネットワークセグメント内の他の計算機と受付重み統計値を共有しており、
    前記プロセッサは、
    一つの前記外部システムからブロードキャストを受信し、
    前記共有される受付重み統計値を参照して、前記受信したブロードキャストに応答するかを判定し、
    応答すると判定した場合、前記一つの外部システムに処理要求を送信させるために、前記ブロードキャストを送信した外部システムに応答を返信することを特徴とする計算機。
  10. 請求項9に記載の計算機であって、
    前記プロセッサは、
    一つの前記外部システムから処理要求を受信し、
    前記要求された処理を実行するかを判定し、
    前記要求された処理を実行しないと判定した場合、前記共有される各計算機の受付重み統計値を参照して、代替計算機を選択し、
    前記選択した代替計算機の情報を前記外部システムに通知し、
    前記処理要求を送信した外部システムの情報を、前記選択した代替計算機に通知することを特徴とする計算機。
  11. 計算機システムにおける負荷分散方法であって、
    前記計算機システムは、複数の外部システムからの要求によって処理を実行する複数の計算機を有し、
    前記複数の計算機の各々は、
    メモリと、前記メモリを参照するプロセッサと、他の計算機と通信するためのネットワークインタフェースと、を有し、
    同一ネットワークセグメント内の他の計算機と、前記各計算機が算出した受付重み統計値を共有しており、
    前記方法は、
    前記プロセッサが、一つの前記外部システムからブロードキャストを受信し、
    前記プロセッサが、前記共有される受付重み統計値を参照して、前記受信したブロードキャストに応答するかを判定し、
    前記プロセッサが、応答すると判定した場合、前記一つの外部システムに処理要求を送信させるために、前記ブロードキャストを送信した外部システムに応答を返信することを特徴とする負荷分散方法。
  12. 請求項11に記載の負荷分散方法であって、
    前記プロセッサが、一つの前記外部システムから処理要求を受信し、
    前記プロセッサが、前記要求された処理を実行するかを判定し、
    前記プロセッサが、前記要求された処理を実行しないと判定した場合、前記共有される受付重み統計値を参照して、前記複数の計算機から代替計算機を選択し、
    前記プロセッサが、前記選択した代替計算機の情報を前記処理要求を送信した外部システムに通知し、
    前記プロセッサが、前記処理要求を送信した外部システムの情報を、前記選択した代替計算機に通知することを特徴とする負荷分散方法。
  13. 計算機に処理を実行させるためのプログラムであって、
    前記計算機は、
    メモリと、前記メモリを参照するプロセッサと、他の計算機と通信するためのネットワークインタフェースと、を有し、
    複数の外部システムからの要求によって処理を実行し、
    同一ネットワークセグメント内の他の計算機と受付重み統計値を共有しており、
    前記プログラムは、
    一つの前記外部システムからブロードキャストを受信する手順と、
    前記共有される受付重み統計値を参照して、前記受信したブロードキャストに応答するかを判定する手順と、
    応答すると判定した場合、前記一つの外部システムに処理要求を送信させるために、前記ブロードキャストを送信した外部システムに応答を返信する手順とを実行させるためのプログラム。
  14. 請求項13に記載のプログラムであって、
    一つの前記外部システムから処理要求を受信する手順と、
    前記要求された処理を実行するかを判定する手順と、
    前記要求された処理を実行しないと判定した場合、前記共有される各計算機の受付重み統計値を参照して、代替計算機を選択する手順と、
    前記選択した代替計算機の情報を前記外部システムに通知する手順、
    前記処理要求を送信した外部システムの情報を、前記選択した代替計算機に通知する手順と、を実行させるためのプログラム。
JP2014178100A 2014-09-02 2014-09-02 計算機システム、計算機、負荷分散方法及びそのプログラム Active JP6272190B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014178100A JP6272190B2 (ja) 2014-09-02 2014-09-02 計算機システム、計算機、負荷分散方法及びそのプログラム
US14/739,551 US9736235B2 (en) 2014-09-02 2015-06-15 Computer system, computer, and load balancing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014178100A JP6272190B2 (ja) 2014-09-02 2014-09-02 計算機システム、計算機、負荷分散方法及びそのプログラム

Publications (2)

Publication Number Publication Date
JP2016051446A true JP2016051446A (ja) 2016-04-11
JP6272190B2 JP6272190B2 (ja) 2018-01-31

Family

ID=55403943

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014178100A Active JP6272190B2 (ja) 2014-09-02 2014-09-02 計算機システム、計算機、負荷分散方法及びそのプログラム

Country Status (2)

Country Link
US (1) US9736235B2 (ja)
JP (1) JP6272190B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106302608B (zh) * 2015-06-08 2020-02-04 阿里巴巴集团控股有限公司 一种信息处理方法及装置
US10133612B2 (en) * 2016-03-17 2018-11-20 Nuance Communications, Inc. Session processing interaction between two or more virtual assistants
US10778660B1 (en) * 2016-09-21 2020-09-15 Amazon Technologies, Inc. Managing multiple producer consumer—systems with non-identical idempotency keys
EP3556078B1 (en) * 2016-12-13 2021-10-13 FIMER S.p.A. A multi-client/multi-server managing method and system with a routine of rejection of already connected clients for balancing the system
US10860614B2 (en) * 2018-03-19 2020-12-08 Landis+Gyr Innovations, Inc. Partitioning data in a clustered database environment
US10579432B1 (en) * 2018-08-13 2020-03-03 Twitter, Inc. Load balancing deterministically-subsetted processing resources using fractional loads
CN111510958B (zh) * 2020-04-27 2024-02-20 中国联合网络通信有限公司广东省分公司 一种消息接入负载均衡方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005135426A (ja) * 2004-11-12 2005-05-26 Nec Corp 推定伸長率に基づくトランザクション負荷分散方法及び方式並びにコンピュータ可読記録媒体
JP2006260059A (ja) * 2005-03-16 2006-09-28 Hitachi Information Technology Co Ltd サーバ装置
JP2007219637A (ja) * 2006-02-14 2007-08-30 Nippon Telegr & Teleph Corp <Ntt> 負荷分散システムおよびそのプログラム
JP2011191907A (ja) * 2010-03-12 2011-09-29 Hitachi Information & Control Solutions Ltd データ配信システム,負荷分散方法及び蓄積サーバ
JP2013065104A (ja) * 2011-09-15 2013-04-11 Toshiba Corp 負荷分散システム、データアクセス装置、及び負荷分散方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4710001A (en) * 1999-12-06 2001-06-12 Warp Solutions, Inc. System and method for enhancing operation of a web server cluster
US7702791B2 (en) * 2001-07-16 2010-04-20 Bea Systems, Inc. Hardware load-balancing apparatus for session replication
US7805407B1 (en) * 2004-06-16 2010-09-28 Oracle America, Inc. System and method for dynamic configuration of replicated database servers
US7620687B2 (en) * 2004-06-25 2009-11-17 Telcordia Technologies, Inc. Distributed request routing
JP4774814B2 (ja) 2005-06-06 2011-09-14 日本電気株式会社 サーバアクセス制御システム、サーバアクセス制御方法およびサーバアクセス制御プログラム
US7512707B1 (en) * 2005-11-03 2009-03-31 Adobe Systems Incorporated Load balancing of server clusters
JP2010009449A (ja) 2008-06-30 2010-01-14 Nec Corp 分散情報配置システム
US8533337B2 (en) * 2010-05-06 2013-09-10 Citrix Systems, Inc. Continuous upgrading of computers in a load balanced environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005135426A (ja) * 2004-11-12 2005-05-26 Nec Corp 推定伸長率に基づくトランザクション負荷分散方法及び方式並びにコンピュータ可読記録媒体
JP2006260059A (ja) * 2005-03-16 2006-09-28 Hitachi Information Technology Co Ltd サーバ装置
JP2007219637A (ja) * 2006-02-14 2007-08-30 Nippon Telegr & Teleph Corp <Ntt> 負荷分散システムおよびそのプログラム
JP2011191907A (ja) * 2010-03-12 2011-09-29 Hitachi Information & Control Solutions Ltd データ配信システム,負荷分散方法及び蓄積サーバ
JP2013065104A (ja) * 2011-09-15 2013-04-11 Toshiba Corp 負荷分散システム、データアクセス装置、及び負荷分散方法

Also Published As

Publication number Publication date
US20160065660A1 (en) 2016-03-03
JP6272190B2 (ja) 2018-01-31
US9736235B2 (en) 2017-08-15

Similar Documents

Publication Publication Date Title
JP6272190B2 (ja) 計算機システム、計算機、負荷分散方法及びそのプログラム
US11593404B2 (en) Multi-cluster warehouse
US10924436B2 (en) Method and system for managing workloads in a cluster
US9971823B2 (en) Dynamic replica failure detection and healing
US10122595B2 (en) System and method for supporting service level quorum in a data grid cluster
US7185096B2 (en) System and method for cluster-sensitive sticky load balancing
Lee et al. Load-balancing tactics in cloud
CN108881348A (zh) 服务质量控制方法、装置和存储服务器
US10346367B1 (en) Load shedding techniques for distributed services with persistent client connections to ensure quality of service
US20140059315A1 (en) Computer system, data management method and data management program
JP6631710B2 (ja) 仮想化管理プログラム、仮想化管理装置および仮想化管理方法
WO2021120633A1 (zh) 一种负载均衡方法及相关设备
US11128698B2 (en) Producer system registration
EP3685567B1 (en) Load shedding of traffic based on current load state of target capacity
US11256440B2 (en) Method and distributed storage system for aggregating statistics
Sun et al. Adaptive trade‐off between consistency and performance in data replication
US20170118082A1 (en) Systems and methods for an intelligent, distributed, autonomous, and scalable resource discovery, management, and stitching
JP2024514467A (ja) 地理的に分散されたハイブリッドクラウドクラスタ
US10749957B2 (en) Method and apparatus for information management
CN117527700A (zh) 一种代拨一对多网络地址负载均衡的方法和***
CN116149872A (zh) 数据处理***和数据处理方法
CN117492944A (zh) 任务调度方法、装置、电子设备及可读存储介质
JP2015073234A (ja) メッセージ転送システム及びキューの管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171228

R150 Certificate of patent or registration of utility model

Ref document number: 6272190

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150