(57)【要約】【課題】クラスタを構成するサーバについて、新たなハードウェアコストをかけずに両系ＡＣＴＩＶＥ状態から回復させる。【解決手段】ルータ３０は、arpリクエストに対し、サーバ１０Ａからのarp応答の受信後、所定時間以内に、同じＩＰアドレスが割り当てられたサーバ１０Ｂからarp応答を受信した場合、サーバ１０Ａ，１０Ｂの系間通信に用いられるＩＦそれぞれに対しpingを送信する。そして、pingOKであったサーバ１０（例えば、サーバ１０Ａ）から送信されたarp応答をarpテーブルに設定し、pingNGであったサーバ１０（例えば、サーバ１０Ｂ）から送信されたarp応答はarpテーブルに設定しない。【選択図】図１
2018136794.tif 000002
【特許請求の範囲】
【請求項１】
サーバ間の系間通信により、いずれのサーバがアクティブ状態になるかを決定するクラスタシステムにおいて、前記サーバの通信を中継するルータであって、
前記サーバそれぞれに対し、arpリクエストを送信し、前記サーバから前記arpリクエストに対するarp応答を受信するarp処理部と、
前記arp処理部において、前記クラスタシステムを構成するいずれかのサーバからの第１のarp応答の受信後、所定時間以内に、前記第１のarp応答と同じＩＰアドレスの他のサーバから第２のarp応答を受信した場合、前記第１のarp応答の送信元のサーバと前記第２のarp応答の送信元のサーバとの間の系間通信に用いられるインタフェースそれぞれに対しpingを送信するping処理部と、
前記ping処理部により送信したpingに対する応答がpingOKである場合、前記pingOKの送信元のインタフェースを持つサーバから送信されたarp応答をarpテーブルに設定するarpテーブル設定部とを備えることを特徴とするルータ。
【請求項２】
前記ping処理部により送信したpingの応答がpingNGである場合、前記pingNGのインタフェースを持つサーバに接続されるレイヤ２スイッチに対し、当該サーバに接続するポートのシャットダウンを指示するレイヤ２スイッチ制御部をさらに備えることを特徴とする請求項１に記載のルータ。
【請求項３】
前記arpテーブル設定部は、
前記arp処理部において、前記クラスタシステムを構成するいずれかのサーバからの第１のarp応答の受信後、所定時間以内に、前記第１のarp応答と同じＩＰアドレスの他のサーバから第２のarp応答を受信しなかった場合、前記第１のarp応答をarpテーブルに設定することを特徴とする請求項１に記載のルータ。
【請求項４】
サーバ間の系間通信により、いずれのサーバがアクティブ状態になるかを決定するクラスタシステムにおいて、前記サーバの通信を中継するルータが、
前記サーバそれぞれに対し、arpリクエストを送信し、前記サーバから前記arpリクエストに対するarp応答を受信するステップと、
前記クラスタシステムを構成するいずれかのサーバからの第１のarp応答の受信後、所定時間以内に、前記第１のarp応答と同じＩＰアドレスの他のサーバから第２のarp応答を受信した場合、前記第１のarp応答の送信元のサーバと前記第２のarp応答の送信元のサーバとの間の系間通信に用いられるインタフェースそれぞれに対しpingを送信するステップと、
前記pingに対する応答がpingOKである場合、前記pingOKの送信元のインタフェースを持つサーバから送信されたarp応答をarpテーブルに設定するステップとを含んだことを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルータおよび通信制御方法に関する。
【背景技術】
【０００２】
クラスタ構成における、スタンバイ系のサーバとアクティブ系のサーバとの間を接続する通信機器のハード故障等により両系のサーバがＡＣＴＩＶＥ状態（両系ＡＣＴＩＶＥ状態）に陥ることがある。このように両系のサーバがＡＣＴＩＶＥ状態になると、サービス中断や、共有ディスクへの両系のサーバのマウントによるファイルシステム破壊に繋がる場合がある。そこで、このように両系のサーバがアクティブ状態になった場合、ルータは、各サーバにarp（address  resolution  protocol）要求を送信し、このarp要求に対し、arp応答を返してきたサーバのarp応答をarpテーブルに設定する。これにより、ルータは、両系のサーバのうちarp応答を返してきた系のサーバを通信先として選択するので、両系ＡＣＴＩＶＥ状態を回復させることができる。また、クラスタの両系のサーバそれぞれに相手方のサーバを監視するためのソフトをインストールした上で、両系のサーバ間をハード制御用のポートで接続し、両系ＡＣＴＩＶＥ状態になったとき、相手方のサーバを強制的にシャットダウンさせる技術もある（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】HAクラスタをフェイルオーバ失敗から救おう！、［平成29年2月3日検索］、インターネット＜URL：https://osdn.net/projects/linux-ha/docs/Pacemaker_OSC2013Kyoto_20130803/ja/1/Pacemaker_OSC2013Kyoto_20130803.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記のarp応答を用いる技術の場合、故障したサーバからのarp応答がルータに先に到達してしまうと、ルータは、正常なサーバからのarp応答を破棄し、故障したサーバのarp応答をarpテーブルに設定する。その結果、ルータは、通信先として故障したサーバを選択してしまう。また、両系アクティブ状態になった場合に、相手方のサーバを強制的にシャットダウンさせる技術では、両系のサーバ間をハード制御用のポートで接続する必要がある。つまり、新たなハードウェアが必要になる。そこで、本発明は、前記した問題を解決し、新たなハードウェアコストをかけずに早期に両系ＡＣＴＩＶＥ状態から回復させることを課題とする。
【課題を解決するための手段】
【０００５】
前記した課題を解決するため、本発明は、サーバ間の系間通信により、いずれのサーバがアクティブ状態になるかを決定するクラスタシステムにおいて、前記サーバの通信を中継するルータであって、前記サーバそれぞれに対し、arpリクエストを送信し、前記サーバから前記arpリクエストに対するarp応答を受信するarp処理部と、前記クラスタシステムを構成するいずれかのサーバからの第１のarp応答の受信後、所定時間以内に、前記第１のarp応答と同じＩＰアドレスの他のサーバから第２のarp応答を受信した場合、前記第１のarp応答の送信元のサーバと前記第２のarp応答の送信元のサーバとの間の系間通信に用いられるインタフェースそれぞれに対しpingを送信するping処理部と、前記ping処理部により送信したpingに対する応答がpingOKである場合、前記pingOKの送信元のインタフェースを持つサーバから送信されたarp応答をarpテーブルに設定するarpテーブル設定部とを備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、クラスタを構成するサーバについて、新たなハードウェアコストをかけずに早期に両系ＡＣＴＩＶＥ状態から回復させることができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、システムの構成例と動作概要を説明する図である。
【図２】図２は、図１のルータの構成例を示す図である。
【図３】図３は、図１のルータの処理手順を示すフローチャートである。
【図４】図４は、通信制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明を実施するための形態（実施形態）について説明する。なお、本発明は、以下に説明する実施形態に限定されない。まず、図１を用いてシステムの構成例と動作概要を説明する。
【０００９】
システムは、図１に示すように、例えば、サーバ１０（１０Ａ，１０Ｂ）と、Ｌ２ＳＷ（レイヤ２スイッチ）２０と、ルータ３０とを備える。
【００１０】
ここで、サーバ１０（１０Ａ，１０Ｂ）は、クラスタ（クラスタシステム）を構成するサーバである。このサーバ１０Ａとサーバ１０Ｂとは互いにＬ２ＳＷ２０を用いた系間ルートにより系間通信を行い、互いの状態（例えば、相手方のサーバ１０に異常が発生しているか否か）を確認する。そして、サーバ１０が他方のサーバ１０の異常を検知すると、自身のサーバ１０がＡＣＴＩＶＥ系として動作する。
【００１１】
ここでは、サーバ１０Ａ，１０Ｂ間の系間ルートの故障（例えば、系間ルートに用いられるインタフェース（ＩＦ）のうち、サーバ１０Ｂ側のＩＦの故障）が発生したため、サーバ１０Ａ，１０ＢがそれぞれＡＣＴＩＶＥ系になり、同じＩＰアドレス（ここでは、「192.0.2.0」）が保持される場合を例に説明する。なお、サーバ１０ＡのＭＡＣ（Media  Access  Control）アドレスは「aa:aa:aa」であり、サーバ１０ＢのＭＡＣアドレスは「bb:bb:bb」であるものとする。
【００１２】
Ｌ２ＳＷ２０は、サーバ１０Ａ，１０Ｂを収容するスイッチである。このＬ２ＳＷ２０は、例えば、サーバ１０Ａ，１０ＢのＭＡＣアドレスごとに、当該ＭＡＣアドレスを持つサーバ１０がどのポートにより収容されるかを示したＭＡＣテーブルを保持する。
【００１３】
ルータ３０は、サーバ１０（１０Ａ，１０Ｂ）の通信を中継する。このルータ３０は、例えば、所定時間ごとに、サーバ１０に対し、arpリクエストを送信し、そのarpリクエストに対するarp応答を受信すると、arp応答をarpテーブルに設定する。そして、ルータ３０は、当該arpテーブルに従い、通信先となるサーバ１０を決定する。
【００１４】
ここで、従来のルータは、arpリクエストを送信後、同じＩＰアドレスのサーバ１０から複数のarp応答を受信した場合、先着のarp応答を採用し、arpテーブルに設定する。一方、本実施形態のルータ３０は、同じＩＰアドレスのサーバ１０（例えば、サーバ１０Ａ，１０Ｂ）それぞれからarp応答を受信した場合、先着のarp応答のみならず、後から到着したarp応答についてもarpテーブルに設定可能とする（（１））。
【００１５】
そして、ルータ３０は、サーバ１０Ａ，１０Ｂからのarp応答の受信を契機に、サーバ１０Ａ，１０Ｂの系間通信用のＩＦそれぞれに対してpingを送信し、pingNGであるＩＦを持つサーバ１０からのarp応答はarpテーブルに設定しない。つまり、ルータ３０は、後から到着したarp応答であってもpingOKであるサーバ１０からのarp応答を採用し、arpテーブルに設定する（（２））。
【００１６】
例えば、ルータ３０は、サーバ１０Ａ，１０Ｂそれぞれからのarp応答を受信した場合において、サーバ１０ＡのＩＦはpingOKであり、サーバ１０ＢのＩＦのpingNGであったときを考える。この場合、ルータ３０は、サーバ１０ＢのＩＦのpingNGにより、サーバ１０Ｂからのarp応答が先着であってもarpテーブルに設定せず、pingOKであったサーバ１０Ａのarp応答をarpテーブルに設定する。つまり、ルータ３０はarpテーブルにおけるＩＰアドレス「192.0.2.0」に対するＭＡＣアドレスとして、サーバ１０ＢのＭＡＣアドレス「bb:bb:bb」を設定せず、サーバ１０ＡのＭＡＣアドレス「aa:aa:aa」を設定する。
【００１７】
このようにルータ３０は、サーバ１０Ａ，１０Ｂからのarp応答受信後、サーバ１０Ａ，１０Ｂの系間通信用のＩＦへのpingの応答結果によりarpテーブルに採用するarp応答を決定する。その結果、例えば、ルータ３０は、サーバ１０Ａ，１０Ｂが両系ＡＣＴＩＶＥ状態になったため同じＩＰアドレスを保持する場合であっても、当該ＩＰアドレスへの通信を行う際、通信先の装置として故障の発生していないサーバ１０Ａを選択することができる。
【００１８】
なお、ルータ３０は、上記のようにして、arpテーブルを設定した後、ルータ３０の配下のＬ２ＳＷ２０に対して、故障が発生したサーバ１０Ｂを収容するポートのシャットダウンを指示する。例えば、ルータ３０は、配下のＬ２ＳＷ２０に対して、ＭＡＣアドレス「bb:bb:bb」の装置（つまり、サーバ１０Ｂ）を収容するポート（図１の「０／２」のポート）のシャットダウンを指示する（（３））。このような指示を受けたＬ２ＳＷ２０は、ＭＡＣテーブルに設定された当該ＭＡＣアドレス「bb:bb:bb」の装置を収容するポート（「０／２」のポート）をシャットダウンする。
【００１９】
このように、ルータ３０は、故障したサーバ１０向けのＬ２ＳＷ２０のポートを速やかにシャットダウンさせるので、クラスタのサーバ１０（１０Ａ，１０Ｂ）の両系ＡＣＴＩＶＥ状態を早期に回復させることができる。
【００２０】
次に、ルータ３０を詳細に説明する。図２に示すように、ルータ３０は、通信部３１と、記憶部３２と、制御部３３とを備える。通信部３１は、ルータ３０の通信インタフェースを司る。
【００２１】
記憶部３２は、制御部３３が通信制御（経路制御）を行う際に参照する各種情報を記憶する。この記憶部３２は、例えば、arpテーブルと、系間ルート情報とを記憶する。
【００２２】
arpテーブルは、ルータ３０の通信制御の対象となる装置（例えば、サーバ１０）のＩＰアドレスごとに、当該装置のＭＡＣアドレスを示した情報である。系間ルート情報は、クラスタを構成するサーバ１０間で系間通信に用いられるＩＦの情報（ＩＰアドレス）を示した情報である。例えば、系間ルート情報は、系間通信を行うサーバ１０の組み合わせごとに、当該サーバ１０それぞれが系間通信に用いるＩＦのＩＰアドレスを示した情報である。
【００２３】
制御部３３は、ルータ３０全体の制御を司る。この制御部３３は、arp処理部３３１と、判定部３３２と、ping処理部３３３と、arpテーブル設定部３３４と、Ｌ２ＳＷ制御部３３５と、通信処理部３３６とを備える。
【００２４】
arp処理部３３１は、クラスタを構成するサーバ１０それぞれに対し、arpリクエストを送信し、サーバ１０から当該arpリクエストに対するarp応答を受信する。
【００２５】
判定部３３２は、arp処理部３３１において、クラスタを構成するいずれかのサーバ１０からのarp応答（第１のarp応答）の受信後、所定時間以内に、第１のarp応答と同じＩＰアドレスの他のサーバ１０からarp応答（第２のarp応答）を受信したか否かを判定する。
【００２６】
ping処理部３３３は、クラスタを構成するサーバ１０へのpingを送信し、そのping応答を確認する。例えば、判定部３３２において、クラスタを構成するいずれかのサーバ１０からの第１のarp応答の受信後、所定時間以内に、第２のarp応答を受信したと判定された場合、ping処理部３３３は、第１のarp応答の送信元のサーバ１０と第２のarp応答の送信元のサーバ１０との間の系間通信に用いられるＩＦそれぞれに対しpingを送信し、そのping応答を確認する。なお、第１のarp応答の送信元のサーバ１０と第２のarp応答の送信元のサーバ１０との間の系間通信に用いられるＩＦのＩＰアドレスは、系間ルート情報を参照して特定する。
【００２７】
arpテーブル設定部３３４は、ping処理部３３３の受信したping応答の結果を用いて、arpテーブルを設定する。例えば、判定部３３２により、クラスタを構成するいずれかのサーバ１０からの第１のarp応答の受信後、所定時間以内に受信した第２のarp応答を受信したと判定された場合、arpテーブル設定部３３４は、第１のarp応答と第２のarp応答とを保持しておく。その後、ping処理部３３３が送信したpingに対するping応答がpingOKであった場合、arpテーブル設定部３３４は、当該pingOKであったＩＦを持つサーバ１０から送信されたarp応答をarpテーブルに設定する。例えば、arpテーブル設定部３３４は、サーバ１０ＡのＩＦについてpingOKであった場合、サーバ１０Ａから送信されたarp応答に示されるＭＡＣアドレスをarpテーブルに設定する。一方、サーバ１０ＢのＩＦについてpingNGであった場合、arpテーブル設定部３３４は、サーバ１０Ｂから送信されたarp応答に示されるＭＡＣアドレスはarpテーブルに設定しない。
【００２８】
なお、判定部３３２により、クラスタを構成するいずれかのサーバ１０からの第１のarp応答の受信後、所定時間以内に第２のarp応答を受信しなかったと判定された場合、arpテーブル設定部３３４は、第１のarp応答をarpテーブルに設定する。つまり、判定部３３２は、先着のarp応答をarpテーブルに設定する。
【００２９】
Ｌ２ＳＷ制御部３３５は、自身のルータ３０の配下のＬ２ＳＷ２０に対する各種制御を行う。例えば、Ｌ２ＳＷ制御部３３５は、ping処理部３３３により送信したpingの応答がpingNGであった場合、当該pingNGのＩＦを持つサーバ１０に接続されるＬ２ＳＷ２０に対し、当該サーバ１０に接続するポートのシャットダウンを指示する。例えば、サーバ１０ＢのＩＦに対するpingの送信後、所定時間経過しても応答がなかった場合、pingNGと判断し、Ｌ２ＳＷ制御部３３５は、配下のＬ２ＳＷ２０に対し、サーバ１０Ｂに接続するポートをシャットダウンさせるスクリプトを発行する。
【００３０】
通信処理部３３６は、arpテーブルを参照して、通信先となるサーバ１０を選択する。例えば、通信処理部３３６は、arpテーブル設定部３３４により設定されたarpテーブルを参照して、ＩＰアドレス「192.0.2.0」への通信を行う際、通信先の装置（サーバ１０）として、サーバ１０Ａを選択する。
【００３１】
このようなシステムによれば、クラスタを構成するサーバ１０について、新たなハードウェアコストをかけずに早期に両系ＡＣＴＩＶＥ状態から回復させることができる。
【００３２】
（処理手順）
次に、図３を用いて、ルータ３０の処理手順を説明する。まず、ルータ３０のarp処理部３３１は、クラスタを構成するサーバ１０それぞれに対し、arpリクエストを送信する（Ｓ１）。その後、arp処理部３３１は、当該arpリクエストに対するarp応答を受信する。ここで、判定部３３２は、arp処理部３３１による当該arp応答の受信後、所定時間以内に、当該arp応答と同じＩＰアドレスのサーバ１０からのarp応答を受信したか否かを判定する（Ｓ２）。
【００３３】
Ｓ２で、判定部３３２が、arp処理部３３１によりサーバ１０からのarp応答（先着のarp応答）の受信後、所定時間以内に、当該arp応答と同じＩＰアドレスのサーバ１０からのarp応答（後着のarp応答）を受信しなかったと判定した場合（Ｓ２でＮｏ）、arpテーブル設定部３３４は、先着のarp応答を設定する（Ｓ６）。そして、処理を終了する。
【００３４】
一方、Ｓ２で判定部３３２が、arp処理部３３１によりサーバ１０からのarp応答（先着のarp応答）の受信後、所定時間以内に、当該arp応答と同じＩＰアドレスのサーバ１０からのarp応答（後着のarp応答）を受信したと判定した場合（Ｓ２でＹｅｓ）、ping処理部３３３は、それぞれのarp応答の送信元のサーバ１０の系間通信用のＩＦに対しpingを送信する（Ｓ３）。そして、arpテーブル設定部３３４は、当該pingに対する応答がpingOKのサーバ１０からのarp応答をarpテーブルに設定する（Ｓ４）。なお、arpテーブル設定部３３４は、当該pingに対する応答がpingNGのサーバ１０からのarp応答についてはarpテーブルに設定しない。
【００３５】
Ｓ４の後、Ｌ２ＳＷ制御部３３５は、pingNGのサーバ１０の配下のＬ２ＳＷ２０に対し、当該サーバ１０を収容するポートのシャットダウンを指示する（Ｓ５）。
【００３６】
このようにすることで、ルータ３０は、クラスタを構成するサーバ１０を早期に両系ＡＣＴＩＶＥ状態から回復させることができる。また、ルータ３０が上記の両系ＡＣＴＩＶＥ状態からの回復を行うので、両系ＡＣＴＩＶＥ状態から回復させるために、新たなハードウェアを設ける必要がない。
【００３７】
（プログラム）
また、各実施形態で述べたルータ３０の機能を実現するプログラムを所望の情報処理装置（コンピュータ）にインストールすることによって実装できる。例えば、パッケージソフトウェアやオンラインソフトウェアとして提供される上記のプログラムを情報処理装置に実行させることにより、情報処理装置をルータ３０として機能させることができる。ここで言う情報処理装置には、経路制御機能を備えるデスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistants）等がその範疇に含まれる。また、ルータ３０を、クラウドサーバに実装してもよい。
【００３８】
以下に、上記のプログラムを実行するコンピュータの一例を説明する。図４は、上記のプログラムを実行するコンピュータを示す図である。図４に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００３９】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００４０】
ここで、図４に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。前記した実施形態で説明した各種データや情報は、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００４１】
そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００４２】
なお、上記のプログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、上記のプログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００４３】
１０（１０Ａ，１０Ｂ）    サーバ
３０    ルータ
３１    通信部
３２    記憶部
３３    制御部
３３１  arp処理部
３３２  判定部
３３３  ping処理部
３３５  Ｌ２ＳＷ制御部
３３４  arpテーブル設定部
３３６  通信処理部
【図１】
2018136794.tif 000003
【図２】
2018136794.tif 000004
【図３】
2018136794.tif 000005
【図４】
2018136794.tif 000006