JP5074516B2 - ゼロ単一障害点ロード・バランサ(azerosinglepointoffailureloadbalancer)の装置および方法 - Google Patents

ゼロ単一障害点ロード・バランサ(azerosinglepointoffailureloadbalancer)の装置および方法 Download PDF

Info

Publication number
JP5074516B2
JP5074516B2 JP2009540351A JP2009540351A JP5074516B2 JP 5074516 B2 JP5074516 B2 JP 5074516B2 JP 2009540351 A JP2009540351 A JP 2009540351A JP 2009540351 A JP2009540351 A JP 2009540351A JP 5074516 B2 JP5074516 B2 JP 5074516B2
Authority
JP
Japan
Prior art keywords
master
slave
identification information
network identification
slaves
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.)
Expired - Fee Related
Application number
JP2009540351A
Other languages
English (en)
Other versions
JP2010511964A (ja
Inventor
フォク、ケニー
イプ、エリック・チ・チュン
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010511964A publication Critical patent/JP2010511964A/ja
Application granted granted Critical
Publication of JP5074516B2 publication Critical patent/JP5074516B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40006Architecture of a communication node
    • H04L12/40019Details regarding a bus master
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • 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
    • 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/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • 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/1034Reaction to server failures by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks
    • H04W84/20Master-slave selection or change arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques

Description

記述された局面は、分散処理システムに関連し、さらに詳しくは、ゼロ単一障害点ロード・バランサ(a zero single point of failure load balancer)の装置および方法に関する。
コンピュータ処理においては、コマンドのグループが、しばしば、個々のコマンドに分割される。これらコマンドは並列して実行され、それらの結果が統合される。さらに、単一のコンピュータ装置は、有限の処理能力しかないので、これらのコマンドを実行するために複数のコンピュータ装置が使用される。しかしながら、複数のコンピュータ・デバイスを用いることによって、これらコンピュータ・デバイス間でコマンドを分配および統合する際に問題が生じうる。複数のコンピュータ・デバイスが使用される場合、コンピュータ装置のグループは、処理ファーム(processing farm)と称されうる。
複数の装置へコマンドを分配する方法は、多くのスレーブにコマンドを分配し、これらコマンドの実行結果を統合するマスタを用いる。これらの方法では、マスタがスレーブにコマンドを分配し、これらコマンドをスレーブが実行し、その後、実行された結果をマスタが統合する。スレーブとマスタのおのおのは、個別のコンピュータ・デバイスでありうる。これらコンピュータ・デバイス間でコマンドを分割するための方法および装置はしばしば、ロード・バランサと称される。ロード・バランサは、マスタ・コンピュータ・デバイス上で実行されるか、および/または、マスタ・コンピュータ・デバイス上に存在する。
このように処理を分散する方法に伴う1つの問題は、マスタが誤動作すれば、ワークが失われることである。さらに、マスタは、特別なハードウェアおよび/またはソフトウェアを必要とするので、マスタを交換することは困難でありうる。それゆえ、しばしば、より信頼性が高く高価なコンピュータ装置が、マスタとして使用される。全てのコンピュータ装置の使用を停めることなく、マスタをアップグレードすることも難しい。
別の問題は、マスタが、システムをリセットする必要なくスレーブを使用することができるように、システムにスレーブを動的に追加することも困難であるということである。例えば、ソフトウェア・コマンドが分割された後、スレーブを追加することは困難でありうる。
別の問題は、スレーブが誤動作し、コマンドの実行結果を失った場合、復旧が困難であるということである。
また、マスタと複数のスレーブとを用いることに伴うさらに別の問題は、新たなマスタを選択する処理は複雑でありうるということである。例えば、マスタに障害が発生したか、あるいは、動作不能になった場合、前のマスタが中断したところで再開することができる新たなマスタを指定するための手順が確立されねばならない。そのような手順は、多くの場合、煩わしい。
したがって、ロード・バランサ・システムの改良が望まれる。
優先権主張
本特許出願は、2006年12月5日に出願され、本願の譲受人に譲渡され、本明細書によって参照によって明確に組み込まれている"METHOD AND APPARATUS FOR SUPPORTING ZERO SINGLE POINT OF FAILURE LOAD BALANCER"と題された米国仮出願60/868,689号の優先権を主張する。
以下は、そのような局面の基本的な理解を提供するために、1または複数の局面の簡略化された概要を示す。この概要は、考慮される全ての局面の広範囲な概観ではなく、全ての局面の重要要素または決定的要素を特定することも、これら局面の全てまたは任意のスコープを線引きすることも意図されていない。その唯一の目的は、後述されるより詳細な説明に対する前置きとして、1または複数の局面のいくつかの概念をより簡単な形式で表すことである。
局面では、ロード・バランサのスレーブ・コンピュータ装置のコンピュータによって実現される方法は、ロード・バランサにおいて複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、ロード・バランサのマスタが機能しているかを判定することを備える。もしもマスタが機能していなければ、この方法は、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがってマスタになることを試みることを含む。ここで、予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含む。
他の局面では、ロード・バランサのスレーブとして動作するように構成された少なくとも1つのプロセッサは、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、ロード・バランサのマスタが機能しているかを判定するための第1のモジュールを備える。さらに、少なくとも1つのプロセッサはまた、もしもマスタが機能していない場合、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって、マスタになることを試みる第2のモジュールを含む。予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を自己のネットワーク識別情報に設定することを含む。
また別の局面では、ロード・バランサのスレーブのためのコンピュータ・プログラム製品は、コンピュータに動作を行わせるためのコードを有するコンピュータ読取可能媒体を備える。このコンピュータ読取可能媒体は、ロード・バランサ内の複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、ロード・バランサのマスタが機能しているかをコンピュータに判定させるための第1のコードのセットを含む。さらに、このコンピュータ読取可能媒体は、マスタが機能していない場合、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって、コンピュータに、マスタになることを試みさせるための第2のコードのセットを含む。予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含む。
さらなる局面では、ロード・バランサのスレーブ装置は、ロード・バランサの複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、ロード・バランサのマスタが機能しているかを判定する手段と、もしもマスタが機能していない場合、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがってマスタになることを試みる手段とを備える。予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を自己のネットワーク識別情報に設定することを含む。
他の局面では、ロード・バランサのスレーブ装置は、ロード・バランサ内における複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、マスタが機能しているかを判定するように動作可能であり、さらに、もしもマスタが機能していないのであれば、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしがたってマスタになることを試みるヘルス・マネジメント・サービスを備える。予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含む。さらに、スレーブ装置は、ヘルス・マネジメント・サービスと通信しており、ヘルス・マネジメント・サービスに応答して、マスタ・データベース・テーブルとの読み書きを行うように動作可能なデータベース・サービスを備える。
また別の局面では、ロード・バランサのマスタ・コンピュータ装置のためのコンピュータによって実現される方法は、マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行することを備える。この共通の予め定められたロール・トランジション・アルゴリズムは、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含む。さらに、この方法は、複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行することを含む。この共通の予め定められたヘルス・メンテナンス・アルゴリズムは、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能である。また、この方法は、予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、コマンドのグループのおのおのを、機能していると判定された複数のスレーブのうちの少なくとも1つへ割り当てることを含む。この方法はさらに、コマンドおよび対応する割当を、データベース・テーブルに格納することを含む。ここで、おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備える。さらに、この方法は、コマンドのグループのおのおのについて、データベース・テーブル内のコマンド・ステータスをチェックすることを含む。コマンド・ステータスは、それぞれのコマンドが実行されたか否かを示している。さらに、この方法は、コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定されたとき、コールバック機能を実行することを含む。
さらなる局面では、ロード・バランサのマスタとして動作するように構成された少なくとも1つのプロセッサは、マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行する第1のモジュールを備える。この共通の予め定められたロール・トランジション・アルゴリズムは、ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含む。さらに、少なくとも1つのプロセッサは、複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行する第2のモジュールを含む。この共通の予め定められたヘルス・メンテナンス・アルゴリズムは、ロード・バランサの複数のスレーブのおのおのによって独立して動作可能である。また、少なくとも1つのプロセッサは、予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てる第3のモジュールを含む。さらに、少なくとも1つのプロセッサは、コマンドおよび対応する割当を、データベース・テーブルに格納する第4のモジュールを含む。ここで、おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つに対するネットワーク識別情報を備える。少なくとも1つのプロセッサはさらに、コマンドのグループのおのおのについて、データベース・テーブル内のコマンド・ステータスをチェックする第5のモジュールを含む。ここで、コマンド・ステータスは、それぞれのコマンドが実行された否かを示す。このプロセッサはさらに、コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行する第6のモジュールを含む。
他の局面では、コンピュータ・プログラム製品は、動作を実行するためのコードを有するコンピュータ読取可能媒体を備える。このコンピュータ読取可能媒体は、コンピュータに対して、マスタになるために共通の予め定められたロール・トランジション・アルゴリズムを実行させる第1のコードのセットを含む。この共通の予め定められたロール・トランジション・アルゴリズムは、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報として設定することを含む。さらに、コンピュータ読取可能媒体は、コンピュータに対して、複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行させる第2のコードのセットを含む。この共通の予め定められたヘルス・メンテナンス・アルゴリズムは、ロード・バランサの複数のスレーブのおのおのによって独立して動作可能である。さらに、コンピュータ読取可能媒体は、コンピュータに対して、予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、コマンドのグループのおのおのを、機能していると判定された複数のスレーブのうちの少なくとも1つに割り当てさせる第3のコードのセットを含む。さらに、コンピュータ読取可能媒体は、コンピュータに対して、コマンドと、対応する割当とをデータベースに格納させる第4のコードのセットを含む。ここで、おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのネットワーク識別情報を備える。コンピュータ読取可能媒体はさらに、コンピュータに対して、コマンドのグループのおのおのについて、データベース・テーブル内のコマンド・ステータスをチェックさせる第5のコードのセットを含む。ここで、コマンド・ステータスは、それぞれのコマンドが実行されたか否かを示している。さらに、コンピュータ読取可能媒体は、コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コンピュータに対して、コールバック機能を実行させる第6のコードのセットを含む。
さらなる局面では、ロード・バランサのマスタ装置は、マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行する手段を備える。この共通の予め定められたロール・トランジション・アルゴリズムは、ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を自己のネットワーク識別情報に設定することを含む。さらに、マスタ装置は、複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行する手段を含む。この共通の予め定められたヘルス・メンテナンス・アルゴリズムは、ロード・バランサの複数のスレーブのおのおのによって独立して動作可能である。さらに、マスタ装置は、予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てる手段を含む。さらに、マスタ装置は、コマンドおよび対応する割当をデータベース・テーブル内に格納する手段を含む。おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのネットワーク識別情報を備える。さらに、マスタ装置は、コマンドのグループのおのおのについて、データベース・テーブル内のコマンド・ステータスをチェックする手段を備える。ここで、コマンド・ステータスは、それぞれのコマンドが実行されたか否かを示す。さらに、マスタ装置は、コマンド・ステータスに基づいて全てのコマンドが実行されたと判定された場合、コールバック機能を実行する手段を備える。
また別の局面では、ロード・バランサのマスタ装置は、マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行するように動作可能なヘルス・メンテナンス・サービスを備える。この共通の予め定められたロール・トランジション・アルゴリズムは、ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を自己のネットワーク識別情報に設定することを含む。さらに、ヘルス・メンテナンス・サービスは、複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行するように動作可能である。この共通の予め定められたヘルス・メンテナンス・アルゴリズムは、ロード・バランサ内の複数のスレーブのおのおのによって独立して動作可能である。マスタ装置はまた、予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを分配するように動作可能な分配サービスを含む。さらに、マスタ装置は、この分配サービスと通信しており、コマンドおよび対応する割当をデータベース・テーブル内に格納するように動作可能なデータベース・サービスを備える。ここで、おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つについてのネットワーク識別情報を備える。さらに、分配サービスはさらに、コマンドのグループのおのおのについて、データベース・テーブル内のコマンド・ステータスをチェックするように動作可能である。ここで、コマンド・ステータスは、それぞれのコマンドが実行されたか否かを示す。さらに、マスタ装置は、コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行するように動作可能なユーザ・コマンド実行部を備える。
前述の目的および関連する目的を達成するために、1または複数の局面は、後に十分に説明され、特に特許請求の範囲で指摘されている機能を備える。以下の記述および添付図面は、1または複数の局面のある例示的な特徴を詳細に述べている。しかしながら、これらの特徴は、様々な局面の原理が適用される様々な方式のうちのほんの幾つかを示しているにすぎず、本記載は、そのような全ての局面とそれらの等価物を含むことが意図されている。
図1は、ゼロ単一障害点ロード・バランサ・システムの1つの局面の概略図である。 図2は、図1のシステムの通信デバイスの構成要素の1つの局面の概略図である。 図3は、図1に示すゼロ単一障害点ロード・バランサ・システムのデータベース・テーブルの構成要素の1つの局面の概略図である。 図4は、図1に示すゼロ単一障害点ロード・バランサ・システムのデータベース・テーブルの構成要素の1つの局面の概略図である。 図5は、図1に示すゼロ単一障害点ロード・バランサ・システムのデータベース・テーブルの構成要素の1つの局面の概略図である。 図6は、図1に示すシステムのコンピュータ・デバイスの構成要素の1つの局面の概略図である。 図7は、図1に示すシステムのロード・バランサの追加構成要素の1つの局面の概略図である。 図8は、図1に示すゼロ単一障害点ロード・バランサ・システムのヘルス・メンテナンスのための方法の1つの局面のフローチャートである。 図9は、ゼロ単一障害点ロード・バランサ・システムのスレーブの方法の1つの局面のフローチャートである。 図10は、ゼロ単一障害点ロード・バランサ・システムのマスタのための方法の1つの局面のフローチャートである。
本明細書に記載の装置および方法は、コマンドのグループを、個々のコマンドに分割し、これらコマンドを複数のコンピュータ・デバイスへ分配し、実行されたコマンドの結果を統合する。このコンピュータ・デバイスを備えるシステムは、処理ファームと称されうる。いくつかの局面では、コンピュータ・デバイスのおのおのは、同じ方法を用いる。この方法は、マスタになることを試みているコンピュータ・デバイスのおのおのによって開始される。これらコンピュータ・デバイスの1つは、マスタを引き継いでマスタになり、残りのコンピュータ・デバイスのおのおのは、スレーブになる。有利なことに、この方法は、マスタを特定するために、個別のコントローラを必要とすることなく、おのおののコンピュータ・デバイスによって独立して実現されうる。コマンドは、実行するためマスタに発行される。マスタは、複数のコマンドを、個々のコマンドに分割する。例えば、複数のコマンドは、たとえばスクリプトによってともに受信され、マスタ・コンピュータ・デバイスのロード・バランサ構成要素は、このスクリプトを、スクリプトのおのおののライン毎に1つのコマンドに分割し、これらコマンドをスレーブに分配する。いくつかの局面では、スレーブは、マスタからの分配されたコマンドを受け取り、それぞれのコマンドを実行して、それぞれの結果をマスタへ返す。マスタは、分配されたコマンドを追跡し、結果をコンパイルし、関連する全ての分配されたコマンドの結果が利用可能になると、この結果を返す。
さらに、マスタは、スレーブのおのおのが機能していることを保証するために、定期的なチェックを行う。スレーブが機能していなければ、機能していないスレーブに割り当てられた分配されたコマンドが、他のスレーブに再び割り当てられるか、および/または、マスタが、分配されたそれぞれのコマンドを実行する。
さらに、スレーブのうちの少なくとも1つは、マスタが未だに機能していることを保証するために、規則的にチェックする。マスタがもう機能していないとスレーブが判定すると、スレーブは、独立して実行できる方法にしたがって、マスタになることを試みるだろう。いくつかの局面では、スレーブのおのおのは、スレーブのうちの1つが引き継いで、新たなマスタになるまで、マスタになることを試みる。マスタにならなかったスレーブは、スレーブとして動作し続ける。スレーブは、どのスレーブがマスタになるかを決定するためにデータベースを使用することができる。いくつかの局面では、1つのスレーブだけがマスタになることができるように、定数値のようなマスタ符号が、データベース内のマスタ・データベース・テーブルにおける主要鍵として使用されうる。
さらに、いくつかの局面では、マスタは、割当記録と、分配されたおのおののコマンドのステータスとを保持するためにデータベースを用いることができる。
したがって、ゼロ単一障害点バランサのためのシステムは、マスタが機能していない場合、マスタになることを試みるスレーブのうちの少なくとも1つによって、どのスレーブが新たなマスタになるのかを決定するためにデータベースを用いるスレーブによって、スレーブのおのおののステータスを規則的にチェックするマスタによって、タスクを維持するためにデータベースを用いるマスタによって、マスタのステータスを規則的にチェックするスレーブのおのおののうちの1または複数によって実現される。さらに、同じ方法を用いたコンピュータ・デバイスのおのおのによって、唯一の方法のみが開発され維持される必要がある。
図1に示すように、ゼロ単一障害点ロード・バランサ・システム20の局面は、コンピュータ・デバイス22、24、26および通信デバイス28を備える。図1では、コンピュータ・デバイス22のうちの1つがマスタ21であり、他のコンピュータ・デバイス22のうちの少なくとも1つがスレーブ23である。コンピュータ・デバイス22のおのおのは、ゼロ単一障害点ロード・バランサ・システム20を提供する方法を実行している。この方法は、おのおののコンピュータ・デバイス22に少なくとも2つの役割を与える。1つの役割は、スレーブ23として動作することであり、他の役割は、マスタ21として動作することである。
システム20では、コンピュータ・デバイス22のうち、指定されたマスタ21は、例えば通信ネットワーク44を経由して、コンピュータ・デバイス24のキュー入力モジュール38から1または複数のコマンド40を受け取る。例えば、おのおののコマンド40は、1または複数の通信デバイス28から収集され、データベース30に格納された通信デバイス関連データ29の処理に関連しうる。例えば、通信デバイス関連データ29は、対応する1または複数の無線通信ネットワークにおける1または複数の通信デバイスの動作のうちの1または複数に関連する情報や、例えばハードウェアおよび/またはソフトウェア、あるいは、これらの組み合わせおよび/またはいくつかの相関のような1または複数の通信デバイス構成要素のステータスを含みうる。それゆえ、コマンド40は、1または複数の通信デバイス28、通信デバイス28が動作する無線ネットワーク、あるいはこれら両方のある組み合わせに関連する統計量および/またはその他の特性を判定することに関連する。
いずれにせよ、1または複数のコマンド40を処理する効率を高めるために、マスタ21は、分配サービス48によって動作可能なロード・バランサ・モジュール42を実行し、処理のために、マスタ21のみならずスレーブ23を含むコンピュータ・デバイス22のうちの1または複数へ、コマンド40のうちの1または複数を分配する。例えば、おのおののコマンド40は、1より多いサブ・コマンドに分割され、分配されうる。特に、おのおののコンピュータ・デバイス22は、コマンド40のうちの1または複数を処理し、その結果をマスタ21に返すように動作可能なユーザ・コマンド実行部46を含む。マスタ21のロード・バランサ42は、結果をさらに処理するオプション局面において、結果の全てを再集合し、それぞれのコマンド40に対応する最終結果41を返すように動作可能である。例えば、最終結果41は、対応するコマンド40を参照してデータベース30に格納され、例えばコンピュータ・デバイス24のユーザのような許可されたユーザが、最終結果41を検索および閲覧できるようになる。上述したように、最終結果41は、1または複数の通信デバイス28から収集されたデータ29に少なくとも部分的に基づいて、1または複数の通信デバイス28、あるいは、1または複数の無線ネットワークに関連するある種の特性でありうる。さらに、ゼロ単一障害点局面では、例えばスレーブ23のようなおのおののコンピュータ・デバイス22はまた、マスタ21のロード・バランサ・モジュール42と通信するか、あるいは、それぞれのコンピュータ・デバイス22がマスタになる場合、マスタ・ロード・バランス機能を実行する類似のロード・バランサ・モジュール42をも含む。
さらに、マスタ21は、マスタ21およびスレーブ23を確立するための方法に関する情報のみならず、割り当てられた処理タスクおよび最終結果41に関する情報を格納するために、データベース30との通信インタフェースを提供するように動作可能なデータベース・サービス52を含む。ゼロ単一障害点局面では、データベース30は、高信頼性の組込式冗長システムを有するストレージ・メカニズムを備えている。例えば、データベース30は、マスタ21によって受信されたおのおののコマンド40に対する参照を格納するコマンド・インデクス・テーブル32を含みうる。さらに、データベース30は、それぞれのコマンド40の処理に対応して、マスタ21によってコンピュータ・デバイス22へ分配された様々なコマンドに対する参照と、分配されたコマンドのステータスとを格納するサブ・コマンド・インデクス・テーブル34を含みうる。さらに、単一障害点局面では、データベース30は、マスタ21に関連しており、新たなマスタを確立するために使用される情報を格納する。さらに、単一障害点局面では、例えばスレーブ23のようなおのおののコンピュータ・デバイス22は、データベース30および/またはマスタ21のデータベース・サービス52とインタフェースするために、類似のデータベース・サービス52を含んでいる。
さらに、単一障害点局面では、マスタ21は、通信ネットワーク44を介してスレーブ23のおのおのとのコンタクトを規則的に試みるように動作可能なヘルス・マネジメント・サービス50を含む。スレーブ23が通信可能ではないのであれば、マスタ21は、それぞれのスレーブ23は機能していないと考え、処理のためにそれぞれのスレーブ23に割り当てられた任意のコマンド40を再分配するように動作する。例えば、マスタ21の再分配サービス・モジュール48は、サブ・コマンド・インデクス・テーブル34を更新し、通信可能ではないそれぞれのスレーブ23から、通信可能である別のスレーブ23へとコマンド40を再分配することができる。
同様に、おのおののスレーブ23のヘルス・マネジメント・サービス50は、マスタ21とのコンタクトを規則的に試みることができる。例えばマスタ21からの応答がないなど、マスタ21が適切に機能していないとスレーブ23のヘルス・マネジメント・サービス50が判定すると、スレーブ23のヘルス・マネジメント・サービス50は、それぞれのスレーブ23の役割を、マスタ21の役割に変更することを試みるであろう。スレーブ23のヘルス・マネジメント・サービス50は、スレーブ23間の通信を管理するために、データベース30のマスタ・テーブル36を用いることによって、マスタ21になることを試みることができる。いくつかの局面では、マスタ・テーブル36は、単一のスレーブ23のみがマスタ・テーブル36に正しく書きこむことができるように、マスタ・テーブル36の主要鍵である、定数でありうるマスタ符号を用いる。いくつかの局面では、どのスレーブ23がマスタ21になるのかを決定する際におけるスレーブ23間の通信は、データベース30のマスタ・テーブル36における行を用いてセマフォー(semaphore)を実現または模擬することによって管理される。いくつかの局面では、スレーブ23およびマスタ21は、通信メッセー54を用いて互いにおよびデータベース30と通信し、互いを識別するネットワーク識別子(ID)56を用いる。
したがって、システム20は、スレーブ23へのコマンド40の分配を管理するためにマスタ21にデータベース30を提供することによって、および、スレーブ23が、マスタ21のステータスを規則的にチェックし、もしもマスタ21が適切に機能していないのであればマスタ21になることを試みることによって、ゼロ単一障害点ロード・バランサのための装置および方法を提供する。さらに、マスタ21は、スレーブ23のおのおののステータスを規則的にチェックし、もしもスレーブ23が応答しないのであれば、マスタ21は、通信可能ではないスレーブ23に割り当てられたコマンド40を、通信可能なスレーブ23および/またはマスタ21へ再割当する。いくつかの局面では、コマンド40およびそれらのステータスは、データベース30に格納される。したがって、システム20は有利なことに、コンピュータ・デバイス22の間にコマンドを分配し、コマンド関連情報をデータベース30内に格納することによってコマンド分配を管理し、ヘルス・マネジメント・サービス50間の通信によってシステムの健全性を維持し、データベース30を用いて、ロード・バランスのためのマスタ21の決定を管理するゼロ単一障害点システムを提供する。
図1および図2に示すように、通信デバイス28は、通信ネットワーク44とメッセージを交換するように動作可能な任意のタイプのデバイスを備えうる。例えば、通信デバイス28は、例えば無線電話および/またはセルラ・電話のようなモバイル通信デバイスを備える。通信デバイス28は例示したデバイスには限定されず、さらに、パーソナル・デジタル・アシスタント(PDA)、2ウェイ・テキスト・ページャ、有線または無線通信ポータルを有するポータブル・コンピュータ、および、有線および/または無線通信ポータルを有する任意のタイプのコンピュータ・プラットフォームを含みうることが理解されるべきである。さらに、通信デバイス28は、遠隔スレーブ、あるいは、エンド・ユーザは持たない、例えば遠隔センサ、遠隔サーバ、診断ツール、データ・リレイ等のようなその他の類似デバイスであり、無線ネットワークまたは有線ネットワークを介してデータを通信する。さらに、システム20では、任意の数の通信デバイス28からなる任意の組み合わせが利用されうる。さらに、通信デバイス28と、コンピュータ・デバイス22、24、26との区別がなされたが、いくつかのデバイスは、通信デバイス28およびコンピュータ・デバイス22、24、26の両方となりうることが注目されるべきである。
特に、システム20は、1または複数の通信デバイス28からデータを収集し、次に、マスタ・コンピュータ・デバイス21およびスレーブ・コンピュータ・デバイス23を用いて、収集したデータを処理し、分析するように動作する。特に、例えば遠隔コンピュータのようなコンピュータ・デバイス24のユーザは、1または複数のコマンド40を、キュー入力モジュール38に入力する。このモジュールは、コマンド40をマスタ・コンピュータ・デバイス21へ転送する。1または複数のコマンド40は一般に、収集するデータの識別情報、および/または、収集されたデータについてなされる分析の識別情報に関連する。その後、マスタ・コンピュータ・デバイス21は、1または複数のコマンド40を処理しその結果をコンピュータ・デバイス24へ返すためにロード・バランサ・モジュール42を実行する。
それゆえ、通信デバイス28は、通信デバイス、通信ネットワーク、またはそれらのいくつかの組み合わせに関する要求されたデータを収集するため、少なくともデータ収集モジュール33を格納するメモリ31を有するコンピュータ・プラットフォーム29を含む。データ収集モジュール33は、ハードウェア、ソフトウェア、およびファームウェアの任意の組み合わせを含み、任意の所望データを収集するように動的に構成されるように動作することができる。コンピュータ・プラットフォーム29はさらに、データ収集モジュール33を実行するためのプロセッサ35を含む。さらに、コンピュータ・プラットフォーム29は、データ収集モジュール33とプロセッサ35との間の通信を可能にするアプリケーション・プログラミング・インタフェース(API)37を含みうる。
API37は、それぞれの通信デバイス上で実行するランタイム環境でありうる。1つのそのようなランタイム環境は、カリフォルニア州サンディエゴのQualcomm社によって開発されたBinary Runtime Environment for Wireless(登録商標)(BREW(登録商標))ソフトウェアである。例えば、無線コンピュータ・デバイス上でのアプリケーションの実行を制御するように動作するその他のランタイム環境も利用されうる。他の局面では、API37は、例えばマイクロソフト社のWindows(登録商標)、LINUS、およびMAC OSのようなオペレーティング・システムでありうる。オペレーティング・システムは、複数のプロセッサの実行を可能にする複数のプロセッサおよび/または実行スレッドのために提供される。
さらに、いくつかの局面では、プロセッサ35は、ハードウェア、ファームウェア、ソフトウェア、およびこれらの組み合わせで具体化され、通信デバイス28の機能、および、通信ネットワーク44上の通信デバイス28の操作性を可能にする様々な処理サブシステムを含む(図1)。例えば、処理サブシステムは、通信の開始および維持、ならびに通信デバイス28内および/または通信デバイス28の構成要素間のみならず、他のネットワーク・デバイスとのデータの交換を考慮している。1つの局面では、例えばセルラ電話におけるように、プロセッサ35は、例えば、音、不揮発性メモリ、ファイル・システム、送信、受信、サーチャ、レイヤ1、レイヤ2、レイヤ3、主制御、遠隔手続、ハンドセット、電力管理、診断、デジタル信号プロセッサ、ボコーダ、メッセージング、コール・マネジャ、Bluetooth(登録商標)システム、Bluetooth(登録商標)LPOS、位置決め、位置決めエンジン、ユーザ・インタフェース、スリープ、データ・サービス、セキュリティ、認証、USIM/SIM(universal subscriber identity module/subscriber identity module)、音声サービス、グラフィックス、USB(universal serial bus)、MPEG(Moving Picture Experts Group)プロトコル・マルチメディアのようなマルチメディア、GPRS(General Packet Radio Service)、ショート・メッセージ・サービス(SMS)、ショート音声サービス(SVS(登録商標))、ウェブ・ブラウザ等のような処理サブシステムの1または組み合わせを含みうる。いくつかの局面では、データ収集モジュール33は、1または複数の処理サブシステムからデータを収集する。このデータは、ログ・コード、例えば通信デバイス28によって使用される通信プロトコルに対応するデータ・パケットのようなオーバ・ザ・エア・イベント、通信デバイス28の1または複数のハードウェア構成要素および/またはソフトウェア構成要素を記述する例えば現在状態、利用量等のようなデータ、あるいはこれらの組み合わせを備えうる。
コンピュータ・デバイスはデータベース30を取り扱い、本明細書に記載のロード・バランシングおよびデータ処理の局面の一部を実行する。データベース30はさらに、1または複数の通信デバイス28から収集したデータを格納しうる。
データベース30は、構造化されたデータデータを集めたものでありうる。1つの局面では、データベース30は、コンピュータ・デバイス26上で動作する例えばORACLE、MYSQL、あるいは、マイクロソフト社のACCESSのようなデータベース管理システム(DBMS)によってイネーブルされうる。データベース30は、例えばクラスタや冗長データベースのように、高い信頼性を与え、障害の可能性を低減する組込式冗長システムを含む。DBMSは、データベース30の行(しばしば、タプル(tuple)と称される)との読み書きや、例えばテーブル32、34、36のようなデータベースの生成および削除を可能にする。図1は、データベース30を、単一のコンピュータ・デバイス26によって実現されるものと示しているが、データベース30は、複数の冗長性を持つ多くのコンピュータ・デバイスによって実現されうる。さらに、データベース30は、1より多いストレージ・メカニズム内に実装されうる。
データベース30は、例えば図3乃至図5に示すようなテーブルから構成されうる。これらのテーブルは、列がデータの名前を示すデータ行を備えており、データ値が、テーブルの行にある。データベース30のテーブルは、主要鍵を有しうる。データベース30が主要鍵を有している場合、特定値を持つ1つの行のみが、テーブルのメンバとなりうる。一般に、DBMSによって、コンピュータ・デバイス22、24、26は、データベース30内のテーブルから、行の読み書きが可能となる。一般に、行の値は、マスタ21によってスレーブ23へ送られたコマンド40を含み、コンピュータ・メモリへの読み書きが可能な任意のタイプのデータでありうる。
図1、図3、および図4に示すように、局面では、データベース30の2つのテーブル32、34が、1または複数のコマンド40のステータスを保持するために使用される。コマンド・インデクス・テーブル32は、おのおののコマンド40と、処理のために分配された対応するサブ・コマンドとを追跡するために利用される。一方、サブ・コマンド・インデクス・テーブル34は、おのおののサブ・コマンドのステータスと、コマンド40に対するその関係とを追跡するために利用される。
1つの局面では、コマンド・インデクス・テーブル32は、以下のフィールドを含んでいる。コマンド・セット識別子(CMD SET ID)266は、コマンド・インデクス・テーブル32のための主要鍵であり、それぞれのコマンド40のためのユニークな識別子を備えている。コマンドの数268は、対応するコマンド40を処理するために分配されたサブ・コマンドの合計数でありうる。コールバック機能270は、コマンド40のグループが正しく実行された場合にコールされるべき、例えばスクリプトのようなメカニズムを備える。例えば、コールバック機能270は、コマンド40のグループの結果を単一結果に集める動作と、コマンド40のグループの新たな結果を生成するために、コマンド40のグループの結果のうちの少なくとも1つについて実行する動作または機能等を備えうる。さらに、例えば、ユーザ・コマンド実行部46や、例えば分配サービス48のようなロード・バランサ42のある部分が、コールバック機能270を実行または開始することができる。
サブ・コマンド・インデクス・テーブル34は、実際のサブ・コマンドを格納し、そのサブ・コマンドのステータスを保持するために使用されうる。サブ・コマンド・インデクス・テーブル34は、以下のフィールドを備えることができる。サブ・コマンド識別子(SUB−CMD ID)250は、サブ・コマンド・インデクス・テーブル34のおのおのの行のための主要鍵であり、ロード・バランサ42によって分配される全てのサブ・コマンドについて生成されるユニークな識別子を含む。コマンド(CMD)252は、割り当てられたコンピュータ・デバイスそれぞれのユーザ・コマンド実行部46による処理のための、コマンド40に対応する1つの単一サブ・コマンドでありうる。コールバック機能254は、コマンドのグループが正しく実行された場合にコールされるべき、例えばスクリプトのようなメカニズムを備える。コールバック機能ステータス256は、コールバック機能のステータスであって、例えば、1つの限定しない場合では、投入=0、実行中=1、実行済=2である。コマンド(CMD)状態258は、例えば、投入=0、実行中=1、実行済=2のように、サブ・コマンドの状態に対応する値を備える。開始時刻260は、それぞれのサブ・コマンドが、実行のために、それぞれのユーザ・コマンド実行部46へ送られる時刻を備える。コマンド(CMD)セットID266は、それぞれのコマンド40を参照するサブ・コマンドのおのおののグループに関連する識別子であり、CMDセットID266は、コマンド・インデクス・テーブル32において確立されたそれぞれのコマンド40の値に対応し、いくつかの局面では、CMDセットID266は、コールバック機能idとして使用される。アドレス264は、実行のためにそれぞれのサブ・コマンド40が割り当てられるコンピュータ・デバイス22の、例えばインターネット・プロトコル(IP)アドレスまたはネットワークID56のような識別子でありうる。
したがって、コマンド・インデクス・テーブル32およびサブ・コマンド・テーブル34は、おのおののコマンド40の分配された処理の管理および追跡を考慮しており、マスタ21役に変わったデバイスが、システム20の現在のステータスを判定可能とするメカニズムを提供する。
さらに、図1および図5に示すように、局面では、マスタ・テーブル36は、マスタ21の識別情報を保持し、どのコンピュータ・デバイス22がマスタ21になるのかを管理するために利用される。マスタ・テーブル36は、以下のフィールドを備える。マスタ・テーブル36のための主要鍵を備え、マスタが確立されたことを特定するマスタ・コード280。生成時刻276は、それぞれのマスタ・コード280が挿入された時刻であり、マスタ・アドレス278は、自分自身をマスタとして設定したコンピュータ・デバイス22の、例えばIPアドレスやネットワークID56のような識別子でありうる。マスタ・コード280が、マスタ21を特定するそれぞれの行を示す予め定めた値を備えているのであれば、マスタ・アドレス278は、現在のマスタ21であるコンピュータ・デバイスを識別するだろう。一般に、マスタ・テーブル36は、どのコンピュータ・デバイスがマスタであるかを判定するために、マスタ21とスレーブ23との間のコードのセクションを解決するために使用されうる。複数のコンピュータ・デバイス22があり。それらのおのおのは、ほとんど同時にマスタ21になることを試みるので、コンピュータ・デバイスがマスタを決定できるように、ある通信手段が使用されねばならない。それゆえ、例えばDijkstraアルゴリズムのようなソフトウェア・セマフォー・ソリューションを実現または模擬するためにマスタ・テーブル36が使用される。したがって、マスタ・コード280が、マスタ・テーブル36の主要鍵として使用される場合、1つのコンピュータ・デバイスのみが、マスタ・テーブル36にその識別情報を書き込み、マスタになることができる。したがって、どのコンピュータ・デバイス22がマスタ21になるのかを判定するために、スレーブ23とマスタ21のデータベース30を使用することによって、および、マスタ21のネットワークID54を提供するためにデータベース30を使用することによって、ゼロ単一障害点ロード・バランサのシステム20の局面が実現される。
図1に戻って示すように、上述したように、コンピュータ・デバイス24は、データを収集し収集したデータを分析するコマンド40をユーザが発行するように動作するキュー入力モジュール38を含む。特に、キュー入力モジュール38は、ハードウェア、ソフトウェア、ファームウェア、データ、および、コンピュータ・デバイス24に対してマスタ21のロード・バランサ42にコマンド40を入力する機能を与えるように動作可能な命令群のうちの1つまたは任意の組み合わせを備えうる。いくつかの局面では、キュー入力モジュール38は、テキスト・ベースであり、ユーザが、例えばコマンド・スクリプトのように、マスタ21のロード・バランサ42に送られるテキスト・コマンド40を入力できるようにする。したがって、キュー入力モジュール38は、コマンド40が受信され、マスタ21のロード・バランサ42へ送られるようにすることによって、コマンド40がシステム20に入力されるようにする。
さらに、図1に示すように、コンピュータ・デバイス22、24、26は、任意のタイプのコンピュータ・デバイスを備えうる。例えば、図1に例示するように、コンピュータ・デバイス22、24、26は、例えばネットワーク・デバイス、サーバ、コンピュータ・ワークステーション等のような固定式のコンピュータ・デバイスを備えうる。コンピュータ・デバイス22、24、26は、例示されたデバイスには限定されないが、さらに、有線通信ポータルまたは無線通信ポータルを有するポータブル・コンピュータと、有線通信ポータルおよび/または無線通信ポータルを有する任意のタイプのコンピュータ・デバイスとをさらに含みうることが理解されるべきである。さらに、コンピュータ・デバイス22は、同様の方式で例示されているが、コンピュータ・デバイス22のおのおのは、異なるタイプのコンピュータ・デバイスでありうることが注目されるべきである。さらに、コンピュータ・デバイス22、24、26は、例えば遠隔スレーブであるか、あるいは、例えば遠隔サーバのように、エンド・ユーザを持たないが無線ネットワークまたは有線ネットワーク44を介して単にデータを通信するその他の類似のコンピュータ・デバイスでありうる。代替局面では、コンピュータ・デバイス22、24、26のおのおのは、マルチ・プロセッサ・システムでありうる。さらに、任意の数のコンピュータ・デバイス22、24、26からなる任意の組み合わせが、システム20において利用されうることが注目されるべきである。したがって、本装置および方法は、有線または無線通信ネットワーク44に接続された任意の形式のコンピュータ・デバイス上で実行されうる。
さらに、(簡単のために、コンピュータ・デバイス22を参照している)図6に示すように、コンピュータ・デバイス22、24、26は、プロセッサ66によって実行可能な命令群を有するメモリ64と、それぞれのコンピュータ・デバイスとの通信を可能にする通信モジュール74とを含むコンピュータ・プラットフォーム62と通信するユーザ・インタフェース57を含みうる。
ユーザ・インタフェース57は、デバイス22への入力を生成または受信するように動作可能な入力メカニズム58と、デバイス22のユーザによって使用される情報を生成および/または表示するように動作可能な出力メカニズム60とを含む。例えば、入力メカニズム58は、例えばキーバッドおよび/またはキーボード、マウス、タッチ・スクリーン・ディスプレイ、音声認識モジュールと関連するマクロフォン等のような少なくとも1つのメカニズムを含みうる。ある局面では、入力メカニズム58は、コマンド40の少なくとも一部からなるユーザ入力を与える。さらに、例えば、出力メカニズム60は、ディスプレイ、オーディオ・スピーカ、触覚式フィードバック・メカニズム等を含むことができる。出力メカニズム60は、グラフィック・ユーザ・インタフェース、音、例えば振動のような感覚等を生成しうる。
さらに、メモリ64は、揮発性メモリや、たとえば読取専用メモリおよび/またはランダム・アクセス・メモリ(RAMおよびROM)のような不揮発性メモリ、消去可能なプログラマブル読取専用メモリ(EPROM)、電子的消去可能なプログラマブル読取専用メモリ(EEPROM)、フラッシュ・メモリ、および/または、コンピュータ・プラットフォームに一般的な任意のメモリを備えうる。さらに、メモリ64は、アクティブ・メモリおよびストレージ・メモリを含みうる。これらは、電子ファイル・システムや、例えば、磁気媒体、光学媒体、テープ、ソフト、および/またはハード・ディスク、およびリムーバブル・メモリ要素のような2次および/または3次記憶デバイスを含む。
さらに、コンピュータ・プラットフォーム62は、特定用途向けIC(ASIC)でありうる少なくとも1つのプロセッサ66、あるいは他のチップセット、論理回路、またはその他のデータ処理デバイスを含む。いくつかのオプションの局面では、破線で示すように、プロセッサ66は、例えばメモリ64内の任意のアプリケーションまたはモジュールのような常駐ソフトウェア構成要素70をインタフェースするアプリケーション・プログラミング・インタフェース(API)レイヤ68を実行させることができる。
さらに、通信モジュール74は、通信デバイス22と通信ネットワーク44(図1)との間で通信メッセージ54(図1)を交換するように動作可能であることに加えて、それぞれの通信デバイス22の様々な構成要素間での通信を可能にする。通信モジュール74は、ハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現されることができ、さらに、デバイス内通信およびデバイス間通信で使用される全てのプロトコルを含む。さらに、通信モジュール74は、本明細書に記載の装置および方法にしたがって、例えば通信メッセージ54のような情報を送信および/または受信するように動作することが可能である。
図1に戻って示すように、いくつかの局面では、通信メッセージ54は、要求したコンピュータ・デバイス22が応答するよう要求するハートビート要求を表すか、あるいは、ハートビート要求または他のタイプの通信メッセージ54の受信を示すアクノレッジメントを表すことができる。他の局面では、通信メッセージ54は、スレーブ23に送られるコマンド40、または、マスタ21へ送られるコマンド40の実行結果を備えうる。さらに別の局面では、通信メッセージ54は、データベース・テーブル32、34、36の全てまたは一部の読取または書込のためのコマンドでありうる。さらに、別の局面では、通信メッセージ54は、通信デバイス28の動作に対応するデータを収集するために、通信デバイス28へ送られるコマンドであることができ、通信メッセージ54は、通信デバイス28が収集したデータでありうる。一般に、通信メッセージ54によって、通信デバイス28および/またはコンピュータ・デバイス22、24、26が、通信ネットワーク44を介して通信できるようになる。通信メッセージ54は、通信ネットワーク44によって、1つのフォーマットから他のフォーマットへ変換されうることが注目されるべきである。例えば、通信メッセージ54は、コンピュータ・デバイス22からのTCP/IPパケットとして始まり、通信パケット54が通信デバイス28へ送信されるために、無線フォーマットへ変換される。
さらに、図1に示すように、おのおののコンピュータ・デバイス22のメモリは、全てあるいは少なくとも一部のネットワーク識別子(ID)56を格納するように動作することができる。ネットワークID56は、コンピュータ・デバイス22、24、26および/または通信デバイス28のための任意のタイプの識別子でありうる。いくつかの局面では、ネットワークID56は、コンピュータ・デバイス22、24、26のIPアドレスであるか、あるいは、例えばセルラ電話番号のような無線通信デバイス28を識別するためのIDでありうる。いくつかの局面では、ネットワークID56は、コンピュータ・デバイス22、24,26または通信デバイス28のネットワーク位置を直接的に識別できないかもしれないが、コンピュータ・デバイス22、24、26または通信デバイス28を位置決めするためにロード・バランサ42によって使用される情報を提供することができる。
さらに、おのおののコンピュータ・デバイス22のメモリは、コマンド40の全てまたは少なくとも一部を格納するように動作可能でありうる。コマンド40は、システム20を実行するための任意のタイプのコマンドでありうる。コマンド40は、単一のコマンド40であるか、あるいは、コマンドのグループ、または例えばコマンド・スクリプトのようなサブ・コマンドでありうる。コマンド40は、テキスト・コマンド、バイナリ実行形式を含むことができ、一般に、メモリ64に格納され、システム20の動作を指示する任意の形式の表現を含む。いくつかの局面では、コマンド40は、無線デバイス管理システムのユーザ・マネジャのための一連のコマンド40を含む。コマンド40は、マスタ21に対して、コマンド40の実行結果をどこに送るかを指示するコマンドを含む。コマンド40はさらに、他のデバイスによる実行のために意図された命令群を含みうる。例えば、1つの局面では、コマンド40は、無線通信デバイス28の動作に関する統計量を収集するように無線通信デバイス28へ指示する無線通信デバイス28のための命令群を含みうる。コマンド40は、無線通信デバイス28の動作に関する統計量の収集結果を、無線通信デバイス28が送る場所、例えばデータベース30、に関する命令群を含みうる。コマンド40は、完了するのに何日も要しうるか、あるいは、直ちに実行可能なコマンド40であるかもしれない。さらに、コマンド40は、それぞれのコマンド40に関連するサブ・コマンドを実行しているスレーブ23から戻された結果データに更なる処理をするように指示する、マスタ21のそれぞれのロード・バランサ42のための命令を含みうる。さらに、マスタ21は、コマンド40の結果の分配、実行、および返信を容易にするために、コマンド40に含まれていない追加情報を追加することができる。さらに、コマンド40を実行することによって、それぞれのコンピュータ・デバイス22上に格納され、マスタ21またはデータベース30またはその両方のように、ネットワーク上の予め定めた場所に戻されるデータを生成することができる。
図1および図7に示すように、ロード・バランサ42は、それぞれのコンピュータ・デバイス22内に格納され、それぞれのコンピュータ・デバイス22によって実行されうる。ロード・バランサ42は、ハードウェア、ソフトウェア、ファームウェア、データ、および、例えば、他のコンピュータ・デバイス22へコマンドを配信する機能、あるいは他のコンピュータ・デバイス22からコマンドを受信する機能をそれぞれのコンピュータ・デバイス22に提供し、システム20を管理するように動作可能な実行可能命令群のうちの1つまたは任意の組み合わせを備える。特に、おのおののコンピュータ22のロード・バランサ42は、3つの状態を持つことができる。これらのうちの第1の状態はマスタ状態であり、ここでは、マスタ21(図1)が、コマンド40を受信して、受信したコマンド40を分配する。第2の状態は、スレーブ状態であり、ここでは、ロード・バランサ42が、コマンド40を受け取り、このコマンド40を実行し、実行結果をマスタ21に返すことによってスレーブ23として動作する(図1)。第3の状態は、ロール・トランジション状態であり、ここでは、ロード・バランサ42が、マスタ21としてもスレーブ23としても動作しないが、マスタ21とスレーブ23とのロール・トランジションを開始している。ロード・バランサ42についてこれら3つの状態を用いることによって、スレーブ23とマスタ21との両方のために単一の方法を用いることが可能となり、スレーブ23は、マスタ21へロール・トランジションし、マスタ21は、スレーブ23にロール・トランジションし、もって、コントローラがそれぞれ、そのようなトランジションを管理する必要性を回避することが注目されるべきである。
上述したように、ロード・バランサ42は、分配サービス・モジュール48、ヘルス・マネジメント・サービス50、およびデータベース・サービス・モジュール52の3つのモジュールに分割される。しかしながら、ロード・バランサ42によって提供される機能は、その他のモジュールに分割されうるし、あるいは、単一のモジュールに組み入れられうる。それゆえ、幾つかの局面では、ロード・バランサ42は、コンピュータ・デバイス22に、少なくとも、他のコンピュータ・デバイス22の対応するロード・バランサ42と通信する機能、他のコンピュータ・デバイス22にコマンドを分配するか、あるいは他のコンピュータ・デバイスからコマンドを受信する機能、システム20のヘルス状態を管理する機能、および、データベース30の読み書きをする機能を提供する。
ヘルス・メンテナンス・サービス50は、それぞれのコンピュータ・デバイス22のメモリに格納されるか、あるいはメモリから実行されうる。ヘルス・メンテナンス・サービス50はそれぞれ、それぞれのコンピュータ・デバイス22に、システム20のヘルスを維持するための機能を提供するように動作可能なハードウェア、ソフトウェア、ファームウェア、データ、および実行可能命令群のうちの1つまたは任意の組み合わせを備える。一般に、ヘルス・メンテナンス・サービス50は、マスタ21が適切に機能していることを保証するために、コンピュータ・デバイス22がスレーブ23として動作する機能を提供する。さらに、マスタが適切に機能していない場合、ヘルス・メンテナンス・サービス50は、コンピュータ・デバイスが、マスタ21になることを試みるスレーブ23として動作する機能を提供する。さらに、ヘルス・メンテナンス・サービス50は、スレーブ23が適切に機能していることを保証するために、コンピュータ・デバイス22がマスタ21として動作する機能を提供する。スレーブ23が適切に機能していない場合、ヘルス・メンテナンス・サービス50は、コンピュータ・デバイス22が、正しく機能していないスレーブ23に割り当てられたコマンドを再分配するマスタ21として動作する機能を提供する。
1つの局面では、ヘルス・メンテナンス・サービス50は、スレーブ23とマスタ21とが、システム20のヘルスを判定するために通信できるように、通信メッセージ54を用いる。スレーブ23は、マスタ21に通信メッセージ54を規則的に送信し、マスタ21に対して、この要求をアクノレッジした通信メッセージ54を戻すように求める。以下に説明する図8は、ヘルス・メンテナンス・アルゴリズムによってシステム20のヘルスを維持し、ロール・トランジション・アルゴリズムによって、ロード・バランサ42をスレーブ23とマスタ21との間で遷移させるヘルス・メンテナンス・サービス50の幾つかの局面を例示する。ヘルス・メンテナンス・アルゴリズムとロール・トランジション・アルゴリズムとの両方は、ロード・バランサの全てのコンピュータ・デバイスに共通であり、これによって、コンピュータ・デバイスは、外部コントローラからの助けを必要とすることなく、ロード・バランサを管理できるようになることが着目されるべきである。いくつかの局面では、ヘルス・メンテナンス・サービス50あるいはロード・バランサ42は、コンピュータ・デバイス22がいつ通信可能であるか、および、コンピュータ・デバイス22がいつ通信不能であると判定されるかを判定するために使用される予め定めた時間76を備えうる。予め定めた時間76は、例えば通信ネットワーク44の負荷のような1または複数の要因に基づいて、ハートビートとも称される、通信メッセージ54を待つ時間を変える実行可能な手続きでありうる。さらに、幾つかの局面では、ヘルス・メンテナンス・サービス50は、スレーブ23がマスタ21へのロール・トランジションが可能となる前に、スレーブ23のための実際のパフォーマンス測定値78が、マスタ・パフォーマンス要件82で定義された1または複数の基準を満足するかをチェックするだろう。
例えば、パフォーマンス測定値78は、メモリの実際の量であるか、あるいは、実際の同時処理数であることができ、それぞれのコンピュータ・デバイス22は、直ちに実行可能である。一方、マスタ・パフォーマンス要件82は、デバイス22がマスタ21になれるために必要とされるメモリの最低量であるか、あるいは、スレーブ23がマスタ21になることが許可される前にスレーブ上で実行されうる同時処理の最低数でありうる。
図8に示すように、システム20のヘルスを維持するための方法200の1つの限定しない例は、(i)マスタとスレーブとの間をロール・トランジションすること、(ii)マスタとして動作すること、(iii)スレーブとして動作することを可能にするために、ロード・バランサ・モジュール42のヘルス・メンテナンス・サービス50によっておのおののコンピュータ・デバイス22によってなされる動作を含む。(ii)と(iii)とはともに、スレーブのヘルスを検証することと、マスタのヘルスを確認することとを含む。ブロック202、204、206、208、210および212に示すように、ロール・トランジション動作は、おのおののコンピュータ・デバイス22がマスタになることを試みること、または、マスタへの接続が確立されない場合にはマスタになることを試みることを可能にする共通のロール・トランジション・アルゴリズムに組み込まれる。さらに、ブロック220、222、224および226に示すように、マスタとして動作するヘルス関連動作は、検証マスタ・ヘルスを含み、スレーブのヘルスをチェックし、健全ではないかあるいは応答しないと判定されたスレーブに送られる任意のコマンドを再配分する。さらに、ブロック214、216および218に示すように、スレーブとして動作するヘルス関連動作は、検証スレーブ・ヘルスを含み、マスタのヘルスをチェックし、マスタのヘルスが検証されない場合、ロール・トランジション状態に入ってマスタになることを試みることによってマスタの潜在的な障害から回復することを試みる。ブロック220、222、224および226においてマスタとして動作するヘルス関連動作と、ブロック214、216および218においてスレーブとして動作するヘルス関連動作とは、ロード・バランサのコンピュータ・デバイスに共通の、そしてこれらコンピュータ・デバイスによって実行可能なヘルス・メンテナンス・アルゴリズムに組み込まれうることが着目されるべきである。したがって、方法200によって、システム20は、正しく機能しておらず応答しないコンピュータ・デバイスへ応答することを可能とし、システム20に追加される新たなコンピュータ・デバイスを考慮し、システム20を起動する方法を提供する。
ブロック200は、開始ブロックであり、ロード・バランサ42は、ロール・トランジションを初期化する状態で始まる。システム20の一部であるコンピュータ・デバイス22のおのおのは、ロード・バランサ42を実行することによって、ロード・バランサ42の多くのコピーが、異なるコンピュータ・デバイス22、24、26上で同時に実行できるが、ロード・バランサ42のおのおのは、独立しており、潜在的に異なる状態でありうることが理解されるべきである。
ブロック202において、ロード・バランサ42は、マスタ21になろうとするだろう。1つの限定しないケースでは、ロード・バランサ42は、マスタ・テーブル36(図1および図5)内に、例えば定数値であるマスタ・コード280(図5)、および、それぞれのロード・バランサ42を実行しているコンピュータ・デバイス22のネットワークID56を持つ行を挿入することを試みることによって、マスタ21になることを試みるだろう。この場合、ロード・バランサ42のうちの1つのみが、マスタ・テーブル36への書き込みを成功できるように、マスタ・コード280が、データベースの主要鍵となる。マスタ・テーブル36の主要鍵の定数値を有するマスタ・コード280およびマスタ・テーブル36を用いることは、マスタ21の識別情報の共有リソースを管理するために使用されうるデータベース・テーブルが使用される唯一の方法であることが着目されるべきである。他の方法は以下の通りである。
ブロック204において、ロード・バランサ42は、マスタ21のネットワークID56を読み取るために、マスタ・テーブル36を読み取る。1つの局面では、これは、マスタ21のIPアドレスでありうる。
ブロック206において、ロード・バランサ42は、ロード・バランサ42を実行しているコンピュータ・デバイス22のネットワークID56を、マスタ21のネットワークID56と比較する。ネットワークID56が同じである場合、ロード・バランサ42は、マスタ21になることに成功し、ロード・バランサ42は、マスタ状態に入る(ブロック220)。ネットワークID56が同じではない場合、ロード・バランサ42は、マスタ21にはならず、スレーブ状態に移行する前に、さらなる動作がある。
ブロック208において、ロード・バランサ42は、マスタ・テーブル36から読み取られたネットワークID56を用いて、マスタ21に接続することを試みる。
ブロック210において、ロード・バランサ42は、マスタ21への接続が成功したかを判定する。1つの局面では、ロード・バランサ42は、予め定めた待機時間に基づいて、マスタ21への接続が成功したかを判定する。
マスタ21への接続が成功しなければ、ブロック212において、ロード・バランサ42は、マスタ・テーブル36から読み取られたマスタ21のネットワークID56とマスタ・コード280とを用いて、マスタ・テーブル36からマスタ21を削除することを試みるだろう。1つの局面では、ロード・バランサ42は、マスタ21が通信可能ではないのであれば、適切に機能しないと仮定し、マスタ21を削除することを試みる。
ブロック210においてマスタへの接続が成功すれば、ブロック214において、ロード・バランサ42は、スレーブ23として動作する。一般に、スレーブとして動作することは、マスタ21からコマンドを受け取って実行し、次に、その結果をマスタ21に返すか、例えばデータベースのように結果が格納される場所へ参照を返すことを備える。いくつかの局面では、コマンド40を受け取り、コマンド40の実行結果を返すことは、TCP/IPによる通信メッセージ54を用いてなされる。
ブロック216において、スレーブ23として動作するロード・バランサ42は、マスタ・テーブル36から読み取られたマスタ21のネットワークID56を用いて、ハートビートを備える通信メッセージ54をマスタ21へ送る。いくつかの局面では、マスタ21のロード・バランサ42は、スレーブから受信したハートビートに基づいて、スレーブIDテーブル84(図2)を構築することができる。
ブロック218において、スレーブ23として動作するロード・バランサ42は、アクノレッジメントを備える通信メッセージ54がマスタ21から受信されたかを判定する。アクノレッジメントがマスタ21から受信されない場合、スレーブ23として動作するロード・バランサ42は、マスタ21が適切に機能していないと仮定し、ブロック212に進み、マスタ21を削除することを試みる。マスタ21からのアクノレッジメントが受信されると、スレーブ23として動作するロード・バランサ42は、ブロック214へ戻る。1つの局面では、マスタ21が通信可能ではないと判定し、そのマスタ21が適切に機能していないと仮定するまで、ロード・バランサ42は、アクノレッジメントを待つために、予め定めた時間を用いる。
ブロック206に戻って、それがマスタ21であるとロード・バランサ42が判定した場合、ロード・バランサ42は、ブロック220において、マスタ21として動作する。一般に、マスタ21として動作することは、システム20のヘルスを維持することと、スレーブ23が実行するコマンドを送ることと、コマンドを実行するスレーブ23の結果を受信することと、サブ・コマンドのグループ内の全てのコマンドが実行されたかを確認することと、スレーブ23のおのおのが適切に機能しているかを判定することとに関連するタスクを含む。
ブロック222において、ロード・バランサ42は、スレーブ23から受信したおのおののハートビート54に応答して、アクノレッジメントを備える通信メッセージ54を送る。さらに、ロード・バランサ42は、スレーブ23のおのおのにハートビート54を送る。いくつかの局面では、ハートビートとアクノレッジメントは、TCP/IPを用いて送られる。マスタ21は、例えばスレーブIDテーブル84のようなスレーブ23のネットワークID56のリストを保持し、このリストを、スレーブ23から受信したハートビートに基づいて更新する。
ブロック224において、ロード・バランサ42は、スレーブ23のおのおのがハートビート・メッセージにアクノレッジメントを送ったか否かを判定する。ロード・バランサ42は、おのおののスレーブ23からのアクノレッジメントのために予め定めた時間待機することに基づいてこの判定を行う。
ブロック226では、ロード・バランサ42は、通信可能ではないことに基づいて、適切に機能していないと判定されたスレーブ23のおのおのに割り当てられたコマンドを再分配する。いくつかの局面では、ロード・バランサ42は、スレーブのパフォーマンス測定値またはその他幾つかの予め定めた判定基準に基づいて、スレーブ23が適切に機能しているかを判定することができる。その後、ロード・バランサ42はブロック220に戻る。
したがって、ロード・バランサ42は、コンピュータ・デバイス22のおのおのがスレーブ23またはマスタ21の何れかになることを許可することによって、および、スレーブ23とマスタ21とのおのおのが適切に機能しているかを規則的に判定することによって、システム20のヘルスを維持するように動作することが可能である。
さらに、図1および図7に示すように、分配サービス・モジュール48が、コンピュータ・デバイス22のメモリに格納され、そこから実行されうる。分配サービス・モジュール48は、ハードウェア、ソフトウェア、ファームウェア、データ、および、サブ・コマンドのリストでありうるコマンド40を、スレーブ23の各ユーザ・コマンド実行部46へ、および/または、マスタ21のユーザ・コマンド実行部46へ分配する機能を、それぞれのコンピュータ・デバイス22に提供し、次に、実行されたコマンドを統合し、いくつかの局面では、キュー入力モジュール38に応答して結果を戻すように動作可能な実行可能命令群のうちの1または任意を備えうる。さらに、分配サービス・モジュール48は、コンピュータ・デバイス22が、適切に機能しなくなったスレーブ23へ分配されたコマンドを再分配することを可能にする。さらに、分配サービス・モジュール48は、キュー入力モジュール38が、システム20の実行のためにコマンド40を追加することを可能にする。いくつかの局面では、分配サービス・モジュール48は、どのコンピュータ・デバイス22がコマンド40を分配するかを判定することによって、システム20の垂直負荷平準のみならず水平負荷平準を保つ。水平平準は、スレーブ23および/マスタ21にわたってコマンド40を平準化することを称する。垂直平準は、単一のコンピュータ・デバイス22に割り当てられる負荷の量を平準化することを称する。1つの限定しないケースでは、例えば、分配サービス・モジュール48は、スレーブ23と通信して、スレーブ23の負荷を示す利用度を、スレーブ23から受信する。その後、分配サービス・モジュール48は、受信した利用度に基づいて、どのスレーブ23にコマンドを分配するのかを決定する。さらに、あるいは、その代わりに、分配サービス・モジュール48は、例えば、スレーブ23のおのおのが取り扱うことができる処理の最大数のような、スレーブ23から受信した他の情報に基づいて、分配決定を行う。いくつかの局面では、分配サービス44は、マスタ21にコマンド36を分配することができる。
いくつかの局面では、分配サービス・モジュール48は、データベース30を用いることにより、コマンド40のステータスを保持することができる。1つの限定しない例では、図1、図3、および図4に示すように、データベース30の2つのテーブル32、34が使用されうる。いくつかの局面では、分配サービス・モジュール48は、サブ・コマンド・インデクス・テーブル34を規則的に更新し、マスタ21がうまく機能しない場合、新たなマスタ21が、このサブ・コマンド・インデクス・テーブル34を用いて、完了するワークを失うことなく、コマンドの分配を続けることができる。さらに、分配サービス・モジュール48は、おのおののコマンド40の処理の分配を追跡するために、コマンド・インデクス・テーブル32を使用することができる。
したがって、コマンド40を維持するためにデータベース30を用いる分配サービス・モジュール48によって、および、サブ・コマンド・インデクス・テーブル34およびコマンド・インデクス・テーブル32を規則的に更新することによって、マスタ21が、適切に機能することを停止した場合、新たなマスタ21が、スレーブ23のワークを失うことなくコマンド40を分配し続け、これによって、ゼロ単一障害点ロード・バランサのシステム20に寄与することができる。
さらに、1つの限定しないケースでは、分配サービス・モジュール48は、スレーブ23にコマンド40を分配するために通信メッセージ54を使用することができる。さらに、スレーブ23は、結果をマスタ21に返すためにも通信メッセージ54を用いることができる。
さらに、図1および図7に示すように、データベース・サービス・モジュール52は、メモリ64に格納されるか、メモリ64から実行されうる。データベース・サービス・モジュール52は、ハードウェア、ソフトウェア、ファームウェア、データ、および、それぞれのコンピュータ・デバイス22へ、データベース30への読み書き機能を提供するように動作可能な実行可能な命令群のうちの1または任意の組み合わせを備えうる。いくつかの局面では、データベース・サービス・モジュール52は、コンピュータ・デバイス22がデータベース30へ読み書きするための便利な手段を提供するために、例えばORACLEのようなデータベース管理システムのためのアプリケーション・プログラム・インタフェースを使用することができる。したがって、コンピュータ・デバイス22は、コンピュータ・デバイス22が、データベース30のテーブル32、34、36の行またはタプルへ読み書きすることを可能にする。
さらに、図1に示すように、ユーザ・コマンド実行部46が、それぞれのコンピュータ・デバイス22のメモリに格納されるか、そこから実行されうる。ユーザ・コマンド実行部46は、ハードウェア、ソフトウェア、ファームウェア、データ、および、それぞれのコンピュータ・デバイス22へ、コマンド40を実行する機能を提供するように動作可能な実行可能な命令群のうちの1または任意の組み合わせを備えうる。いくつかの局面では、ユーザ・コマンド実行部46は、コマンド40を実行するためにスレッドを分岐させることができる。他の局面では、ユーザ・コマンド実行部46は、コマンド40を直接的に実行するアプリケーション・プログラムでありうる。一般に、ユーザ・コマンド実行部46は、コンピュータ・デバイス22が、コンピュータ・デバイス22において任意のコマンド40を実行することを可能にし、さらに、例えば通信デバイス28のような遠隔デバイスと通信するための機能を提供することができる。一般に、ユーザ・コマンド実行部46は、コマンドを取り出して実行し、その結果を、通信ネットワーク44を介してマスタ21へ送る。代替例において、あるいはそれに加えて、ユーザ・コマンド実行部46は、その結果を、データベース30および/またはスレーブ23および/またはマスタ21内のメモリまたはストレージの幾つかの形態で格納することができる。したがって、ユーザ・コマンド実行部46は、コンピュータ・デバイス22がコマンドを実行することを可能にする。
図1に示すように、それに加えて、および/または、その代わりに、ロード・バランサ42は、オペレーティング・システムのスレッドを用いて、システム20の機能をイネーブルすることができる。便宜上、スレッドの機能は、ロード・バランサ42のサブ・モジュールの機能にリンクすることなく説明されていることに注意されたい。1つの限定しない例では、マスタ21のためコンピュータ・デバイス22で生成されたスレッドは、そのタスクが、データベース・ハンドル・スレッドを生成することと、スレーブ23との通信のためにユーザ定義されたポート番号でTCP/IPサーバを実行することと、マスタ21と通信するおのおののスレーブ23のために個別のスレーブ・ハンドル・スレッドを生成することとを含むマスタ・スレッドを備える。データベース・ハンドル・スレッドのタスクは、データベース・テーブル32、34、36を読み書きすることを含む。スレーブ・ハンドル・スレッドのタスクは、スレーブ23が未だに機能していることを確認するためにスレーブ23にメッセージを送ることと、スレーブ23にコマンドを送ることと、コマンド40を実行したスレーブ23の結果を受信することとを含む。スレーブ23のためコンピュータ・デバイス22で生成されたスレッドは、そのタスクが、マスタ21とのTCP/IP接続を行うことと、パフォーマンスに関する情報(例えば、スレーブ23上で動作可能な同時プロセスの最大数)をマスタ21に送ることと、マスタ21にハートビートを送ることと、マスタからハートビートを受信することと、マスタ21へアクノレッジメントを送り、マスタ21からアクノレッジメントを受信することとを含むスレーブ・スレッドを備える。スレーブ23およびマスタ21は、そのタスクが、マスタ21から受信したコマンドを実行することを含む次の分岐プロセスを備えうる。したがって、マスタ21およびスレーブ23の機能は、スレッド・オペレーティング・システムを用いてイネーブルされうる。
さらに、図1に再び示すように、通信ネットワーク44は、任意のデータおよび/または音声通信ネットワークを備えうる。例えば、通信ネットワーク44は、以下のうちの何れか1つまたは任意の組み合わせの全てまたは一部を備えうる。有線電話ネットワークまたは無線電話ネットワーク、地上電話ネットワーク、衛星電話ネットワーク、例えば赤外線通信協会(IrDA)のような赤外線ネットワーク・ベースのネットワーク、短距離無線ネットワーク、Bluetooth(登録商標)技術ネットワーク、ZigBee(登録商標)プロトコル・ネットワーク、超広帯域(UWB)プロトコル・ネットワーク、ホーム無線周波数(HomeRF)ネットワーク、シェアド無線アクセス・プロトコル(SWAP)ネットワーク、例えば無線イーサネット(登録商標)互換性アライアンス(WECA)ネットワークや無線フィディリティ・アライアンス(Wi−Fiアライアンス)ネットワークや802.xxネットワークのような広帯域ネットワーク、パケット・データネットワーク、データ・ネットワーク、インターネット・プロトコル(IP)マルチメディア・サブシステム(IMS)ネットワーク、公衆交換ネットワーク、例えばインターネットのような公衆異種混合ネットワーク、プライベート通信ネットワーク、カリフォルニア州サンディエゴのQualcomm社から利用可能なMediaFLO(登録商標)システムを含むフォワード・リンク・オンリー(FLO)ネットワークのようなマルチキャスト・ネットワーク、例えば、衛星用DVB−S、ケーブル用DVB−C、地上テレビ用のDVB−T、携帯用地上テレビ用のDVB−Hのようなデジタル・ビデオ・ブロードキャスト(DVB)ネットワーク、および、陸上バイル無線ネットワーク。
さらに、通信ネットワーク44の幾つかの局面に含まれる電話ネットワークの例は、例えば、符号分割多元接続(CDMA)、広帯域符号分割多元接続(WCDMA)、ユニバーサル・モバイル通信システム(UMTS)、アドバンスト・モバイル電話サービス(AMPS)、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、直交周波数分割多元接続(OFDMA)、グローバル移動体通信システム(GSM)、単一キャリア(1X)ラジオ放送技術(RTT)、エボリューション・データ・オンリー(EV−DO)技術、
汎用パケット無線サービス(GPRS)、エンハンスト・データGSM環境(EDGE)、高速ダウンリンク・データ・パケット・アクセス(HSPDA)、アナログおよびデジタル衛星システム、および、無線通信ネットワークおよびデータ通信ネットワークのうちの少なくとも1つで使用されうるその他の技術/プロトコル、のようなアナログおよびデジタルのネットワーク/技術のうちの1つまたは任意の組み合わせのうちの少なくとも一部を含む。
図9に示すように、動作中、スレーブ・デバイスにおけるゼロ単一障害点ロード・バランサ・システムの方法の1つの限定しない場合は、マスタが機能しているかを判定することを備える(ブロック300)。例えば、1つの限定しないケースでは、図1および図6に示すように、スレーブ23が、マスタ21へ通信メッセージ54を送り、マスタ21からのアクノレッジメント54を待つ。スレーブ23は、スレーブ23がマスタ21へ通信メッセージ54を送ってから経過した予め定めた時間76(図2)に基づいて、マスタ21が機能しているかの判定を行う。あるいは他の局面では、スレーブ23は、マスタ21のいくつかのパフォーマンス測定値に基づいてこの判定を行う。
この方法はさらに、マスタが機能していない場合、少なくとも1つの他のスレーブを用いて通信を管理するために、データベースを用いることによって、マスタになることを試みる(ブロック302)。例えば、図1、図5、および図6に示すように、1つの限定しないケースでは、スレーブ23は、マスタ・テーブル36に書き込みを行うことができる。スレーブ23は、セマフォー(semaphore)を実現するために、Dijkstraアルゴリズムの幾つかの変形を実施することができるか、あるいは代替例では、スレーブ23は、おのおののスレーブ23についてマスタ・テーブル36内の単一の行またはタプルを用いて、マスタ・テーブル36に対する主要鍵でもあるフィールドのための同じ定数値を持つ行を設定することを試みる。これによって、スレーブ23のうちの1つのみが、マスタ・テーブル36内の行に書き込まれ、新たなマスタ21になる。
オプションとして、この方法はさらに、実行するための少なくとも1つのコマンドを受信することと、コマンドの実行結果をマスタに送ることとを含む。図1に示すように、スレーブ23は、実行するコマンド40を受信し、そのコマンド40を実行し、結果をマスタ21に返す。いくつかの局面では、スレーブ23は、実行結果をデータベース30に書き込み、この実行が完了したことを示すインジケーションをマスタ21に送る。スレーブ23は、幾つかの局面において、TCP/IPを用いて送られる通信メッセージ54を用いてマスタ21と通信することができる。
オプションとして、この方法はさらに、マスタからメッセージを受信することと、マスタにアクノレッジメントを送ることとを含む(ブロック306)。1つの限定しないケースでは、例えば、スレーブ23は、スレーブ23がマスタからの通信メッセージ54にアクノレッジすることを要求する通信メッセージ54をマスタ21から受信する。マスタ21およびスレーブ23は、ローカル・エリア・ネットワーク(LAN)を用いて、TCP/IPによって通信することができる。
図10に示すように、動作中、マスタ・デバイスにおけるゼロ単一障害点ロード・バランサのための方法の1つの限定しないケースは、マスタによって実行されないコマンドのおのおのを、複数のスレーブのうちの1つへ割り当てることを備える(ブロック400)。例えば、1つの限定しないケースでは、図1および図3に示すように、マスタ21は、通信メッセージ54を用いてコマンド40をスレーブ23に割り当て、コマンド40と、コマンド40に割り当てられたスレーブ23との両方を、サブ・コマンド・インデクス・テーブル34へ書き込む。
この方法はさらに、コマンドおよび対応する割当をデータベースに格納することを含む(ブロック402)。ここで、おのおのの割当は、コマンドに割り当てられたマスタまたはスレーブの識別情報を備える。例えば、1つの限定しないケースでは、図1、図4、および図5に示すように、コマンド40のステータスを保持するために、データベース30の2つのテーブル32、34が使用されうる。
この方法はさらに、複数のスレーブのうちのおのおのが機能しているかを判定することを含む(ブロック404)。例えば、1つの限定しないケースでは、図1および図3に示すように、マスタ21は、スレーブ23のおのおのに通信メッセージ54を送り(図3のブロック222)、スレーブ23が予め定めた時間内に通信メッセージ54を返さないのであれば、マスタ21は、スレーブ23が機能していないと仮定するだろう。
この方法はさらに、もしもスレーブが機能していないのであれば、スレーブに割り当てられたコマンドのおのおのを、複数のスレーブ23のうちの少なくとも1つに割当てることを含む(ブロック406)。例えば、1つの限定しないケースでは、図1および図3に示すように、マスタ21は、コマンドを他のスレーブ23に再び割り当てる(図8のブロック226)。マスタ21は、サブ・コマンド・インデクス・テーブル34を調べ、機能していないおよび/または通信可能ではないスレーブ23に割り当てられたおのおののコマンド40について、他のスレーブ23へ再割り当てする。
本明細書で開示された局面に関連して説明された例示的な様々なロジック、論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセサ(DSP)、特定用途向けIC(ASIC)、フィールド・プログラム可能ゲート・アレイ(FPGA)またはその他のプログラム可能論理回路、ディスクリート・ゲートまたはトランジスタ・ロジック、ディスクリート・ハードウェア構成要素、あるいは本明細書に記述された機能を実行するために設計されたこれら任意の組み合わせを用いて実施または実現されうる。汎用プロセッサは、マイクロプロセッサであるかもしれないが、代替例として、このプロセッサは、従来式プロセッサ、コントローラ、マイクロコントローラ、または状態機械でありうる。プロセッサはまた、例えばDSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと連携する1または複数のマイクロプロセッサ、あるいはその他任意の構成のようなコンピュータ・デバイスの組み合わせとして実現されうる。
さらに、本明細書で開示された局面と連携して説明される方法またはアルゴリズムのステップおよび/または局面は、ハードウェアによって、プロセッサによって実行されるソフトウェア・モジュールによって、あるいはこれら2つの組み合わせによって具体化される。ソフトウェア・モジュールは、RAMメモリ、フラッシュ・メモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハード・ディスク、リムーバブル・ディスク、CD−ROM、あるいは当該技術で周知の記憶媒体の形態で存在しうる。典型的な記憶媒体は、プロセッサが情報を読み書きできるように、プロセッサに接続されうる。代替例では、記憶媒体は、プロセッサに統合されうる。さらに、いくつかの局面では、プロセッサおよび記憶媒体は、ASICに存在することができる。さらにASICは、ユーザ端末に存在することができる。代替例では、プロセッサおよび記憶媒体は、ユーザ端末内の別々の構成要素として存在することができる。さらに、いくつかの局面では、少なくとも1つのプロセッサは、コンピュータに対して、本明細書に記載の任意の方法またはアルゴリズムのステップおよび/または動作を実行させる1または複数のモジュールを備える。さらに、いくつかの局面では、方法またはアルゴリズムのステップおよび/または動作は、コンピュータ・プログラム製品に組み込まれうるコードまたは命令群の1または任意の組み合わせまたはセットとして、機械読取可能媒体および/またはコンピュータ読取可能媒体上に存在することができる。
前述した開示は、例示的な局面を説明しているが、様々な変形および修正が、説明された局面、および/または、特許請求の範囲で定義された局面の範囲から逸脱すること無くなされうることが着目されるべきである。さらに、説明された局面の構成要素は、単数として説明または特許請求されているが、もしも単数に対する限定が明示的に述べられていないのであれば、複数も考慮される。さらに、そうではないと述べられていないのであれば、任意の局面の全てまたは一部が、他の任意の局面の全てまたは一部とともに利用されうる。
以下に、出願時の特許請求の範囲に記載された発明を付記する。
[発明1]
ロード・バランサのスレーブ・コンピュータ装置のためにコンピュータによって実現される方法であって、
前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定することと、
前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みることとを備え、
前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含む方法。
[発明2]
前記マスタになることを試みることはさらに、マスタ・コードを有する前記マスタ・データベース・テーブルのポーションに前記自己のネットワーク識別情報を設定することを含み、前記マスタ・コードは、前記マスタ・データベース・テーブルの主要鍵のために予め定められた値を備える発明1に記載の方法。
[発明3]
前記マスタになることを試みることはさらに、前記マスタ・ネットワーク識別情報へのアクセスを制御するために、前記マスタ・データベース・テーブルの一部分を用いてセマフォー(semaphore)を実現することを備える発明1に記載の方法。
[発明4]
前記マスタになることを試みることはさらに、
マスタ・コードに基づいて、前記マスタ・データベース・テーブルの一部分から、前記マスタ・ネットワーク識別情報を読み取ることと、
前記マスタ・データベース・テーブルのうち、前記マスタ・コードと前記マスタ・ネットワーク識別情報とを備える部分の削除を試みることと
を備える発明1に記載の方法。
[発明5]
マスタ・コードに対応するマスタ・データベース・テーブルの一部分から前記マスタ・ネットワーク識別情報を読み取ることと、
前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致しているかを確認することと、
前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致していない場合、スレーブとして動作することと、
前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致している場合、前記マスタとして動作することと
をさらに備える発明1に記載の方法。
[発明6]
前記マスタが機能しているかを判定することはさらに、
前記マスタ・ネットワーク識別情報に基づいて前記マスタへ通信を送ることと、
前記マスタから予め定められた時間内にアクノレッジメントが受信されない場合、前記マスタになることを試みることと
を備える発明1に記載の方法。
[発明7]
前記マスタが機能しているかを判定することはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記マスタへ送信することを備える発明1に記載の方法。
[発明8]
前記マスタから通信メッセージを受信することと、
前記マスタへアクノレッジメントを送信することと
をさらに備える発明1に記載の方法。
[発明9]
実行するための少なくとも1つのコマンドを前記マスタから受信することと、
前記コマンドの実行結果を前記マスタへ送信することと
をさらに備える発明1に記載の方法。
[発明10]
前記コマンドを実行することをさらに備え、
前記コマンドを実行することは、無線ネットワークで動作する少なくとも1つの無線デバイスに対応するパフォーマンス統計量を処理することを備える発明9に記載の方法。
[発明11]
マスタ・パフォーマンス要件を取得することと、
前記スレーブの実際のパフォーマンス測定値を取得することと、
前記実際のパフォーマンス測定値が前記マスタ・パフォーマンス要件を満足する場合にのみ、前記スレーブが前記マスタになることを許可することと
をさらに備える発明1に記載の方法。
[発明12]
ロード・バランサのスレーブとして動作するように構成された少なくとも1つのプロセッサであって、
前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定する第1のモジュールと、
前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みるように構成された第2のモジュールとを備え、
前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含むプロセッサ。
[発明13]
ロード・バランサのスレーブのためのコンピュータ・プログラム製品であって、
コンピュータに、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定させる第1のコードのセットと、
前記マスタが機能していない場合、前記コンピュータに、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みさせる第2のコードのセットとを備え、
前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含むコンピュータ・プログラム製品。
[発明14]
ロード・バランサのスレーブ装置であって、
前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定する手段と、
前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みる手段とを備え、
前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含むスレーブ装置。
[発明15]
ロード・バランサのスレーブ装置であって、
前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、マスタが機能しているかを判定し、さらに、前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みるように動作可能なヘルス・マネジメント・サービスを備え、
前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含み、
前記スレーブ装置はさらに、前記ヘルス・マネジメント・サービスと通信しており、前記ヘルス・マネジメント・サービスに応答して前記マスタ・データベースとの読み書きが可能なデータベース・サービスを備えるスレーブ装置。
[発明16]
前記ヘルス・マネジメント・サービスに応答して、前記データベース・サービスはさらに、マスタ・コードを有する前記マスタ・データベース・テーブルの一部分に前記自己のネットワーク識別情報を設定するように動作し、前記マスタ・コードは、前記マスタ・データベース・テーブルの主要鍵のために予め定められた値を備える発明15に記載のスレーブ装置。
[発明17]
前記ヘルス・マネジメント・サービスに応答して、前記データベース・サービスはさらに、前記マスタ・ネットワーク識別情報へのアクセスを制御するために、前記マスタ・データベース・テーブルの一部分を用いてセマフォー(semaphore)を実現するように動作する発明15に記載のスレーブ装置。
[発明18]
前記ヘルス・マネジメント・サービスに応答して、前記データベース・サービスはさらに、マスタ・コードに基づいて、前記マスタ・データベース・テーブルの一部分から、前記マスタ・ネットワーク識別情報を読み取り、前記マスタ・データベース・テーブルのうち、前記マスタ・コードと前記マスタ・ネットワーク識別情報とを備える部分の削除を試みるように動作する発明15に記載のスレーブ装置。
[発明19]
前記ヘルス・マネジメント・サービスまたは前記データベース・サービスのうちの少なくとも1つはさらに、
マスタ・コードに対応するマスタ・データベース・テーブルの一部分から前記マスタ・ネットワーク識別情報を読み取り、
前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致しているかを確認し、
前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致していない場合、前記スレーブ装置をスレーブとして動作させ、
前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致している場合、前記スレーブ装置を前記マスタとして動作させるように動作する発明15に記載のスレーブ装置。
[発明20]
前記ヘルス・マネジメント・サービスはさらに、前記マスタ・ネットワーク識別情報に基づいて前記マスタへ通信を送り、前記マスタから予め定められた時間内にアクノレッジメントが受信されない場合、前記マスタになることを試みるように動作する発明15に記載のスレーブ装置。
[発明21]
前記ヘルス・マネジメント・サービスはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記マスタへ送信するように動作する発明15に記載のスレーブ装置。
[発明22]
前記マスタから通信メッセージを受信することと、
前記マスタへアクノレッジメントを送信することと
をさらに備える発明1に記載のスレーブ装置。
[発明23]
通信ネットワークを介して前記マスタからコマンドを受信し、前記コマンドを実行し、前記コマンドの実行結果を、前記通信ネットワークを介して前記マスタへ送信するように動作可能なユーザ・コマンド実行部をさらに備える発明15に記載のスレーブ装置。
[発明24]
前記ユーザ・コマンド実行部はさらに、無線ネットワークで動作する少なくとも1つの無線デバイスに対応するパフォーマンス統計量を処理するように動作する発明15に記載のスレーブ装置。
[発明25]
マスタ・パフォーマンス要件と、前記スレーブの実際のパフォーマンス測定値とを有するメモリをさらに備え、
前記ヘルス・メンテナンス・サービスはさらに、前記実際のパフォーマンス測定値が前記マスタ・パフォーマンス要件を満足する場合にのみ、前記スレーブが前記マスタになることを許可するように動作する発明15に記載のスレーブ装置。
[発明26]
ロード・バランサのマスタ・コンピュータ装置のためにコンピュータによって実現される方法であって、
マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行することを備え、
前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含み、
前記方法はさらに、前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行することを備え、
前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
前記方法はさらに、
前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てることと、
前記コマンドおよび対応する割当をデータベース・テーブル内に格納することとを備え、
おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
前記方法はさらに、
前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認することと、
前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行することと
を備える方法。
[発明27]
前記コールバック機能を実行することは、前記コマンドのグループのおのおのの実行によって生成される少なくとも1つの結果にコマンド・スクリプトを実行することをさらに備える発明26に記載の方法。
[発明28]
前記共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行することはさらに、
前記複数のスレーブのおのおのが機能しているかを判定することと、
前記複数のスレーブのそれぞれ1つが機能していない場合、機能していないそれぞれのスレーブに対応するそれぞれのコマンドを、機能している複数のスレーブのうちの少なくとも1つに再割り当てすることとを備え、
前記コールバック機能を実行することは、前記再割り当てすることに基づく発明26に記載の方法。
[発明29]
前記スレーブのおのおのが機能しているかを判定することは、
前記複数のスレーブのおのおのに通信メッセージを送信することと、
前記複数のスレーブのおのおのから、予め定めた時間内にアクノレッジメントが受信されない場合、前記スレーブを、機能していないものと指定することと
をさらに備える発明28に記載の方法。
[発明30]
前記送信することはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記複数のスレーブのおのおのに送信することを備える発明29に記載の方法。
[発明31]
前記割り当てることはさらに、前記複数のスレーブのおのおのに既に割り当てられたコマンドの数に基づいて割り当てる発明26に記載の方法。
[発明32]
前記割り当てることはさらに、前記複数のスレーブのおのおのの利用度に基づいて割り当てる発明26に記載の方法。
[発明33]
前記複数のスレーブのおのおのから受信した通信メッセージを用いることによってスレーブ識別テーブルを構築することをさらに備え、
前記スレーブ識別テーブルは、おのおののスレーブのネットワーク識別情報を含む発明26に記載の方法。
[発明34]
既存のマスタのヘルスを判定するために、前記共通の予め定められたヘルス・メンテナンス・アルゴリズムを、マスタになる前に実行することをさらに備え、
前記マスタになるために、前記共通の予め定められたロール・トランジション・アルゴリズムを実行することは、前記既存のマスタが機能していないとの判定に基づいてトリガされる発明26に記載の方法。
[発明35]
前記マスタになることはさらに、
実際のパフォーマンス測定値を判定することと、
マスタ・パフォーマンス要件を判定することと、
前記実際のパフォーマンス測定値が、前記マスタ・パフォーマンス要件を満足する場合、前記マスタとして動作することと
を備える発明34に記載の方法。
[発明36]
ロード・バランサのマスタとして動作するように構成された少なくとも1つのプロセッサであって、
マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行する第1のモジュールを備え、
前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含み、
前記プロセッサはさらに、前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行する第2のモジュールを備え、
前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
前記プロセッサはさらに、
前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てる第3のモジュールと、
前記コマンドおよび対応する割当をデータベース・テーブル内に格納する第4のモジュールとを備え、
おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
前記プロセッサはさらに、
前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認する第5のモジュールと、
前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行する第6のモジュールと
を備えるプロセッサ。
[発明37]
コンピュータ・プログラム製品であって、
コンピュータに対して、マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行させる第1のコードのセットを備えるコンピュータ読取可能媒体を備え、
前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含み、
前記コンピュータ読取可能媒体はさらに、
前記コンピュータに、前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行させる第2のコードのセットを備え、
前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
前記コンピュータ読取可能媒体はさらに、
前記コンピュータに、前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てさせる第3のコードのセットと、
前記コンピュータに、前記コマンドおよび対応する割当をデータベース・テーブル内に格納させる第4のコードのセットとを備え、
おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
前記コンピュータ読取可能媒体はさらに、
前記コンピュータに、前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認させる第5のコードのセットと、
前記コンピュータに、前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行させる第6のコードのセットと
を備えるコンピュータ・プログラム製品。
[発明38]
ロード・バランサのマスタ装置であって、
マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行する手段を備え、
前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含み、
前記マスタ装置はさらに、
前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行する手段を備え、
前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
前記マスタ装置はさらに、
前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てる手段と、
前記コマンドおよび対応する割当をデータベース・テーブル内に格納する手段とを備え、
おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
前記マスタ装置はさらに、
前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認する手段と、
前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行する手段と
を備えるマスタ装置。
[発明39]
ロード・バランサのマスタ装置であって、
マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行するように動作可能なヘルス・メンテナンス・サービスを備え、
前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報に設定することを含み、
前記ヘルス・メンテナンス・サービスはさらに、前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行するように動作可能であり、
前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
前記マスタ装置はさらに、
前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てるように動作可能な分配サービスと、
前記分配サービスと通信しており、前記コマンドおよび対応する割当をデータベース・テーブル内に格納するように動作可能なデータベース・サービスとを備え、
おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
前記分配サービスはさらに、前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認するように動作し、
前記マスタ装置はさらに、前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行するように動作可能なユーザ・コマンド実行部を備えるマスタ装置。
[発明40]
前記コールバック機能は、前記コマンドのグループのおのおのの実行によって生成される少なくとも1つの結果について実行可能なコマンド・スクリプトを備える発明39に記載のマスタ装置。
[発明41]
前記分配サービスと通信するヘルス・メンテナンス・サービスをさらに備え、
前記ヘルス・メンテナンス・サービスは、
前記複数のスレーブのおのおのが機能しているかを判定し、
前記複数のスレーブのそれぞれ1つが機能していない場合、機能していないそれぞれのスレーブに対応するそれぞれのコマンドを、機能している複数のスレーブのうちの少なくとも1つに再割り当てするように動作し、
前記コールバック機能を実行することは、前記再割り当てすることに基づく発明39に記載のマスタ装置。
[発明42]
前記ヘルス・メンテナンス・サービスはさらに、前記複数のスレーブのおのおのに通信メッセージを送信し、前記複数のスレーブのおのおのから、予め定めた時間内にアクノレッジメントが受信されない場合、前記スレーブを、機能していないものと指定するように動作する発明41に記載のマスタ装置。
[発明43]
前記ヘルス・メンテナンス・サービスはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記複数のスレーブのおのおのに送信するように動作する発明42に記載のマスタ装置。
[発明44]
前記分配サービスはさらに、前記複数のスレーブのおのおのに既に割り当てられたコマンドの数に基づいて割り当てるように動作する発明39に記載のマスタ装置。
[発明45]
前記分配サービスはさらに、前記複数のスレーブのおのおのの利用度に基づいて割り当てるように動作する発明39に記載のマスタ装置。
[発明46]
前記データベース・サービスはさらに、前記複数のスレーブのおのおのから受信した通信メッセージを用いることによってスレーブ識別テーブルを構築するように動作し、前記スレーブ識別テーブルは、おのおののスレーブのネットワーク識別情報を含む発明39に記載のマスタ装置。
[発明47]
前記ヘルス・メンテナンス・サービスはさらに、既存のマスタのヘルスを判定するために、前記共通の予め定められたヘルス・メンテナンス・アルゴリズムを、マスタになる前に実行するように動作し、
前記ヘルス・メンテナンス・サービスは、前記マスタになるために、前記既存のマスタが機能していないとの判定に基づいて、前記共通の予め定められたロール・トランジション・アルゴリズムを実行するようにトリガされる発明39に記載のマスタ装置。
[発明48]
実際のパフォーマンス測定値とマスタ・パフォーマンス要件とを有するメモリをさらに備え、
前記ヘルス・メンテナンス・サービスはさらに、前記実際のパフォーマンス測定値が前記マスタ・パフォーマンス要件を満足する場合、前記マスタ装置が前記マスタとして動作できるように動作する発明47に記載のマスタ装置。

Claims (48)

  1. ロード・バランサのスレーブ・コンピュータ装置のためにコンピュータによって実現される方法であって、
    前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定することと、
    前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みることとを備え、
    前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含む方法。
  2. 前記マスタになることを試みることはさらに、マスタ・コードを有する前記マスタ・データベース・テーブルのポーションに前記自己のネットワーク識別情報を設定することを含み、前記マスタ・コードは、前記マスタ・データベース・テーブルの主要鍵のために予め定められた値を備える請求項1に記載の方法。
  3. 前記マスタになることを試みることはさらに、前記マスタ・ネットワーク識別情報へのアクセスを制御するために、前記マスタ・データベース・テーブルの一部分を用いてセマフォー(semaphore)を実現することを備える請求項1に記載の方法。
  4. 前記マスタになることを試みることはさらに、
    マスタ・コードに基づいて、前記マスタ・データベース・テーブルの一部分から、前記マスタ・ネットワーク識別情報を読み取ることと、
    前記マスタ・データベース・テーブルのうち、前記マスタ・コードと前記マスタ・ネットワーク識別情報とを備える部分の削除を試みることと
    を備える請求項1に記載の方法。
  5. マスタ・コードに対応するマスタ・データベース・テーブルの一部分から前記マスタ・ネットワーク識別情報を読み取ることと、
    前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致しているかを確認することと、
    前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致していない場合、スレーブとして動作することと、
    前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致している場合、前記マスタとして動作することと
    をさらに備える請求項1に記載の方法。
  6. 前記マスタが機能しているかを判定することはさらに、
    前記マスタ・ネットワーク識別情報に基づいて前記マスタへ通信を送ることと、
    前記マスタから予め定められた時間内にアクノレッジメントが受信されない場合、前記マスタになることを試みることと
    を備える請求項1に記載の方法。
  7. 前記マスタが機能しているかを判定することはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記マスタへ送信することを備える請求項1に記載の方法。
  8. 前記マスタから通信メッセージを受信することと、
    前記マスタへアクノレッジメントを送信することと
    をさらに備える請求項1に記載の方法。
  9. 実行するための少なくとも1つのコマンドを前記マスタから受信することと、
    前記コマンドの実行結果を前記マスタへ送信することと
    をさらに備える請求項1に記載の方法。
  10. 前記コマンドを実行することをさらに備え、
    前記コマンドを実行することは、無線ネットワークで動作する少なくとも1つの無線デバイスに対応するパフォーマンス統計量を処理することを備える請求項9に記載の方法。
  11. マスタ・パフォーマンス要件を取得することと、
    前記スレーブの実際のパフォーマンス測定値を取得することと、
    前記実際のパフォーマンス測定値が前記マスタ・パフォーマンス要件を満足する場合にのみ、前記スレーブが前記マスタになることを許可することと
    をさらに備える請求項1に記載の方法。
  12. ロード・バランサのスレーブとして動作するように構成された少なくとも1つのプロセッサであって、
    前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定する第1のモジュールと、
    前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みるように構成された第2のモジュールとを備え、
    前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含むプロセッサ。
  13. ロード・バランサのスレーブのためのコンピュータ・プログラムを記録したコンピュータ読取可能な記録媒体であって、
    前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定する手順と、
    前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みる手順コンピュータに実行させるためのプログラムを記録しており、
    前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含むコンピュータ読取可能な記録媒体
  14. ロード・バランサのスレーブ装置であって、
    前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、前記ロード・バランサのマスタが機能しているかを判定する手段と、
    前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みる手段とを備え、
    前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含むスレーブ装置。
  15. ロード・バランサのスレーブ装置であって、
    前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたヘルス・メンテナンス・アルゴリズムにしたがって、マスタが機能しているかを判定し、さらに、前記マスタが機能していない場合、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能な共通の予め定められたロール・トランジション・アルゴリズムにしたがって前記マスタになることを試みるように動作可能なヘルス・マネジメント・サービスを備え、
    前記予め定められたロール・トランジション・アルゴリズムは、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含み、
    前記スレーブ装置はさらに、前記ヘルス・マネジメント・サービスと通信しており、前記ヘルス・マネジメント・サービスに応答して前記マスタ・データベースとの読み書きが可能なデータベース・サービスを備えるスレーブ装置。
  16. 前記ヘルス・マネジメント・サービスに応答して、前記データベース・サービスはさらに、マスタ・コードを有する前記マスタ・データベース・テーブルの一部分に前記自己のネットワーク識別情報を設定するように動作し、前記マスタ・コードは、前記マスタ・データベース・テーブルの主要鍵のために予め定められた値を備える請求項15に記載のスレーブ装置。
  17. 前記ヘルス・マネジメント・サービスに応答して、前記データベース・サービスはさらに、前記マスタ・ネットワーク識別情報へのアクセスを制御するために、前記マスタ・データベース・テーブルの一部分を用いてセマフォー(semaphore)を実現するように動作する請求項15に記載のスレーブ装置。
  18. 前記ヘルス・マネジメント・サービスに応答して、前記データベース・サービスはさらに、マスタ・コードに基づいて、前記マスタ・データベース・テーブルの一部分から、前記マスタ・ネットワーク識別情報を読み取り、前記マスタ・データベース・テーブルのうち、前記マスタ・コードと前記マスタ・ネットワーク識別情報とを備える部分の削除を試みるように動作する請求項15に記載のスレーブ装置。
  19. 前記ヘルス・マネジメント・サービスまたは前記データベース・サービスのうちの少なくとも1つはさらに、
    マスタ・コードに対応するマスタ・データベース・テーブルの一部分から前記マスタ・ネットワーク識別情報を読み取り、
    前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致しているかを確認し、
    前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致していない場合、前記スレーブ装置をスレーブとして動作させ、
    前記マスタ・ネットワーク識別情報が、前記自己のネットワーク識別情報と一致している場合、前記スレーブ装置を前記マスタとして動作させるように動作する請求項15に記載のスレーブ装置。
  20. 前記ヘルス・マネジメント・サービスはさらに、前記マスタ・ネットワーク識別情報に基づいて前記マスタへ通信を送り、前記マスタから予め定められた時間内にアクノレッジメントが受信されない場合、前記マスタになることを試みるように動作する請求項15に記載のスレーブ装置。
  21. 前記ヘルス・マネジメント・サービスはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記マスタへ送信するように動作する請求項15に記載のスレーブ装置。
  22. 前記マスタから通信メッセージを受信することと、
    前記マスタへアクノレッジメントを送信することと
    をさらに備える請求項15に記載のスレーブ装置。
  23. 通信ネットワークを介して前記マスタからコマンドを受信し、前記コマンドを実行し、前記コマンドの実行結果を、前記通信ネットワークを介して前記マスタへ送信するように動作可能なユーザ・コマンド実行部をさらに備える請求項15に記載のスレーブ装置。
  24. 前記ユーザ・コマンド実行部はさらに、無線ネットワークで動作する少なくとも1つの無線デバイスに対応するパフォーマンス統計量を処理するように動作する請求項23に記載のスレーブ装置。
  25. マスタ・パフォーマンス要件と、前記スレーブの実際のパフォーマンス測定値とを有するメモリをさらに備え、
    前記ヘルス・マネジメント・サービスはさらに、前記実際のパフォーマンス測定値が前記マスタ・パフォーマンス要件を満足する場合にのみ、前記スレーブが前記マスタになることを許可するように動作する請求項15に記載のスレーブ装置。
  26. ロード・バランサのマスタ・コンピュータ装置のためにコンピュータによって実現される方法であって、
    マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行することを備え、
    前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサにおける複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含み、
    前記方法はさらに、前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行することを備え、
    前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
    前記方法はさらに、
    前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てることと、
    前記コマンドおよび対応する割当をデータベース・テーブル内に格納することとを備え、
    おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
    前記方法はさらに、
    前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認することと、
    前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行することと
    を備える方法。
  27. 前記コールバック機能を実行することは、前記コマンドのグループのおのおのの実行によって生成される少なくとも1つの結果にコマンド・スクリプトを実行することをさらに備える請求項26に記載の方法。
  28. 前記共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行することはさらに、
    前記複数のスレーブのおのおのが機能しているかを判定することと、
    前記複数のスレーブのそれぞれ1つが機能していない場合、機能していないそれぞれのスレーブに対応するそれぞれのコマンドを、機能している複数のスレーブのうちの少なくとも1つに再割り当てすることとを備え、
    前記コールバック機能を実行することは、前記再割り当てすることに基づく請求項26に記載の方法。
  29. 前記スレーブのおのおのが機能しているかを判定することは、
    前記複数のスレーブのおのおのに通信メッセージを送信することと、
    前記複数のスレーブのおのおのから、予め定めた時間内にアクノレッジメントが受信されない場合、前記スレーブを、機能していないものと指定することと
    をさらに備える請求項28に記載の方法。
  30. 前記送信することはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記複数のスレーブのおのおのに送信することを備える請求項29に記載の方法。
  31. 前記割り当てることはさらに、前記複数のスレーブのおのおのに既に割り当てられたコマンドの数に基づいて割り当てる請求項26に記載の方法。
  32. 前記割り当てることはさらに、前記複数のスレーブのおのおのの利用度に基づいて割り当てる請求項26に記載の方法。
  33. 前記複数のスレーブのおのおのから受信した通信メッセージを用いることによってスレーブ識別テーブルを構築することをさらに備え、
    前記スレーブ識別テーブルは、おのおののスレーブのネットワーク識別情報を含む請求項26に記載の方法。
  34. 既存のマスタのヘルスを判定するために、前記共通の予め定められたヘルス・メンテナンス・アルゴリズムを、マスタになる前に実行することをさらに備え、
    前記マスタになるために、前記共通の予め定められたロール・トランジション・アルゴリズムを実行することは、前記既存のマスタが機能していないとの判定に基づいてトリガされる請求項26に記載の方法。
  35. 前記マスタになることはさらに、
    実際のパフォーマンス測定値を判定することと、
    マスタ・パフォーマンス要件を判定することと、
    前記実際のパフォーマンス測定値が、前記マスタ・パフォーマンス要件を満足する場合、前記マスタとして動作することと
    を備える請求項34に記載の方法。
  36. ロード・バランサのマスタとして動作するように構成された少なくとも1つのプロセッサであって、
    マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行する第1のモジュールを備え、
    前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含み、
    前記プロセッサはさらに、前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行する第2のモジュールを備え、
    前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
    前記プロセッサはさらに、
    前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てる第3のモジュールと、
    前記コマンドおよび対応する割当をデータベース・テーブル内に格納する第4のモジュールとを備え、
    おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
    前記プロセッサはさらに、
    前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認する第5のモジュールと、
    前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行する第6のモジュールと
    を備えるプロセッサ。
  37. スタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行する手順と、ここで、前記共通の予め定められたロール・トランジション・アルゴリズムは、ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含み、
    記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行する手順とここで、前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
    記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てる手順と、
    記コマンドおよび対応する割当をデータベース・テーブル内に格納する手順と、ここで、おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
    記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認する手順と、
    前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行する手順と、
    をコンピュータに実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体
  38. ロード・バランサのマスタ装置であって、
    マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行する手段を備え、
    前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含み、
    前記マスタ装置はさらに、
    前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行する手段を備え、
    前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
    前記マスタ装置はさらに、
    前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てる手段と、
    前記コマンドおよび対応する割当をデータベース・テーブル内に格納する手段とを備え、
    おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
    前記マスタ装置はさらに、
    前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認する手段と、
    前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行する手段と
    を備えるマスタ装置。
  39. ロード・バランサのマスタ装置であって、
    マスタになるために、共通の予め定められたロール・トランジション・アルゴリズムを実行するように動作可能なヘルス・メンテナンス・サービスを備え、
    前記共通の予め定められたロール・トランジション・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作可能であり、少なくとも1つの他のスレーブが、対応するスレーブ・ネットワーク識別情報を、マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報として設定する前に、前記マスタ・データベース・テーブル内のマスタ・ネットワーク識別情報を、自己のネットワーク識別情報とするように設定することを含み、
    前記ヘルス・メンテナンス・サービスはさらに、前記複数のスレーブのおのおののヘルスを判定するために、共通の予め定められたヘルス・メンテナンス・アルゴリズムを実行するように動作可能であり、
    前記共通の予め定めたヘルス・メンテナンス・アルゴリズムは、前記ロード・バランサの複数のスレーブのおのおのによって独立して動作されることが可能であり、
    前記マスタ装置はさらに、
    前記予め定められたヘルス・メンテナンス・アルゴリズムの実行に基づいて、機能していると判定された複数のスレーブのうちの少なくとも1つに、コマンドのグループのおのおのを割り当てるように動作可能な分配サービスと、
    前記分配サービスと通信しており、前記コマンドおよび対応する割当をデータベース・テーブル内に格納するように動作可能なデータベース・サービスとを備え、
    おのおのの割当は、それぞれのコマンドに割り当てられた複数のスレーブのうちの1つのためのネットワーク識別情報を備え、
    前記分配サービスはさらに、前記コマンドのグループのおのおのについて、それぞれのコマンドが実行されているか否かを示すコマンド・ステータスを、前記データベース・テーブルにおいて確認するように動作し、
    前記マスタ装置はさらに、前記コマンド・ステータスに基づいて、全てのコマンドが実行されたと判定された場合、コールバック機能を実行するように動作可能なユーザ・コマンド実行部を備えるマスタ装置。
  40. 前記コールバック機能は、前記コマンドのグループのおのおのの実行によって生成される少なくとも1つの結果について実行可能なコマンド・スクリプトを備える請求項39に記載のマスタ装置。
  41. 前記分配サービスと通信するヘルス・メンテナンス・サービスをさらに備え、
    前記ヘルス・メンテナンス・サービスは、
    前記複数のスレーブのおのおのが機能しているかを判定し、
    前記複数のスレーブのそれぞれ1つが機能していない場合、機能していないそれぞれのスレーブに対応するそれぞれのコマンドを、機能している複数のスレーブのうちの少なくとも1つに再割り当てするように動作し、
    前記コールバック機能を実行することは、前記再割り当てすることに基づく請求項39に記載のマスタ装置。
  42. 前記ヘルス・メンテナンス・サービスはさらに、前記複数のスレーブのおのおのに通信メッセージを送信し、前記複数のスレーブのおのおのから、予め定めた時間内にアクノレッジメントが受信されない場合、前記スレーブを、機能していないものと指定するように動作する請求項41に記載のマスタ装置。
  43. 前記ヘルス・メンテナンス・サービスはさらに、トランスポート・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を用いてローカル・エリア・ネットワーク(LAN)を介して通信メッセージを前記複数のスレーブのおのおのに送信するように動作する請求項42に記載のマスタ装置。
  44. 前記分配サービスはさらに、前記複数のスレーブのおのおのに既に割り当てられたコマンドの数に基づいて割り当てるように動作する請求項39に記載のマスタ装置。
  45. 前記分配サービスはさらに、前記複数のスレーブのおのおのの利用度に基づいて割り当てるように動作する請求項39に記載のマスタ装置。
  46. 前記データベース・サービスはさらに、前記複数のスレーブのおのおのから受信した通信メッセージを用いることによってスレーブ識別テーブルを構築するように動作し、前記スレーブ識別テーブルは、おのおののスレーブのネットワーク識別情報を含む請求項39に記載のマスタ装置。
  47. 前記ヘルス・メンテナンス・サービスはさらに、既存のマスタのヘルスを判定するために、前記共通の予め定められたヘルス・メンテナンス・アルゴリズムを、マスタになる前に実行するように動作し、
    前記ヘルス・メンテナンス・サービスは、前記マスタになるために、前記既存のマスタが機能していないとの判定に基づいて、前記共通の予め定められたロール・トランジション・アルゴリズムを実行するようにトリガされる請求項39に記載のマスタ装置。
  48. 実際のパフォーマンス測定値とマスタ・パフォーマンス要件とを有するメモリをさらに備え、
    前記ヘルス・メンテナンス・サービスはさらに、前記実際のパフォーマンス測定値が前記マスタ・パフォーマンス要件を満足する場合、前記マスタ装置が前記マスタとして動作できるように動作する請求項47に記載のマスタ装置。
JP2009540351A 2006-12-05 2007-10-16 ゼロ単一障害点ロード・バランサ(azerosinglepointoffailureloadbalancer)の装置および方法 Expired - Fee Related JP5074516B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US86868906P 2006-12-05 2006-12-05
US60/868,689 2006-12-05
PCT/US2007/081555 WO2008127372A2 (en) 2006-12-05 2007-10-16 Apparatus and methods of a zero single point of failure load balancer

Publications (2)

Publication Number Publication Date
JP2010511964A JP2010511964A (ja) 2010-04-15
JP5074516B2 true JP5074516B2 (ja) 2012-11-14

Family

ID=39767139

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009540351A Expired - Fee Related JP5074516B2 (ja) 2006-12-05 2007-10-16 ゼロ単一障害点ロード・バランサ(azerosinglepointoffailureloadbalancer)の装置および方法

Country Status (8)

Country Link
US (1) US8732261B2 (ja)
EP (1) EP2100223B1 (ja)
JP (1) JP5074516B2 (ja)
KR (1) KR101073171B1 (ja)
CN (1) CN101542445B (ja)
AT (1) ATE496336T1 (ja)
DE (1) DE602007012148D1 (ja)
WO (1) WO2008127372A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007059646A1 (en) 2005-11-24 2007-05-31 Zte Corporation Protection restoration method for multicast service connection in the automatic switched optical network
WO2008127372A2 (en) 2006-12-05 2008-10-23 Qualcomm Incorporated Apparatus and methods of a zero single point of failure load balancer
US8572237B2 (en) * 2008-12-16 2013-10-29 Sap Ag Failover mechanism for distributed process execution
JP2010176472A (ja) * 2009-01-30 2010-08-12 Nec Corp サービス提供システム、サービス提供方法およびプログラム
US9032365B2 (en) * 2009-05-22 2015-05-12 Nec Corporation Script description separation reconstructing device, script description separation reconstructing method, and non-transitory computer readable medium storing script description separation reconstructing program
US8717948B2 (en) 2009-07-16 2014-05-06 Telefonaktiebolaget Lm Ericsson (Publ) Technique for providing an asymmetric multipoint call between a plurality of network nodes
CN101640688B (zh) 2009-08-20 2014-03-12 中兴通讯股份有限公司 基于cdn的节点主备用控制器切换方法及cdn网络
US8411447B2 (en) * 2009-12-18 2013-04-02 Teledyne Paradise Datacom, Llc Power amplifier chassis
US20120083902A1 (en) * 2010-09-30 2012-04-05 Wolf Daum Communication system and method for communicating between master and slave devices
FR2967274B1 (fr) * 2010-11-05 2012-12-07 Thales Sa Procede de determination d'un equipement "leader" dans un environnement asynchrone comprenant une pluralite d'equipements electroniques
JP5776937B2 (ja) * 2011-09-20 2015-09-09 株式会社ダイフク 設備制御システム
JP5660394B2 (ja) * 2011-09-20 2015-01-28 株式会社ダイフク 設備制御システム
US8874311B2 (en) * 2011-11-16 2014-10-28 The Boeing Company Control panel system for a vehicle
US8906320B1 (en) * 2012-04-16 2014-12-09 Illumina, Inc. Biosensors for biological or chemical analysis and systems and methods for same
US9331937B2 (en) 2012-04-18 2016-05-03 Nicira, Inc. Exchange of network state information between forwarding elements
US9276807B2 (en) * 2013-10-23 2016-03-01 Verizon Patent And Licensing Inc. Redundant communication framework
CN104580338B (zh) * 2013-10-29 2018-09-07 华为技术有限公司 一种业务处理方法、系统及设备
EP3026553A1 (en) * 2014-11-26 2016-06-01 Hewlett-Packard Development Company, L.P. Web browser emulator
US9967134B2 (en) 2015-04-06 2018-05-08 Nicira, Inc. Reduction of network churn based on differences in input state
KR102339779B1 (ko) * 2015-04-06 2021-12-15 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법
US10204122B2 (en) 2015-09-30 2019-02-12 Nicira, Inc. Implementing an interface between tuple and message-driven control entities
US11019167B2 (en) 2016-04-29 2021-05-25 Nicira, Inc. Management of update queues for network controller
US10733073B1 (en) 2016-09-30 2020-08-04 Neocortix, Inc. Distributed website load testing system running on mobile devices
US10848091B2 (en) * 2016-12-22 2020-11-24 Nidec Corporation Motor unit and multi-motor system
US10541876B2 (en) 2017-02-14 2020-01-21 Nicira, Inc. Inter-connecting logical control planes for state data exchange
JP6812900B2 (ja) * 2017-05-17 2021-01-13 富士通株式会社 ストレージ装置、ストレージ制御装置、およびストレージ制御プログラム
US11153346B2 (en) * 2017-10-31 2021-10-19 Level 3 Communications, Llc Secure network device management in a telecommunications network
CN109936587B (zh) * 2017-12-15 2022-02-22 北京京东乾石科技有限公司 控制方法、控制装置、电子设备及存储介质
DE102018125894B4 (de) * 2018-10-18 2021-01-28 Bender Gmbh & Co. Kg Verfahren zum Auflösen eines Adresskonflikts bei dem Modbus RTU-Standardprotokoll
CN112752048B (zh) * 2019-10-31 2022-04-12 华为技术有限公司 协同工作的方法、设备、存储介质及协同系统
US11385973B1 (en) * 2020-12-17 2022-07-12 Citrix Systems, Inc. High-availability for power-managed virtual desktop access

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03174647A (ja) * 1989-12-04 1991-07-29 Toshiba Corp マルチプロセッサ制御方式
US6886035B2 (en) * 1996-08-02 2005-04-26 Hewlett-Packard Development Company, L.P. Dynamic load balancing of a network of client and server computer
US6185601B1 (en) * 1996-08-02 2001-02-06 Hewlett-Packard Company Dynamic load balancing of a network of client and server computers
US6067545A (en) 1997-08-01 2000-05-23 Hewlett-Packard Company Resource rebalancing in networked computer systems
US6324571B1 (en) * 1998-09-21 2001-11-27 Microsoft Corporation Floating single master operation
US6006259A (en) * 1998-11-20 1999-12-21 Network Alchemy, Inc. Method and apparatus for an internet protocol (IP) network clustering system
US6993587B1 (en) * 2000-04-07 2006-01-31 Network Appliance Inc. Method and apparatus for election of group leaders in a distributed network
AU2001276932B2 (en) * 2000-07-27 2007-06-21 Oracle International Corporation System and method for concentration and load-balancing of requests
ATE296514T1 (de) * 2000-10-26 2005-06-15 Prismedia Networks Inc Verfahren und vorrichtung zur parallelen nachrichtenübermittlung in echtzeit von dateisegmentierten
US7409420B2 (en) * 2001-07-16 2008-08-05 Bea Systems, Inc. Method and apparatus for session replication and failover
JP2004030204A (ja) * 2002-06-25 2004-01-29 Jmnet Inc 負荷分散装置及びそれに接続するノードコンピュータ
US7284054B2 (en) * 2003-04-11 2007-10-16 Sun Microsystems, Inc. Systems, methods, and articles of manufacture for aligning service containers
US7636917B2 (en) * 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7225356B2 (en) * 2003-11-06 2007-05-29 Siemens Medical Solutions Health Services Corporation System for managing operational failure occurrences in processing devices
JP2006072880A (ja) * 2004-09-06 2006-03-16 Seiko Epson Corp 情報処理方法、情報処理プログラム、及び情報処理システム
US7461130B1 (en) * 2004-11-24 2008-12-02 Sun Microsystems, Inc. Method and apparatus for self-organizing node groups on a network
US20060168084A1 (en) * 2004-11-29 2006-07-27 Leonid Kogan Method and apparatus for rendering load balancing and failover
US20060153068A1 (en) * 2004-12-17 2006-07-13 Ubiquity Software Corporation Systems and methods providing high availability for distributed systems
JP2006323526A (ja) * 2005-05-17 2006-11-30 Fujitsu Ltd クラスタ管理プログラム、該プログラムを記録した記録媒体、クラスタ管理方法、ノード、およびクラスタ
WO2008127372A2 (en) 2006-12-05 2008-10-23 Qualcomm Incorporated Apparatus and methods of a zero single point of failure load balancer

Also Published As

Publication number Publication date
DE602007012148D1 (de) 2011-03-03
ATE496336T1 (de) 2011-02-15
KR20090096508A (ko) 2009-09-10
CN101542445A (zh) 2009-09-23
CN101542445B (zh) 2012-10-10
US20080133687A1 (en) 2008-06-05
WO2008127372A3 (en) 2009-05-22
EP2100223B1 (en) 2011-01-19
US8732261B2 (en) 2014-05-20
EP2100223A2 (en) 2009-09-16
JP2010511964A (ja) 2010-04-15
WO2008127372A2 (en) 2008-10-23
KR101073171B1 (ko) 2011-10-12

Similar Documents

Publication Publication Date Title
JP5074516B2 (ja) ゼロ単一障害点ロード・バランサ(azerosinglepointoffailureloadbalancer)の装置および方法
US9929916B1 (en) Achieving stateful application software service behavior in distributed stateless systems
US8352434B2 (en) Performing scheduled backups of a backup node associated with a plurality of agent nodes
US8055735B2 (en) Method and system for forming a cluster of networked nodes
JP2007503628A (ja) クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知
WO2021203979A1 (zh) 运维处理方法、装置及计算机设备
US7165097B1 (en) System for distributed error reporting and user interaction
US10826812B2 (en) Multiple quorum witness
US9740537B2 (en) Contention and selection of controlling work coordinator in a distributed computing environment
CN107666493B (zh) 一种数据库配置方法及其设备
WO2016029790A1 (zh) 数据传输方法及装置
CN107992491A (zh) 一种分布式文件系统、数据访问和数据存储的方法及装置
CN103164262B (zh) 一种任务管理方法及装置
WO2021169264A1 (zh) 数据库接入层中间件的自动调度方法和装置
CN113835844A (zh) 一种容器集群的管理方法、装置及云计算平台
US20130290527A1 (en) System and method for stateless, fault tolerance and load balanced data collection using overlay namespaces
CN114356521A (zh) 任务调度方法、装置、电子设备及存储介质
US11657020B2 (en) Method and apparatus for versioning cloud network configuration
US20130318161A1 (en) Method of controlling information processing apparatus and information processing apparatus
KR101059058B1 (ko) 위치 기반 서비스 접근 제어 장치, 방법 및 시스템
CN106656592B (zh) 基于角色配置的服务管理方法和装置
US20080027944A1 (en) Globally unique instance identification
US10382351B2 (en) Service provisioning and application distribution based on terminal location
WO2024051738A1 (zh) 数据写入方法、装置、电子设备及存储介质
KR20160103814A (ko) 클라우드 스트리밍 서비스 시스템의 에러 복구 장치 및 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120625

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: 20120724

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120823

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150831

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees