JP6822706B1 - クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム - Google Patents

クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム Download PDF

Info

Publication number
JP6822706B1
JP6822706B1 JP2020002839A JP2020002839A JP6822706B1 JP 6822706 B1 JP6822706 B1 JP 6822706B1 JP 2020002839 A JP2020002839 A JP 2020002839A JP 2020002839 A JP2020002839 A JP 2020002839A JP 6822706 B1 JP6822706 B1 JP 6822706B1
Authority
JP
Japan
Prior art keywords
kernel
server
server device
notification
memory
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.)
Active
Application number
JP2020002839A
Other languages
English (en)
Other versions
JP2021111137A (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.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2020002839A priority Critical patent/JP6822706B1/ja
Application granted granted Critical
Publication of JP6822706B1 publication Critical patent/JP6822706B1/ja
Publication of JP2021111137A publication Critical patent/JP2021111137A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】現在運用中のサーバ装置においてシステムクラッシュが発生した場合でも高速に他のサーバ装置への引継ぎを行うことが可能なクラスタシステムを提供する。【解決手段】クラスタシステム1は複数のサーバ装置10,20及び共有記憶装置30を備える。サーバ装置10は、サーバ装置10における通常稼働時の制御を行う第1カーネル11と、第1カーネル11の一部又は全部に障害が発生した場合にメモリダンプ処理を行う第2カーネル12と、を有する。第1カーネル11は、起動時に、所定の情報を、上記メモリダンプ処理において出力先とするメモリ13に書き込む処理を実行する。第2カーネル12は、上記障害が発生した場合に、メモリ13内の所定の情報に基づき、共有記憶装置30からの入出力の切り離し処理と他のサーバ装置20に障害を通知する通知処理とを実行する。所定の情報は、切り離し処理の対象及び通知処理での通知先を指定する情報を含む。【選択図】図1

Description

本開示は、クラスタシステム、サーバ装置、引継ぎ方法、及びプログラムに関する。
特許文献1には、同じく障害発生時の停止抑制のために、フェイルオーバ機能を有する現用系サーバ及び待機系サーバと、当該現用系サーバ及び待機系サーバにて共有可能なデータを記憶する共有ディスクと、を備えたクラスタシステムが記載されている。ここで、フェイルオーバ機能は、相互に同一のアプリケーションプログラム(アプリケーション)を実行し当該アプリケーションによる他方の処理を引き継ぐことが可能な機能である。
また、特許文献1に記載のシステムでは、現用系サーバの制御装置で障害を検出した場合やOS(Operating System)上のアプリケーションが障害を検出した場合、I/Oフェンシングを実施した後、障害を待機系サーバに通知している。上記制御装置は、BMC(Baseboard Management Controller)である。そして、この待機系サーバでは、現用系サーバの制御装置からI/Oフェンシングが完了した旨の通知を受けて、待機系サーバ上におけるアプリケーションにて現用系サーバ上におけるアプリケーションによる処理が引き継がれる。
特許第6056554号公報
しかしながら、特許文献1に記載のシステムでは、BMCがハードウェア障害を認識した場合とOS上のアプリケーション(ソフトウェア)がソフトウェア障害を認識した場合の2点について、高速なフェイルオーバが実現されているに過ぎない。
つまり、特許文献1に記載のシステムでは、システムクラッシュが発生した場合、OS上のソフトウェアが停止してしまうために障害を認識できず、待機系のハートビートのタイムアウトによって障害を認識する必要がある。しかしながら、ハートビートのタイムアウト時間は、OSの負荷や通信経路の負荷でタイムアウトしないように長めに設定される。そのため、ハートビートのタイムアウトを契機としてフェイルオーバを実行する場合、高速に行うことができない。このように、特許文献1に記載のシステムでは、システムクラッシュが発生した場合には、高速なフェイルオーバを行うことができない。
本開示の目的は、現在運用中のサーバ装置においてシステムクラッシュが発生した場合であっても高速に他のサーバ装置への引継ぎを行うことが可能なクラスタシステム、サーバ装置、引継ぎ方法、及びプログラムを提供することにある。
本開示の第1の態様に係るクラスタシステムは、共有記憶装置と、前記共有記憶装置にアクセス可能で前記共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなす複数のサーバ装置と、を備え、前記サーバ装置は、前記サーバ装置における通常稼働時の制御を行う第1カーネルと、前記第1カーネルの一部又は全部に障害が発生した場合に、メモリダンプ処理を行う第2カーネルと、を有し、前記第1カーネルは、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、前記第2カーネルは、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記複数のサーバ装置における他のサーバ装置に障害を通知する通知処理とを実行し、前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、ものである。
本開示の第2の態様に係るサーバ装置は、他のサーバ装置と前記他のサーバ装置からアクセス可能な共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなすサーバ装置であって、前記サーバ装置における通常稼働時の制御を行う第1カーネルと、前記第1カーネルの一部又は全部に障害が発生した場合にメモリダンプ処理を行う第2カーネルと、を有し、前記第1カーネルは、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、前記第2カーネルは、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記他のサーバ装置に障害を通知する通知処理とを実行し、前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、ものである。
本開示の第3の態様に係る引継ぎ方法は、他のサーバ装置と共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなすサーバ装置における引継ぎ方法であって、前記サーバ装置は、前記サーバ装置における通常稼働時の制御を行う第1カーネルと、前記第1カーネルの一部又は全部に障害が発生した場合にメモリダンプ処理を行う第2カーネルと、を有し、前記第1カーネルが、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、前記第2カーネルが、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記他のサーバ装置に障害を通知する通知処理とを実行し、前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、ものである。
本開示の第4の態様に係るプログラムは、他のサーバ装置と共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなすサーバ装置のコンピュータに実行させるためのプログラムであって、前記サーバ装置における通常稼働時の制御を行う第1カーネルと、前記第1カーネルの一部又は全部に障害が発生した場合にメモリダンプ処理を行う第2カーネルと、を有し、前記第1カーネルは、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、前記第2カーネルは、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記他のサーバ装置に障害を通知する通知処理とを実行し、前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、ものである。
本開示により、現在運用中のサーバ装置においてシステムクラッシュが発生した場合であっても高速に他のサーバ装置への引継ぎを行うことが可能なクラスタシステム、サーバ装置、引継ぎ方法、及びプログラムを提供することができる。
実施形態1に係るクラスタシステムの一構成例を示すブロック図である。 図1のクラスタシステムにおける処理例を説明するためのフロー図である。 実施形態2に係るクラスタシステムの一構成例を示すブロック図である。 図3のクラスタシステムの具体例を示す機能ブロック図である。 図4のクラスタシステムにおける現用系サーバのOS起動時の処理例を説明するためのフロー図である。 図4のクラスタシステムにおけるシステムクラッシュ時の処理例を説明するためのフロー図である。 図4のクラスタシステムにおけるシステムクラッシュ時の処理例を説明するための模式図である。 装置のハードウェア構成の一例を示す図である。
以下、図面を参照して、実施形態について説明する。なお、実施形態において、同一又は同等の要素には、同一の符号を付し、重複する説明を省略する場合がある。
<実施形態1>
実施形態1について、図1及び図2を参照しながら説明する。
まず、図1を参照しながら、本実施形態に係るクラスタシステムの構成例について説明する。図1は、本実施形態に係るクラスタシステムの一構成例を示すブロック図である。
図1に示すように、本実施形態に係るクラスタシステム1は、2つのサーバ装置(以下、サーバ)10,20及び共有記憶装置30を備えることができ、これらにより少なくとも可用性を高めるためのクラスタ構成(高可用性クラスタ構成)をなす。つまり、クラスタシステム1は、多重化構成(この例では2重化構成)をなし、サーバ10,20間での引継ぎ機能(フェールオーバ機能)を有するシステムである。なお、共有記憶装置30は、サーバ10,20のいずれからもアクセス可能になっている。
サーバ10,20は、いずれもサーバコンピュータとすることができる。以下では、サーバ10を現在運用しているサーバ(現用系サーバ)とし、サーバ20を現在待機中のサーバ(待機系サーバ)として説明する。但し、サーバ10,20は、高可用性クラスタ構成をなすためのサーバであり、基本的に同じ機能を有するものとすることができ、いずれを現用系として用いるかは設定しておけばよい。
また、図示しないが、クラスタシステム1には、PC(Personal Computer)や携帯電話機(スマートフォンと称されるものも含む)等のクライアント装置(以下、クライアント)が接続可能となっている。クライアントは、クラスタシステム4に接続することで、クラスタシステム4から(この例における現時点では現用系サーバ10から)サービスの提供を受けることができる。
現用系サーバ10は、第1カーネル(ファーストカーネル)11、第2カーネル(セカンドカーネル)12、及びメモリ13を備えることができる。第1カーネル11、第2カーネル12、及びメモリ13は、現用系サーバ10の全体を制御する制御部として機能することができる。
この制御部は、例えば、CPU(Central Processing Unit)、作業用メモリ、及び、第1カーネル11及び第2カーネル12を含むプログラムを記憶した不揮発性の記憶装置などによって実現することができる。第1カーネル11及び第2カーネル12は、現用系サーバ10のOS(Operating System)の一部とすることができる。上記の作業用メモリ又は記憶装置は、メモリ13として機能させることができる。メモリ13として機能させる領域を予め確保するなどしておけばよい。なお、この制御部は、その一部又は全部を、例えば集積回路(Integrated Circuit)によって実現することもできる。
待機系サーバ20も現用系サーバ10と同様に、第1カーネル21、第2カーネル22、及びメモリ23を備えることができる。第1カーネル21、第2カーネル22、及びメモリ23は、待機系サーバ20の全体を制御する制御部として機能することができる。
この制御部は、例えば、CPU、作業用メモリ、及び、第1カーネル21及び第2カーネル22を含むプログラムを記憶した不揮発性の記憶装置などによって実現することができる。第1カーネル21及び第2カーネル22は、待機系サーバ20のOSの一部とすることができる。上記の作業用メモリ又は記憶装置は、メモリ23として機能させることができる。メモリ23として機能させる領域を予め確保するなどしておけばよい。なお、この制御部は、その一部又は全部を、例えば集積回路によって実現することもできる。
第1カーネル11は、現用系サーバ10における通常稼働時の制御を行う。第2カーネル12は、第1カーネル11の一部又は全部に障害が発生した場合に、メモリダンプ処理を行うカーネルである。ここで、メモリダンプ処理において出力先とするメモリはメモリ13とする。
そして、本実施形態の主たる特徴の1つとして、第1カーネル11は、起動時に、所定の情報を、第2カーネル12がメモリダンプ処理において出力先とするメモリ13に書き込む処理を実行する。
第2カーネル12は、第1カーネル11の一部又は全部に障害が発生した場合に、メモリ13内の所定の情報に基づき、共有記憶装置30からの入出力の切り離し処理と待機系サーバ20に障害を通知する通知処理とを実行する。この切り離し処理は、現用系サーバ10を共有記憶装置30から切り離して入出力が発生しない状態にすることであり、所謂、I/Oフェンシングと称される処理とすることができる。
第1カーネル11の一部又は全部に障害が発生した場合とは、所謂、システムクラッシュが発生した場合を指すことができる。システムクラッシュは、ここではシステムエラーやバグなどの原因により第1カーネル11が動かなくなることを指す。また、上述したように、第2カーネル12は、第1カーネル11の一部又は全部に障害が発生した場合において、メモリダンプ処理も実行する。
上記所定の情報は、切り離し処理の対象及び通知処理での通知先を指定する情報を含むものとする。このようにして事前にメモリ13内に記憶された所定の情報に基づき、第2カーネル12は、第1カーネル11の一部又は全部に障害が発生した場合に、切り離し処理及び通知処理を実行することができる。
次に、図2を参照しながら、クラスタシステム1における処理例について説明する。図2は、クラスタシステム1における処理例を説明するためのフロー図である。
まず、現用系サーバ10は、その起動に際し、第1カーネル11を起動する(ステップS1)。第1カーネル11は、起動時に所定の情報をメモリ13に書き込む(ステップS2)。その後、第2カーネル12は、第1カーネル11で障害が発生していないかを監視する(ステップS3)。
第2カーネル12は、障害が発生した場合(ステップS3でYESの場合)には、メモリ13に記憶された所定の情報に基づき、切り離し処理及び障害通知処理を実行し(ステップS4)、処理を終了する。また、ステップS4では、上述のように、第2カーネル12が通常のメモリダンプ処理も実行する。このように、第2カーネル12は、メモリダンプ処理で使用するメモリ13にアクセス可能であるため、そのメモリ13に予め記憶された所定の情報に基づき、切り離し処理及び通知処理を実行することができる。
そして、障害通知処理による通知を受信した待機系サーバ20は、その受信を契機としてフェイルオーバ処理を行って共有記憶装置30との入出力を有効にする。これ以降、クライアントは、待機系サーバ20にアクセスすることでサービスの提供を受けることができる。つまり、クライアントは、現用系サーバ10の障害により業務が困難になったこと後も、即座に待機系サーバ20がフェイルオーバ処理を行うことで業務を即座に継続することができる。
このように、待機系サーバ20は、現用系サーバ10から通知処理による障害の通知を受信すると、待機系サーバ20における通常稼働時の制御を行う第1カーネル21を起動するように構成することができる。換言すれば、待機系サーバ20は、第1カーネル21の非稼働時に現用系サーバか10らの障害の通知を受信した場合に、自身の第1カーネル21を起動するように構成することができる。ここで、第1カーネル21は、通常稼働時の制御のために、フェイルオーバ処理を実行することになる。
一方で、高可用性クラスタシステムにおいて、待機系サーバは、現用系サーバとのハートビートがタイムアウトすることで現用系サーバの停止を確認し、フェイルオーバ処理を行うこともできる。これに対し、本実施形態では、現用系サーバ10のOSの能動的な障害通知を契機としてフェイルオーバ処理を実施するため、ハートビートのタイムアウトを契機とした手法に比べて高速にフェイルオーバを実施することができる。
以上のように、本実施形態に係るクラスタシステム1では、現在運用中のサーバ(現用系サーバ10)においてシステムクラッシュが発生した場合であっても高速に他のサーバ(待機系サーバ20)への引継ぎを行うことが可能になる。
また、本実施形態に係るクラスタシステム1について、2つのサーバ10,20を備えることを前提として説明したが、共有記憶装置にアクセス可能な3つ以上のサーバを備えることもできる。その場合、各サーバにおいて、障害が発生した場合に引継ぎを行う先のサーバを予め指定しておくなどすることで、引継ぎを行うことができる。引継ぎを行う先は、上述した所定の情報に含めておくことができる。
<実施形態2>
実施形態2について、図3〜図7を併せて参照しながら、実施形態1との相違点を中心に説明するが、実施形態1で説明した様々な例が適用できる。まず、図3及び図4を参照しながら、本実施形態に係るクラスタシステムの構成例について説明する。図3は、実施形態2に係るクラスタシステムの一構成例を示すブロック図で、図4は、その具体例を示す機能ブロック図である。
図3に示すように、本実施形態に係るクラスタシステム4は、現用系サーバ40及び待機系サーバ50の2台のサーバが共有ディスク60とともにクラスタ構成を形成するシステムである。現用系サーバ40、待機系サーバ50、及び共有ディスク60は、それぞれ実施形態1の現用系サーバ10、待機系サーバ20、及び共有記憶装置30に対応している。その他、現用系サーバ40、待機系サーバ50の構成要素のうち、それぞれ現用系サーバ10、待機系サーバ20の構成要素に対応する構成要素については、同名称で記載し、その説明を一部省略する。
このように、クラスタシステム4は、基本的に同一の構成を持つ現用系サーバ40及び待機系サーバ50と、現用系サーバ40及び待機系サーバ50で共有可能な共有ディスク60から構成されることができる。
また、現用系サーバ40、待機系サーバ50は互いにネットワーク70を介して接続されている。ネットワーク70は、有線通信、無線通信、有線及び無線の双方の通信のいずれの通信を行うネットワークであってもよい。ネットワーク70には、クライアントが接続可能となっている。クライアントは、ネットワーク70に接続することで、クラスタシステム4からサービスの提供を受けることができる。
ここで、提供されるサービスとしては、業務アプリケーション等のアプリケーションの提供サービスが挙げられる。以下では、現用系サーバ40と待機系サーバ50が同一の業務アプリケーションを実行することができることを前提に説明を行う。つまり、クライアントは現用系サーバ40から業務アプリケーションの利用提供を受けておき、現用系サーバ40に障害が発生した場合、現用系サーバ40の業務アプリケーションを待機系サーバ50が引き継ぎ、待機系サーバ50から利用提供を受ける。無論、クラスタシステム4では、クライアントは、サーバ40,50のいずれから業務アプリケーションの利用提供を受けているかに拘わらず同じ制御を行うことができ、クライアントのユーザもいずれから利用提供を受けているかを認識できる必要はない。また、業務アプリケーションの種類は問わない。
現用系サーバ40及び待機系サーバ50は、CPU等の演算装置と記憶装置を備えた情報処理装置(コンピュータ)として構成されることができる。現用系サーバ40、待機系サーバ50はそれぞれOS40a、OS50aを有することができる。OS40aは、中核であるカーネルとして、第1カーネル41及び第2カーネル42を有する。OS50aは、中核であるカーネルとして第1カーネル51及び第2カーネル52を有する。第1カーネル41,51は、それぞれ、OS40a,50aが起動した際に起動し、OS40a,50aに異常(障害)が無い限り稼働するカーネルである。第2カーネル42,52は、それぞれ、第1カーネル41,51が異常を検知し、処理続行不能と判断した際に起動し、メモリ43,53へのメモリダンプを行うカーネルである。
また、現用系サーバ40、待機系サーバ50はそれぞれ、共有ディスク60に接続するためのHBA(Host Bus Adapter)カード45,55を備えている。また、現用系サーバ40、待機系サーバ50はそれぞれ、ネットワーク70に接続するためのNIC(Network Interface Card)44,54を備えている。現用系サーバ40のOS40a、待機系サーバ50のOS50aはそれぞれ、NIC44,54とネットワーク70とを介して互いに通信可能となっている。
現用系サーバ40、待機系サーバ50はそれぞれ、業務アプリケーション46,56、クラスタ管理ソフトウェア47,57、及びOS障害処理プログラム48,58を実行可能に搭載している。ここで、第1カーネル41,51上では、それぞれ業務アプリケーション46,56とクラスタ管理ソフトウェア47,57とが動作し、第2カーネル42,52上ではそれぞれOS障害処理プログラム48,58が動作する。
OS障害処理プログラム48,58又は第2カーネル42は、メモリダンプ処理を実行するプログラムを含む。OS40a(実際には第1カーネル41)においてシステムクラッシュが発生すると、OS40a上では第2カーネル42が起動し、第2カーネル42又は同時に起動されたOS障害処理プログラム48がメモリダンプ処理を実行する。第2カーネル42は、第1カーネル41が使用する記憶領域と異なる記憶領域が記憶先として予め割り当てられており、第1カーネル41から第2カーネル42の記憶領域を参照することはできない。そのため、第2カーネル42又はOS障害処理プログラム48は、システムクラッシュの影響を受けずにメモリダンプを実行することができる。なお、この方法は、例えば、下記の参考文献に記載されている。なお、ここでLinuxは登録商標である。
“ORACLE(R) Linux 管理者ガイド,リリース6 9.1 Kdumpについて”、[online]、ORACLE社、[2019年10月17日検索]、インターネット<URL: https://docs.oracle.com/cd/E39368_01/E41138/html/ch09s01.html>
上述のようなクラスタシステム4における具体例について、図4を参照しながら説明する。図4に示すように、クラスタ管理ソフトウェア47は、通知受信モジュール(MDL)81、フェイルオーバ制御モジュール82、及び通知用情報処理モジュール83を備えることができる。同様に、クラスタ管理ソフトウェア57は、通知受信モジュール91、フェイルオーバ制御モジュール92、及び通知用情報処理モジュール93を備えることができる。
OS障害処理プログラム48は、OS障害通知モジュール84及びI/Oフェンシング制御モジュール85を備えることができる。同様に、OS障害処理プログラム58は、OS障害通知モジュール94及びI/Oフェンシング制御モジュール95を備えることができる。
通知用情報処理モジュール83,93はそれぞれ、実施形態1で説明した所定の情報に相当する通知用情報を、第2カーネル42,52のイメージファイルに書き込む処理を行う。第2カーネル42,52のイメージファイルはそれぞれ、メモリ43,53に記憶されることができる。つまり、第1カーネル41,51はそれぞれ、起動時に、上記通知用情報をイメージファイルとしてメモリ43,53に書き込む処理を実行する。また、この書き込み処理は、起動後であってもシステム構成の変更があった場合などには更新するようにしておくこともできる。つまり、この書き込み処理は少なくとも第1カーネル41,51の起動時に実行されるようにしておけばよい。
そして、本実施形態において、上記通知用情報は、切り離し処理の対象を指定する情報(切離情報)及び通知先を指定する情報(通知先情報)として、次のような情報を含むことができる。
即ち、切離情報は、現用系サーバ40、待機系サーバ50においてそれぞれI/Oフェンシングの対象となる共有ディスク60に接続している接続インターフェース(I/F)を示す情報を含むことができる。この情報は、例えばそのI/Fが搭載されたスロットの位置を示す情報とすることができる。この例では、現用系サーバ40、待機系サーバ50が書き込む場合には、それぞれ、共有ディスク60に接続されているHBAカード45,55が搭載されているスロット番号がこの情報に該当する。
通知先情報は、他のサーバとの通信を行う通信I/Fを示す情報(例えばそのI/Fが搭載されたスロットの位置を示す情報)を含むことができる。他のサーバとは、現用系サーバ40が書き込む場合には待機系サーバ50を指し、待機系サーバ50が書き込む場合には現用系サーバ40を指す。この例では、他系OS(他のサーバのOS)と通信するためのNIC44,54が搭載されているスロット番号がこの情報に該当する。
さらに、通知先情報は、他のサーバのIP(Internet Protocol)アドレスを示す情報を含むことができる。この情報は、OS障害を他系のOSに通知するためのIPアドレスであり、OS障害通知モジュール84,94がそれぞれ他系の通知受信モジュール91,81に通知を送信する際に使用する他系OSのIPアドレスである。また、この通知先情報は、引継ぎを行う先を意味する情報となる。
また、上記通知用情報は、元々第1カーネル41,51が扱う記憶領域にあるが、それぞれ第2カーネル42,52上にあるOS障害処理プログラム48,58で取り扱えるようにメモリ43,53に書き込まれることができる。特に、ここでは第2カーネル42,52のイメージファイルとして書き込む処理を挙げている。このような書き込み処理としては、例えば、既知の手法である、専用の設定ファイルを設けてカーネルイメージを更新する方法を用いることができる。なお、この方法は、例えば、下記の参考文献に記載されている。
“Red Hat 導入ガイド 26.2.3.コマンドライン上でKDUMPの設定”、[online]、Red Hat, Inc.、[2019年10月17日検索]、インターネット<URL: https://access.redhat.com/documentation/ja−jp/red_hat_enterprise_linux/6/html/deployment_guide/s2−kdump−configuration−cli>
I/Oフェンシング制御モジュール85,95はそれぞれ、メモリ43,53内の切離情報を参照し、共有ディスク60に接続されているHBAカード45,55に対してI/Oフェンシングを実施する。また、I/Oフェンシング制御モジュール85,95は、I/Oフェンシング完了後に、OS障害通知モジュール84,94に障害の通知を行う。なお、この通知は、この通知からフェイルオーバ処理が開始される時間を逆算して、I/Oフェンシング開始後完了前の時間に実施しておくこともできる。I/Oフェンシングとは、クラスタシステム4を構成するサーバ(例えば現用系サーバ40)が停止する場合に、そのサーバが共有ディスク60に接続したままにならないように、切り離すことである。
OS障害通知モジュール84,94はそれぞれ、I/Oフェンシング制御モジュール85,95からI/Oフェンシング完了の通知を受け取ると、他系OSのIPアドレスと障害通知に使用するNIC44,54の搭載スロット番号とを読み取る。これらの情報は、通知用情報処理モジュール83,93がそれぞれ予めメモリ43,53に書き込んだ通知先情報である。
OS障害通知モジュール84,94はそれぞれ、障害通知に使用するNIC44,54を初期化し、上記IPアドレスに対して、NIC44、NIC54、及びネットワーク70を経由して、他系の通知受信モジュール91,81にOS障害通知を行う。上記OS障害通知は、例えばSNMP(Simple Network Management Protocol) Trapの形式で送信されることができ、以下ではその例を挙げて説明する。
通知受信モジュール91,81はそれぞれ、他系のOS障害通知モジュール84,94から送信されたSNMP Trapを受信し、同系のフェイルオーバ制御モジュール92,82に通知を行う。
フェイルオーバ制御モジュール92,82はそれぞれ、通知受信モジュール91,81からの通知を受けることで、他系でOS障害が発生して業務アプリケーション46,56が停止していると判断する。この判断を行ったフェイルオーバ制御モジュール92,82はそれぞれ、業務アプリケーション46から業務アプリケーション56へのフェイルオーバ処理、業務アプリケーション56から業務アプリケーション46へのフェイルオーバ処理を行う。このフェイルオーバ処理は、業務アプリケーションの引継ぎ処理を指す。
なお、このフェイルオーバ処理は、次のような理由から実行される。クラスタシステム4では、両サーバ40,50のそれぞれで作動する同じ業務アプリケーション46,56のデータを共有ディスク60に格納する。そのため、現用系サーバ40と待機系サーバ50から同時に共有ディスク60に書き込みを行うと、このデータが破壊されるおそれがあり、それを回避するために通常は現用系サーバ40からのみ書き込みを行うような排他制御がなされる。そして、クラスタシステム4においてフェイルオーバ処理を行う場合には、障害が発生した現用系サーバ40からの共有ディスク60への書き込みを停止し、その後に待機系サーバ50の業務アプリケーション56を起動することになる。
例えば、クラスタシステム4において現用系サーバ40の第1カーネル41に障害が発生した場合、業務アプリケーション46から業務アプリケーション56への切り替えを行う。このとき、待機系サーバ50のクラスタ管理ソフトウェア57が業務アプリケーション56を起動する。
待機系サーバ50で起動した業務アプリケーション56は、共有ディスク60に格納されたデータを使用し、現用系サーバ40の業務アプリケーション46が停止した時点から処理を再開する。
なお、この再開には、必要に応じて、メモリダンプ処理により保存された情報を用いることができる。メモリダンプ処理により保存された情報は、例えば、OS障害通知モジュール84がOS障害通知とともに或いはOS障害通知の後に、NIC44,54及びネットワーク70を介して待機系サーバ50に送信することができる。なお、メモリダンプ処理により保存された情報は、システムクラッシュの原因の解析にのみ用いられ、上述のような再開には用いないこともできる。
次に、図5〜図7を併せて参照しながら、本実施形態に係るクラスタシステム4における処理例を説明する。図5は、図4のクラスタシステム4における現用系サーバ40のOS起動時の処理例を説明するためのフロー図である。図6は、図4のクラスタシステム4におけるシステムクラッシュ時の処理例を説明するためのフロー図で、図7は、図4のクラスタシステム4におけるシステムクラッシュ時の処理例を説明するための模式図である。なお、図7は、図6における各ステップの処理を破線で模式的に示している。
現用系サーバ40のOS40aが起動したときの動作は、図5に示すように、次のようになる。まず、現用系サーバ40のOS40aが起動すると、第1カーネル41が稼働する(ステップS11)。次いで、第1カーネル41上でクラスタ管理ソフトウェア47が通知用情報処理モジュール83を実行する(ステップS12)。
通知用情報処理モジュール83は、予め登録された設定ファイルからHBAカード45の搭載スロット番号、待機系サーバ50のOS50aのIPアドレス、ネットワーク70との通信用のNIC44の搭載スロット番号を読み取る(ステップS13)。そして、通知用情報処理モジュール83は、読み取った情報を、第2カーネル42上のOS障害処理プログラム48が扱えるように第2カーネル42のイメージファイルに書き込む(ステップS14)。
システムクラッシュとなる障害が発生した時の動作は、図6及び図7に示すように、次のようになる。現用系サーバ40のOS40aでシステムクラッシュとなる障害が発生すると、第2カーネル42が動作を開始し(ステップS21)、OS障害処理プログラム48が動作を開始する(ステップS22)。OS障害処理プログラム48は、OS40aが共有ディスク60へ書き込むことを防ぐために、I/Oフェンシング制御モジュール85を実行する。具体的には、通知用情報処理モジュール83が第2カーネル42のイメージファイルに書き込んだHBAカード45の搭載スロット番号を読み取り、HBAカード45に対してI/Oフェンシングを行う(ステップS23)。
I/Oフェンシングが完了した後、I/Oフェンシング制御モジュール85は、I/Oフェンシングが完了した通知をOS障害通知モジュール84に送信する。OS障害通知モジュール84は、I/Oフェンシング制御モジュール85からI/Oフェンシング完了の通知を受け取ると、次の処理を行う。即ち、OS障害通知モジュール84は、通知用情報処理モジュール83が第2カーネル52のイメージファイルに書き込んだ待機系サーバ50のOS50aのIPアドレス、通信用のNIC44の搭載スロット番号を読み取る。そして、OS障害通知モジュール84は、NIC44を初期化し(ステップS24)、待機系サーバ50の通知受信モジュール91に対して、SNMP Trapの形式で障害通知を送信する(ステップS25)。
ここで、ステップS24の初期化について補足的に説明する。ステップS21において、第2カーネル42は、第1カーネル41がシステムクラッシュすると起動することになるが、起動しただけでは第1カーネル41が使用していたNIC44を使用することはできない。第2カーネル42がNIC44を使用できるようにするために、ステップS24の初期化が実行されることになる。そして、NIC44の初期化により、ステップS25におけるNIC44を使用した障害通知が可能となる。
現用系サーバ40のOS40aは、第2カーネル42の本来の動作により、メモリダンプ処理を行った後、シャットダウンする(ステップS26)。
一方で、待機系サーバ50のクラスタ管理ソフトウェア57は、通知受信モジュール91でSNMP Trapの形式の障害通知を受信すると(ステップS31)、フェイルオーバ制御モジュール92で、フェイルオーバ処理を実施する(ステップS32)。これにより、待機系サーバ50は共有ディスク60への接続を開始するが、この時点で現用系サーバ40はI/Oフェンシングにより接続が遮断されているため、共有ディスク60のデータ破損は発生しない。
以上のように、本実施形態に係るクラスタシステム4では、現用系サーバ40でシステムクラッシュが発生した際、システムクラッシュ時にメモリダンプを実施する第2カーネル42においてI/Oフェンシングと待機系サーバ50のOSへの障害通知を行う。これは主に通知用情報処理モジュール83、OS障害通知モジュール84、及びI/Oフェンシング制御モジュール85で例示した処理で実現することができる。特に、本実施形態では、通知用情報処理モジュール83による上述したようなメモリ43(又はメモリ53)への書き込み処理により、I/Oフェンシングと障害通知とに必要な情報を第2カーネル42(又は第2カーネル52)へ受け渡すことができる。
このような処理を行うことで、本実施形態に係るクラスタシステム4では、待機系サーバ50においてハートビートのタイムアウトを待つこともなく、高速なフェイルオーバ処理を実現できる。
<他の実施形態>
上述した各実施形態では、サーバ装置の各部の機能について説明したが、サーバ装置としてこれらの機能が実現できればよい。また、上述した各実施形態では、サーバ装置の各部の機能について説明したが、サーバ装置としてこれらの機能が実現できればよい。また、各実施形態において説明した様々な例は、適宜組み合わせることができる。
また、各実施形態に係るサーバ装置は、現用系、待機系のいずれで用いられるかに依らず、次のようなハードウェア構成を有することができる。図8は、各実施形態に係るサーバ装置のハードウェア構成の一例を示す図である。
図8に示すサーバ装置100は、現用系、待機系のいずれかのサーバ装置とすることができ、プロセッサ101、メモリ102、及びインターフェース(I/F)103を有することができる。インターフェース103は、例えば、共有記憶装置と接続するための接続インターフェースと、クライアント装置や他のサーバ装置と通信するための通信インターフェースと、を有することができる。各実施形態で説明した各部の機能は、プロセッサ101がメモリ102に記憶されたプログラムを読み込んで、インターフェース103と協働しながら実行することにより実現される。このプログラムは、各実施形態で説明したプログラムとすることができる。
上述の例において、上記プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)を含む。さらに、この例は、CD−ROM(Read Only Memory)、CD−R、CD−R/Wを含む。さらに、この例は、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、上記プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
なお、本開示は上述した様々な実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、本開示は、それぞれの実施形態を適宜組み合わせて実施されてもよい。
1、4 クラスタシステム
10、40 サーバ装置(現用系サーバ)
11、21、41、51 第1カーネル
12、22、42、52 第2カーネル
13、23、43、53 メモリ
20、50 サーバ装置(待機系サーバ)
30 共有記憶装置
40a、50a OS
44、54 NIC
45、55 HBAカード
46、56 業務アプリケーション
47、57 クラスタ管理ソフトウェア
48、58 OS障害処理プログラム
60 共有ディスク
70 ネットワーク
81、91 通知受信モジュール
82、92 フェイルオーバ制御モジュール
83、93 通知用情報処理モジュール
84、94 OS障害通知モジュール
85、95 I/Oフェンシング制御モジュール
100 サーバ装置
101 プロセッサ
102 メモリ
103 インターフェース

Claims (10)

  1. 共有記憶装置と、
    前記共有記憶装置にアクセス可能で前記共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなす複数のサーバ装置と、
    を備え、
    前記サーバ装置は、前記サーバ装置における通常稼働時の制御を行う第1カーネルと、
    前記第1カーネルの一部又は全部に障害が発生した場合に、メモリダンプ処理を行う第2カーネルと、を有し、
    前記第1カーネルは、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、
    前記第2カーネルは、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記複数のサーバ装置における他のサーバ装置に障害を通知する通知処理とを実行し、
    前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、
    クラスタシステム。
  2. 前記切り離し処理の対象を指定する情報は、前記サーバ装置において前記共有記憶装置に接続している接続インターフェースを示す情報を含み、
    前記通知先を指定する情報は、前記他のサーバ装置との通信を行う通信インターフェースを示す情報と、前記他のサーバ装置のIP(Internet Protocol)アドレスを示す情報と、を含む、
    請求項1に記載のクラスタシステム。
  3. 前記第1カーネルは、前記所定の情報をイメージファイルとして前記メモリに書き込む処理を実行する、
    請求項1又は2に記載のクラスタシステム。
  4. 前記他のサーバ装置は、前記通知処理による障害の通知を受信すると、前記他のサーバ装置における通常稼働時の制御を行う前記第1カーネルを起動する、
    請求項1から3のいずれか1項に記載のクラスタシステム。
  5. 他のサーバ装置と前記他のサーバ装置からアクセス可能な共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなすサーバ装置であって、
    前記サーバ装置における通常稼働時の制御を行う第1カーネルと、
    前記第1カーネルの一部又は全部に障害が発生した場合にメモリダンプ処理を行う第2カーネルと、
    を有し、
    前記第1カーネルは、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、
    前記第2カーネルは、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記他のサーバ装置に障害を通知する通知処理とを実行し、
    前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、
    サーバ装置。
  6. 前記切り離し処理の対象を指定する情報は、前記サーバ装置において前記共有記憶装置に接続している接続インターフェースを示す情報を含み、
    前記通知先を指定する情報は、前記他のサーバ装置との通信を行う通信インターフェースを示す情報と、前記他のサーバ装置のIP(Internet Protocol)アドレスを示す情報と、を含む、
    請求項5に記載のサーバ装置。
  7. 前記第1カーネルは、前記所定の情報をイメージファイルとして前記メモリに書き込む処理を実行する、
    請求項5又は6に記載のサーバ装置。
  8. 前記第1カーネルの非稼働時に前記他のサーバ装置からの障害の通知を受信した場合に、前記第1カーネルを起動する、
    請求項5から7のいずれか1項に記載のサーバ装置。
  9. 他のサーバ装置と共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなすサーバ装置における引継ぎ方法であって、
    前記サーバ装置は、前記サーバ装置における通常稼働時の制御を行う第1カーネルと、前記第1カーネルの一部又は全部に障害が発生した場合にメモリダンプ処理を行う第2カーネルと、を有し、
    前記第1カーネルが、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、
    前記第2カーネルが、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記他のサーバ装置に障害を通知する通知処理とを実行し、
    前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、
    引継ぎ方法。
  10. 他のサーバ装置と共有記憶装置とともに少なくとも可用性を高めるためのクラスタ構成をなすサーバ装置のコンピュータに実行させるためのプログラムであって、
    前記サーバ装置における通常稼働時の制御を行う第1カーネルと、
    前記第1カーネルの一部又は全部に障害が発生した場合にメモリダンプ処理を行う第2カーネルと、
    を有し、
    前記第1カーネルは、起動時に、所定の情報を、前記第2カーネルが前記メモリダンプ処理において出力先とするメモリに書き込む処理を実行し、
    前記第2カーネルは、前記第1カーネルの一部又は全部に障害が発生した場合に、前記メモリ内の前記所定の情報に基づき、前記共有記憶装置からの入出力の切り離し処理と前記他のサーバ装置に障害を通知する通知処理とを実行し、
    前記所定の情報は、前記切り離し処理の対象及び前記通知処理での通知先を指定する情報を含む、
    プログラム。
JP2020002839A 2020-01-10 2020-01-10 クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム Active JP6822706B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020002839A JP6822706B1 (ja) 2020-01-10 2020-01-10 クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020002839A JP6822706B1 (ja) 2020-01-10 2020-01-10 クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP6822706B1 true JP6822706B1 (ja) 2021-01-27
JP2021111137A JP2021111137A (ja) 2021-08-02

Family

ID=74200373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020002839A Active JP6822706B1 (ja) 2020-01-10 2020-01-10 クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6822706B1 (ja)

Also Published As

Publication number Publication date
JP2021111137A (ja) 2021-08-02

Similar Documents

Publication Publication Date Title
US7689862B1 (en) Application failover in a cluster environment
EP4083786A1 (en) Cloud operating system management method and apparatus, server, management system, and medium
JP4448878B2 (ja) 障害回復環境の設定方法
US9298566B2 (en) Automatic cluster-based failover handling
JP5959733B2 (ja) ストレージシステムおよびストレージシステムの障害管理方法
WO2017215502A1 (zh) 云桌面容灾方法、客户端、服务端、云桌面容灾系统及存储介质
US10509705B2 (en) Application protection through a combined functionality failure manager
WO2015042925A1 (zh) 服务器的控制方法和服务器的控制设备
WO2020001354A1 (zh) 主备容器系统切换
US11119872B1 (en) Log management for a multi-node data processing system
JP2014170394A (ja) クラスタシステム
JP2013073289A (ja) 多重化システム、データ通信カード、状態異常検出方法、及びプログラム
US11409471B2 (en) Method and apparatus for performing data access management of all flash array server
US8683258B2 (en) Fast I/O failure detection and cluster wide failover
US9471256B2 (en) Systems and methods for restoring data in a degraded computer system
US20110239038A1 (en) Management apparatus, management method, and program
JP5186551B2 (ja) ピア・プログラマブル・ハードウェア・デバイスの自動ファームウェア復元方法及びプログラム
US11055263B2 (en) Information processing device and information processing system for synchronizing data between storage devices
JP2007080012A (ja) 再起動方法、システム及びプログラム
US10467100B2 (en) High availability state machine and recovery
CN113722147A (zh) 一种保持业务连接方法及相关设备
JPH11224207A (ja) マルチクラスタシステムを構成する計算機
JP6822706B1 (ja) クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム
CN109445984B (zh) 一种业务恢复方法、装置、仲裁服务器以及存储系统
CN113419884B (zh) 防止bmc镜像文件损坏的方法、装置、终端及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201117

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201225

R150 Certificate of patent or registration of utility model

Ref document number: 6822706

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150