JP6984503B2 - 制御プログラム、制御方法および情報処理装置 - Google Patents

制御プログラム、制御方法および情報処理装置 Download PDF

Info

Publication number
JP6984503B2
JP6984503B2 JP2018045999A JP2018045999A JP6984503B2 JP 6984503 B2 JP6984503 B2 JP 6984503B2 JP 2018045999 A JP2018045999 A JP 2018045999A JP 2018045999 A JP2018045999 A JP 2018045999A JP 6984503 B2 JP6984503 B2 JP 6984503B2
Authority
JP
Japan
Prior art keywords
server
session information
session
backup
information
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
JP2018045999A
Other languages
English (en)
Other versions
JP2019159844A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018045999A priority Critical patent/JP6984503B2/ja
Publication of JP2019159844A publication Critical patent/JP2019159844A/ja
Application granted granted Critical
Publication of JP6984503B2 publication Critical patent/JP6984503B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、制御プログラム、制御方法および情報処理装置に関する。
Webアプリケーションは、たとえば、クラウド上の複数のサーバとロードバランサとクライアントを含むシステムで運用される。システムは、セッションを使用し、スケールインにより停止するサーバのセッション情報をスケールインしないサーバで引継ぐことで、ステートフルな処理を実現することができる。
たとえば、システムにセッション情報をバックアップするセッションバックアップサーバを準備し、セッション情報が更新された時にセッションバックアップサーバにセッション情報を保管しておく。これにより、スケールインによりサーバが停止しても、セッションバックアップサーバに存在するセッション情報を他のサーバが取得することにより、セッションを維持することができる。
従来技術として、データを複数のノードで並列に持つ冗長化のシステムとし、ノードのデータ更新時に異常が生じた場合、異常が発生していないノードを用いて業務再開する技術がある(たとえば、下記特許文献1参照。)。また、ストリーミング配信をおこなうサーバのシステムとして、ストリーミングの再生位置とセッション情報を分割してバックアップすることでデータ量を少なくする技術がある(たとえば、下記特許文献2参照。)。
特開2013−054521号公報 特開2016−143256号公報
ここで、スケールイン通知後にスケールインで停止するサーバがセッションバックアップサーバにセッション情報をバックアップするシステムが考えられる。このシステムによれば、断続的にクライアント等からリクエストが来る状況でも最新のセッション情報を用い新たなサーバで処理が続行できる。
ところで、スケールイン時に、スケールイン対象のサーバがハングアップすると、スケールイン対象のサーバが更新したセッション情報をセッションバックアップサーバにバックアップすることができなくなる。
スケールイン対象のサーバは、ハングアップから復旧すると、ハングアップによりバックアップすることができなかったセッション情報をセッションバックアップサーバにバックアップする。このとき、ハングアップから復旧したサーバによるバックアップ処理前に、クライアント等からのリクエストに応じて、他のサーバによりセッション情報が更新され、更新後のセッション情報がバックアップされていると、他のサーバにより更新されたセッション情報が、ハングアップから復旧したサーバにより更新されたセッション情報で上書きされる。
このような上書きが生じると、セッション情報がサーバによる処理内容と整合しなくなることがある。たとえば、クライアントを操作するユーザが複数回の操作(リクエスト)をおこなった場合に、システムがユーザの操作に対応する処理結果を返せなくなる。
一つの側面では、本発明は、セッションバックアップサーバにバックアップされたセッション情報が、サーバによる処理内容と整合しなくなることを抑制する。
一つの実施の形態では、スケールインにより処理対象から除外されたサーバから受信済みのセッション情報をスケールイン後も処理をおこなうサーバに提供可能なバックアップサーバに対して、自サーバが生成したセッション情報を順次送信し、複数のサーバのうち前記自サーバがスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップサーバから他のサーバに提供されたか否かを示す情報の送信要求を前記バックアップサーバに送信し、前記送信要求の送信に応じて、前記バックアップサーバから受信した応答が、前記最新のセッション情報が前記他のサーバに提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップサーバへの送信を抑制する、処理をコンピュータに実行させる制御プログラムが提供される。
本発明の一側面によれば、スケールインをおこなうシステム状態が変動してもセッション情報の不整合を生じることがなく、リクエスト処理の状態の一貫性を保つことができるという効果を奏する。
図1は、実施の形態にかかる制御システムの全体構成の一例を示す説明図である。 図2は、実施の形態にかかる制御システムのロードバランサの機能の一例を示すブロック図である。 図3は、実施の形態にかかるロードバランサが保持する振分先管理テーブルの一例を示す説明図である。 図4は、実施の形態にかかる制御システムのサーバの機能の一例を示すブロック図である。 図5は、サーバのセッション情報管理テーブルの一例を示す説明図である。 図6は、セッションバックアップサーバの機能の一例を示すブロック図である。 図7は、セッションバックアップサーバのセッション情報管理テーブルの一例を示す説明図である。 図8は、実施の形態にかかる制御システムの各装置のハードウェア構成の一例を示すブロック図である。 図9は、サーバの動作処理の一例(その1)を示すフローチャートである。 図10は、サーバの動作処理の一例(その2)を示すフローチャートである。 図11は、サーバの動作処理の一例(その3)を示すフローチャートである。 図12は、サーバの動作処理の一例(その4)を示すフローチャートである。 図13は、セッションバックアップサーバの動作処理の一例(その1)を示すフローチャートである。 図14は、セッションバックアップサーバの動作処理の一例(その2)を示すフローチャートである。 図15は、セッションバックアップサーバの動作処理の一例(その3)を示すフローチャートである。 図16Aは、実施の形態にかかるシステムによるセッション情報の処理の一例(その1)を説明する図である。 図16Bは、実施の形態にかかるシステムによるセッション情報の処理の一例(その2)を説明する図である。 図16Cは、実施の形態にかかるシステムによるセッション情報の処理の一例(その3)を説明する図である。 図17は、実施の形態にかかるシステムによるセッション情報の遷移の具体例を示す説明図である。 図18は、従来技術によるシステムの全体構成例を示す説明図である。 図19Aは、従来技術のシステムにより生じるセッション情報の不整合を説明する図(その1)である。 図19Bは、従来技術のシステムにより生じるセッション情報の不整合を説明する図(その2)である。 図19Cは、従来技術のシステムにより生じるセッション情報の不整合を説明する図(その3)である。 図20は、従来技術のシステムによるセッション情報の不整合の具体例を説明する図である。
以下に図面を参照して、開示の制御プログラム、制御方法および情報処理装置の実施の形態を詳細に説明する。
図1は、実施の形態にかかる制御システムの全体構成の一例を示す説明図である。実施の形態のシステム100は、ロードバランサ101、サーバ102、セッションバックアップサーバ103、クラウド運用監視部104を含む。システム100は、たとえば、クラウド上に配置された複数のサーバ群を含む。サーバ102は、クライアント110からのリクエストを処理する情報処理装置である。
実施の形態のシステム100は、リクエストのセッション情報のバックアップにかかり、あるサーバ102での状況変化が生じてセッション情報の送受信に支障が生じた場合でも、システム100内でのセッション情報の整合性が得られるものである。また、サーバ102の状況変化としてハングアップを例に説明する。ハングアップにより、セッション情報に処理待ちが生じ、所定時間、サーバ102は他の装置(セッションバックアップサーバ103等)にレスポンスを返すことができなくなる。そして、ハングアップは一時的に生じ、所定時間後にサーバ102は処理が復旧するものとして説明する。
クライアント110は、たとえば、Webブラウザを用いて所定の処理に対応する処理要求(リクエスト)をインターネットなどのネットワーク120を介してシステム100に送信し、システム100からレスポンス(処理結果)を得る。また、クライアント110は、状態を維持する必要のあるコンテンツにアクセスする場合、システム100(サーバ102)は、レスポンス毎にセッションIDを付与する。そして、クライアント110は、再度リクエストを送信する場合は、セッションIDを付与して送信する。図1中の丸(〇)はそれぞれセッション情報である。
クライアント110が送出するリクエストは、システム100上の複数のサーバ102(サーバ1〜3)が実行処理する。ロードバランサ101は、クライアント110のリクエストを複数のサーバ102(サーバ1〜3)に振り分け、各サーバ102の処理負荷を分散させる負荷分散装置である。セッションバックアップサーバ103は、各サーバ102のセッション情報をバックアップする。
クラウド運用監視部104は、ロードバランサ101を介してリクエストの負荷状況を監視する。クラウド運用監視部104は、たとえば、運用監視装置として設けられる。このクラウド運用監視部104は、スケールイン/スケールアウトの実施判断のために、リクエストに対するサーバ102の負荷状況や、サーバ102の故障等を監視する。
また、クラウド運用監視部104は、サーバ102の数に対してリクエスト数が少ない場合は、稼働するサーバ102の台数を減らすスケールインを実施する。スケールイン実施時には、クラウド運用監視部104は、スケールイン通知をロードバランサ101、サーバ102、セッションバックアップサーバ103に送信する。
上記構成のシステム100のセッションバックアップサーバ103は、スケールイン通知後、たとえば、スケールインで停止するサーバ102(サーバ2)からセッション情報を取得する。そして、断続的にリクエストが来る状況でも、最新のセッション情報で他サーバ102(サーバ1、3)によりリクエストの処理を続行する。
より具体的には、システム100は、スケールインしていない時のリクエストはセッション情報が存在するサーバ102へ振り分ける。また、スケールインしていない時は、セッション情報のバックアップはリクエスト処理とは非同期で実施する。
システム100のセッションバックアップサーバ103は、バックアップされているセッション情報が、どのサーバ102(サーバ1〜3)からバックアップされたかを示す情報を保持する。そして、リカバリ要求があった場合、要求したサーバ102(サーバ1〜3)に対してセッション情報を取得するためのリクエストを送る。
また、スケールインを実施する際は、クラウド運用監視部104が、ロードバランサ101、サーバ102、セッションバックアップサーバ103にスケールイン通知を送る。スケールイン通知には、どのサーバ102が停止予定であるかを示す情報が付加されている。サーバ102は、スケールインの対象になると、サーバ102が保持するセッション情報をセッションバックアップサーバ103にバックアップさせ、すべてのセッション情報のバックアップが完了した段階で、自サーバ102を停止させる。また、スケールインがロードバランサ101に通知されると、振り分け先をスケールインの対象外のサーバ102に変更する。
また、スケールイン通知後に新たなリクエストがロードバランサ101に来た場合、ロードバランサ101は、振り分け先を新しいサーバ102に変更する。振り分け先のサーバ102にはセッション情報がまだないため、セッション情報をセッションバックアップサーバ103から取得する。
セッションバックアップサーバ103は、スケールインすることを通知されている場合、セッション情報があるサーバ102に対してセッション情報取得リクエストを送信する。サーバ102でセッション情報をセッションバックアップサーバ103にまだ保管できていない場合は、リクエスト処理により最新セッション情報をセッションバックアップサーバ103に保管する。
上記構成において、たとえば、新たなリクエストの処理時、セッションバックアップサーバ103からスケールイン対象のサーバ102(サーバ2)へ最新のセッション情報を要求する。この際、サーバ102(サーバ2)のハングアップ等により、リクエストがサーバ102(サーバ2)から返却されない場合が生じたとする。
この場合、ロードバランサ101により、リクエストが新たに振り分けられたサーバ102(サーバ2)は、セッションバックアップサーバ103にあるセッション情報を要求する。セッションバックアップサーバ103は、サーバ102(サーバ2)がハングアップから復帰しないと判断すると、サーバ102(サーバ2)への最新のセッション情報の完了待ちを中止する。これにより、サーバ102(サーバ1)は、セッションバックアップサーバ103から送信されたセッション情報を取得して処理を引継ぐ。
スケールインは、それまでの負荷状況の傾向に基づき対象となるサーバ102を計画する。これに対し、リクエスト数はスケールインの計画とは関係なく発生する。このため、スケールイン対象のサーバ102(サーバ2)に対して、急激に膨大なリクエスト数が発生することがあり、このような場合には、スケールイン対象のサーバ102(サーバ2)にハングアップが生じ、この際、サーバ102(サーバ2)はリクエストを返却しない。
そして、スケールイン対象のサーバ102(サーバ2)がハングアップし、最新のセッション情報が取得できない場合が生じたとする。実施の形態では、新たにリクエストが振り分けられたサーバ102(サーバ1)は、セッションバックアップサーバ103が持つセッション情報をシステム100内の最新セッション情報として使用する。
また、実施の形態では、スケールイン対象のサーバ102(サーバ2)は、ハングアップからの復旧時に、最新のセッション情報に更新する。そして、サーバ102(サーバ2)は、セッションバックアップサーバ103から要求されたセッション情報が他サーバサーバ102(サーバ1)に引継ぎ済みかをセッションバックアップサーバ103に確認する。
確認の結果、引継ぎ済みの場合は、スケールイン対象のサーバ102(サーバ2)は、セッション情報のバックアップを中止し、破棄する。破棄とは、たとえば、セッション情報の無効化や消去を含み、セッションバックアップサーバ103に対してバックアップするセッション情報の送信を抑制することを指す。これにより、他サーバサーバ102(サーバ1)が引継ぎ済みのセッション情報がシステム100内で最新のセッション情報であることを確定させる。
これにより、システム100内において、スケールイン対象のサーバ102(サーバ2)がハングアップ等でリクエスト処理できない状態が生じても、ハングアップからの復旧時にどのセッション情報が最新であるかを判断できるようになる。そして、システム100内でのセッション情報を整合でき、リクエスト処理の一貫性を保つことができる。
図2は、実施の形態にかかる制御システムのロードバランサの機能の一例を示すブロック図である。ロードバランサ101は、リクエスト受付部201と、振分部202と、振分先管理テーブル203と、負荷状況監視部204と、スケールイン通知受付部205と、振分先変更部206と、を含む構成となっている。
リクエスト受付部201は、クライアント110から送出されたリクエストを受け付け、振分部202に出力する。振分部202は、振分先管理テーブル203を参照して、クライアント110からのリクエストを複数のサーバ1〜3(102)に振り分ける。振分先管理テーブル203には、セッションID毎の振分先サーバ1〜3(102)の情報が設定される。
本実施の形態において、振分部202は、セッションIDが付与されているリクエストについては、振分先管理テーブル203を参照し、該当するセッションIDに対応するセッション情報を持つ振分先サーバ1〜3(102)にリクエストを振り分ける。
負荷状況監視部204は、リクエストの負荷状況(たとえば、リクエスト数や、サーバ102の負荷状況を示すCPUの稼働数や負荷状況、メモリの使用状態等)を監視する。負荷状況監視部204は、クラウド運用監視部104によってリクエストの負荷状況が監視されている。
スケールイン通知受付部205は、クラウド運用監視部104が負荷状況に応じて通知するスケールイン通知を受け取る。振分先変更部206は、スケールイン通知時に、振分先管理テーブル203に設定されている振分先サーバを、スケールイン対象のサーバからスケールイン対象外のサーバに変更する。
また、振分先変更部206は、スケールイン通知後は、停止予定のサーバに対するリクエストを他サーバに振り分ける変更をおこなう。これらの変更は、振分先変更部206が振分先管理テーブル203を書き換えることでおこなう。
図3は、実施の形態にかかるロードバランサが保持する振分先管理テーブルの一例を示す説明図である。図3に示すように、振分先管理テーブル203には、3つのセッションID(session_A〜session_C毎の振分先サーバとして、サーバ1〜3(102)の情報が更新可能に設定されている。
図4は、実施の形態にかかる制御システムのサーバの機能の一例を示すブロック図である。サーバ102は、リクエスト受付部401と、リクエスト処理部402と、レスポンス送信部403と、セッション情報管理テーブル404と、非同期バックアップ依頼キュー405と、を含む。また、サーバ102は、セッション情報の送信部406と、セッション情報取得要求の送信部407と、セッション情報の受付部408と、を含む構成となっている。
また、サーバ102は、負荷状況監視部409、スケールイン通知受付部410、セッション情報バックアップ要求の受付部411、セッション情報の引継ぎ確認の送信部412、セッション情報の引継ぎ確認の結果受信部413を含む。また、セッション情報管理部414は、図4に示す各機能部を統括制御する制御部として機能する。
リクエスト受付部401は、ロードバランサ101から振り分けられたリクエストを受け付ける。リクエスト処理部402は、ロードバランサ101から振り分けられたリクエストを処理する。レスポンス送信部403は、リクエスト処理部402が処理したリクエストに対応するレスポンスをロードバランサ101に送信する。
セッション情報管理テーブル404は、アプリケーションで使用するセッション情報を保持する。セッション情報管理テーブル404は、セッションID毎のセッション情報と、セッション情報の使用の有無(使用中/不使用)の情報を更新可能に保持する。
セッション情報管理部414は、リクエストの処理時、リクエストが持つセッションIDに対応するセッション情報をセッション情報管理テーブル404から取得する際に、使用状況を「使用中」に変更する。「使用中」はクライアント110からのリクエスト処理中の状態でセッション情報の更新前の状態を示す。
そして、セッション情報管理部414は、リクエストの処理完了後、更新したセッション情報をセッション情報管理テーブル404に反映し、「使用状況」を「不使用」に変更する。非同期バックアップ依頼キュー405には、更新したセッション情報が格納される。
セッション情報の送信部406は、非同期バックアップ依頼キュー405からセッション情報を取得し、セッションバックアップサーバ103に送信する。
実施の形態のシステム100(サーバ102、セッションバックアップサーバ103)は、スケールインしていない時、セッション情報のバックアップをリクエスト処理とは非同期に実施する。
また、セッション情報管理部414は、リクエストが持つセッションIDに対応するセッション情報がない場合、セッションバックアップサーバ103にセッション情報を要求する。この際、セッション情報取得要求の送信部407がセッション要求をセッションバックアップサーバ103に送信する。セッション情報の受付部408は、セッションバックアップサーバ103から送信されたセッション情報を受け付け、セッション情報管理テーブル404を更新する。
負荷状況監視部409は、サーバ102内の負荷状況(たとえば、サーバ102のCPUの稼働数や負荷状況、メモリの使用状態等)を監視し、この負荷状況監視部409が監視する負荷状況は、クラウド運用監視部104によって監視されている。スケールイン通知受付部410には、負荷状況監視部409が監視中の負荷状況に応じてクラウド運用監視部104からスケールインが通知される。
そして、スケールイン通知受付部410がスケールイン通知を受け付けると、セッション情報管理部414は、サーバ102に存在している全セッション情報のバックアップを開始する。また、非同期のバックアップを中止させる。ここで、セッション情報管理部414は、セッション情報管理テーブル404を参照し、使用状況が「不使用」の場合、セッション情報をバックアップする。すなわち、セッション情報をセッションバックアップサーバ103に送信し、セッションバックアップサーバ103にバックアップ保持させる。
また、使用状況が「使用中」の場合、「不使用」になった後にバックアップする。また、セッション情報管理部414は、セッション情報の取得時にセッション情報管理テーブル404から取得したセッション情報を削除する。また、セッション情報管理部414は、全セッション情報のバックアップ完了後、サーバ102の停止処理を実施する。
また、セッション情報バックアップ要求の受付部411は、バックアップ完了前にセッションバックアップサーバ103からの最新セッション取得要求を受け付ける。この際、セッション情報管理部414は、セッションバックアップサーバ103に最新のセッション情報をセッション情報の送信部406からセッションバックアップサーバ103に送信する。また、セッション情報管理部414は、要求されたセッション情報を個別でセッション情報管理テーブル404から取得し、バックアップする。すなわちバックアップ対象のセッション情報をセッションバックアップサーバ103に送信する。
ここで、セッション情報管理部414は、使用状況が「使用中」の場合、「不使用」になった後にセッション情報をバックアップする。また、セッション情報の取得時にセッション情報管理テーブル404から取得した該当のセッション情報を削除する。
また、セッション情報管理部414は、スケールイン通知後におこなうセッション情報のバックアップでは、セッション情報をセッションバックアップサーバに送信する前に以下の判定処理をおこなう。ここでは、全セッション情報をバックアップする場合、セッションバックアップサーバ103からの最新セッション取得要求を受けてバックアップする場合を指す。
セッション情報の引継ぎ確認の送信部412は、取得したセッション情報が他サーバ102に引継ぎ済みであるかを確認するリクエストを、セッションバックアップサーバ103に送信する。セッション情報の引継ぎ確認の結果受信部413は、セッションバックアップサーバ103から送られた確認の結果を受信する。そして、セッション情報管理部414は、受信した確認結果が「引継ぎ済み」だった場合には、バックアップを中止し、該当するセッション情報を破棄する。一方、結果が「引継ぎ未」だった場合には、該当するセッション情報をセッションバックアップサーバ103に送信する。
図5は、サーバのセッション情報管理テーブルの一例を示す説明図である。セッション情報管理テーブル404には、上記同様の3つのセッションの識別子であるセッションID(session_A〜session_C)毎のセッションの具体的な内容の情報(セッション情報)と、セッションの使用状況の情報が更新可能に設定される。
図5を用いて、セッション情報管理テーブルの遷移例について説明する。セッション情報管理部414によるセッション情報管理テーブル404の情報の変化を経時的に説明する。
はじめに、図5(a)は、リクエスト処理時の内容であり、リクエストの処理でセッション情報を使用中の場合は、該当するセッションIDの使用状況を「使用中」に設定する。リクエストの処理が完了すると「不使用」に変更する(たとえば、session_A参照)。
この後、図5(b)に示すように、スケールイン通知後には、全セッション情報のバックアップ処理を開始する。そして、使用状況が「不使用」のセッション情報(aaaaaa)を取得し、セッションバックアップサーバ103に送信してバックアップさせる。そして、図示のように、セッション情報管理テーブル404上でセッション情報の取得時にこの「不使用」の行は削除する。また、「使用中」のセッション情報は「不使用」になるまでバックアップしない。「削除」とは、行の情報は残して行の情報が無効である旨のフラグの付与や、行(エントリ)の削除等を示す。
この後、図5(c)に示すように、セッションバックアップサーバからsession_Bの取得要求を受け付けたとする。この場合、セッション情報管理部414は、該当するセッション情報(bbbbbb)をセッション情報管理テーブル404から取得する。そして、セッション情報の取得時に「不使用」の行を削除する。また、セッション情報管理部414は、使用状況が「使用中」の場合は「不使用」になるまで該当する行の情報の取得はおこなわない。
取得要求に対応したセッション情報の取得後、セッション情報管理部414は、取得したセッション情報が他サーバ102に引継ぎ済みであるかセッションバックアップサーバ103に確認する。「引継ぎ未」の場合はバックアップする。「引継ぎ済み」の場合はバックアップせず、該当するセッション情報を破棄する。
この後、図5(d)に示すように、セッション情報管理テーブル404からすべてのセッション情報が削除されると、セッション情報管理部414は、全セッション情報のバックアップが完了したと判断し、サーバ102の停止処理を開始する。
図6は、セッションバックアップサーバの機能の一例を示すブロック図である。セッションバックアップサーバ103は、セッション情報管理テーブル601と、セッション情報の受信部602と、セッション情報取得要求の受付部603と、セッション情報の送信部604と、スケールイン通知受付部605と、を含む構成となっている。また、セッション情報バックアップ要求の送信部606と、セッション情報の引継ぎ確認の受信部607と、セッション情報の引継ぎ確認の結果送信部608と、を含む構成となっている。また、セッション情報管理部609は、図6に示す各機能部を統括制御する制御部として機能する。
セッション情報管理テーブル601は、サーバ102から送信されたセッション情報のバックアップを保管する。このセッション情報管理テーブル601は、セッションID毎のセッション情報、バックアップ元サーバ、バックアップ状況の各情報を含む。セッション情報の受信部602は、サーバ102から送信されたセッション情報を受け付ける。
セッション情報管理部609は、サーバ102からセッション情報の要求を受けた場合、バックアップされたセッション情報をサーバ102に送信する。この際、セッション情報取得要求の受付部603がセッション情報の要求を受け付ける。そして、セッション情報管理部609は、セッション情報管理テーブル601からセッション情報を取得し、セッション情報の送信部604を介してセッション情報をサーバ102に送信する。
スケールイン通知受付部605は、クラウド運用監視部104が送信するスケールイン通知を受信する。セッション情報管理部609は、スケールイン通知時、セッション情報管理テーブル601が保持するバックアップ元サーバがスケールイン対象のサーバ102の場合、バックアップ状況を「空(たとえば、null)」にする。
また、セッション情報管理部609は、スケールイン通知後に、スケールイン対象外のサーバ102からこのスケールイン対象のサーバ102が持つセッション情報の要求を受けた場合、セッション情報管理テーブル601を参照する。そして、該当セッション情報のバックアップ状況を確認する。確認の結果、バックアップ状況が「完了」の場合は、セッションバックアップサーバ103が保持するセッション情報を要求元のサーバ102に送信する。
一方、セッション情報管理部609は、バックアップ状況が「空」の場合は、セッション情報バックアップ要求の送信部606を介して、スケールイン対象のサーバ102に対しセッション情報取得要求を送信する。そして、最新のセッション情報をバックアップすると、セッション情報を要求元のサーバ102に送信する。
また、セッション情報管理部609は、所定時間バックアップを待ってもバックアップが開始されない場合は、バックアップ状況を「完了」に変更し、セッションバックアップサーバ103が保持するセッション情報を要求元のサーバ102に送信する。たとえば、要求元のサーバ102がハングアップ等による処理待ちが生じた場合に、サーバ102がセッションバックアップサーバ103にバックアップするセッション情報を送信できない状態であるか否かを判断するために所定時間の待機をおこなう。
セッション情報の引継ぎ確認の受信部607は、スケールイン対象のサーバからセッション情報の引継ぎ確認の要求を受け付ける。この場合、セッション情報管理部609は、セッション情報管理テーブル601のバックアップ元サーバを参照し、他のサーバ102の場合、「引継ぎ済み」と判断する。バックアップ元サーバが自サーバの場合は「引継ぎ未」(引継ぎ済みでない)と判断する。
そして、セッション情報管理部609は、セッション情報の引継ぎ確認の結果送信部608を介して、上記セッション情報の引継ぎ確認の結果をスケールイン対象のサーバ102に送信する。
図7は、セッションバックアップサーバのセッション情報管理テーブルの一例を示す説明図である。図7に示すように、セッション情報管理テーブル601には、上記同様に3つのセッションID(session_A〜session_C)毎のセッション情報と、バックアップ元サーバと、バックアップ状況の情報が更新可能に設定されている。
図7を用いて、セッション情報管理テーブルの遷移例について説明する。セッション情報管理部609によるセッション情報管理テーブル601の情報の変化を経時的に説明する。
はじめに、図7(a)は、スケールインが生じていない状態を示し、3台のサーバ1〜3(102)に対応して、セッションID毎のセッション情報と、バックアップ元サーバ1〜3(102)の情報が保持されている。
つぎに、図7(b)に示すように、サーバ102(サーバ2)のスケールイン通知により、該当するセッション(session_B)のセッション情報の要求がサーバ102(サーバ1)から来たとする。この場合、セッション情報管理部609は、セッション情報管理テーブル601の該当するセッション(session_B)のバックアップ状況を「サーバ2に要求中」に変更する。
つぎに、図7(c)には、サーバ102(サーバ2)のハングアップにより、セッション情報のバックアップ要求を中止した場合、または、サーバ102(サーバ2)が通常動作してセッション情報のバックアップ要求が完了した状態を示す。この場合、セッション情報管理部609は、セッション情報管理テーブル601の該当するセッション(session_B)のバックアップ状況を「完了」、バックアップ元サーバを「サーバ1」に変更する。この状態でサーバ1にバックアップ元の設定が完了したことを示す。
つぎに、図7(c)に示すように、サーバ102(サーバ2)がハングアップから復帰すると、サーバ102(サーバ2)からセッション(session_B)の引継ぎ確認が送信される。この際、セッション情報管理部609は、セッション情報管理テーブル601の該当するセッション(session_B)のバックアップ元サーバがサーバ102(サーバ1)であるため、サーバ102(サーバ2)に対し、引継ぎ済みと送信する。
つぎに、図7(d)に示すように、サーバ102(サーバ1)のスケールイン通知後、セッション情報管理テーブル601の該当するセッション(session_B)のバックアップ状況を「空」に変更する。
つぎに、図7(e)に示すように、サーバ102(サーバ3)から該当するセッション(session_B)の要求が来ると、セッション情報管理部609は、サーバ102(サーバ1)からセッション情報を取得する。そして、セッション情報管理部609は、セッション情報管理テーブル601の該当するセッション(session_B)のバックアップ状況を「完了」、バックアップ元サーバを「サーバ3」に変更する。
なお、図7に示すセッション情報管理テーブル601のバックアップ状況の「完了」の情報は作成しなくてもよい。「完了」時にはバックアップ元サーバの情報が更新されているため、セッション情報管理部609は、バックアップ元サーバの情報を参照してセッション情報がバックアップされたサーバ102を判断できる。
図8は、実施の形態にかかる制御システムの各装置のハードウェア構成の一例を示すブロック図である。システム100のロードバランサ101、サーバ102、セッションバックアップサーバ103、クラウド運用監視部104、およびクライアント110は、それぞれ図8に示すハードウェアを用いることができる。
たとえば、サーバ102は、CPU(Central Processing Unit)801、メモリ802、ネットワークインタフェース(IF)803、記録媒体IF804、記録媒体805、を含む。800は各部を接続するバスである。
CPU801は、サーバ102の全体の制御を司る演算処理装置である。メモリ802は、不揮発性メモリおよび揮発性メモリを含む。不揮発性メモリは、たとえば、CPU801のプログラムを格納するROM(Read Only Memory)である。揮発性メモリは、たとえば、CPU801のワークエリアとして使用されるDRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等である。
ネットワークIF803は、ネットワーク830を通じてシステム100の他の装置(ロードバランサ101、セッションバックアップサーバ103、クラウド運用監視部104)との間で処理に必要な情報(上記のリクエストやセッション情報等)を送受信する。ネットワークIF803は、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク830を介して他の装置に通信接続される。
記録媒体IF804は、CPU801が処理した情報を記録媒体805との間で読み書きするためのインタフェースである。記録媒体805は、メモリ802を補助する記録装置であり、たとえば、HDD(Hard Disk Drive)や、SSD(Solid State Drive)、フラッシュドライブ等を用いることができる。
メモリ802または記録媒体805に記録されたプログラムをCPU801が実行することにより、図4に示したサーバ102のセッション情報管理部414を含む各機能部の機能を実現する。また、メモリ802や記録媒体805は、図4に示したセッション情報管理テーブル404、および非同期バックアップ依頼キュー405の情報を更新可能に保持する。
図8に示したハードウェア構成は、他の装置であるロードバランサ101(図2参照、セッションバックアップサーバ103(図6参照)、クラウド運用監視部104、およびクライアント110についても同様に適用することができる。また、ロードバランサ101、およびクラウド運用監視部104は、所定のサーバの一部機能として専用のハードウェアあるいは同様の機能を実現するソフトウェアで構成してもよい。これらいずれの装置においても、CPU801を用いてプログラム実行する場合、CPU801がメモリ802や記録媒体805から読み出したプログラムを実行することにより、それぞれの装置の機能を実現することができる。
(システムの動作処理例)
つぎに、上述したシステム100の動作処理例について説明する。はじめに、サーバ102の動作処理例について説明する。
図9〜図12は、サーバの動作処理の一例を示すフローチャートである。これらの図9〜図12に示す処理は、サーバ102に設けられたセッション情報管理部414(図8のCPU801)が統括し、他の機能部と協働して実行する。
図9は、サーバ102がおこなうクライアント110からのリクエスト処理例である。はじめに、サーバ102は、クライアント110から送信されたリクエストを受信する(ステップS901)。つぎに、サーバ102は、リクエストに対するレスポンスをクライアント110に送信する(ステップS902)。つぎに、サーバ102は、リクエストのセッション情報を非同期バックアップ依頼キュー405に格納し(ステップS903)、ステップS901の処理に戻り、以後、ステップS901〜S903の各処理を繰り返し実行する。
図10は、サーバ102がリクエストと非同期にセッション情報のバックアップをおこなう処理例である。はじめに、サーバ102は、非同期バックアップ依頼キュー405の監視を開始する(ステップS1001)。つぎに、サーバ102は、非同期バックアップ依頼キュー405にセッション情報があるかを判断する(ステップS1002)。
サーバ102は、非同期バックアップ依頼キュー405にセッション情報があれば(ステップS1002:Yes)、ステップS1003の処理に移行する。一方、非同期バックアップ依頼キュー405にセッション情報がなければ(ステップS1002:No)、ステップS1002の処理を再実行する。ステップS1003では、サーバ102は、非同期バックアップ依頼キュー405からセッション情報を取得し、セッションバックアップサーバ103へ送信し(ステップS1003)、ステップS1002の処理に戻り、以後、ステップS1002とS1003の各処理を繰り返し実行する。
図11は、サーバ102がスケールイン通知を受信後、全セッション情報のバックアップをおこなう処理例である。はじめに、サーバ102は、クラウド運用監視部104からスケールイン通知を受信すると(ステップS1101)、非同期バックアップ(図10参照)の処理を停止する(ステップS1102)。
つぎに、サーバ102は、セッション情報管理テーブル404にバックアップ未実施のセッション情報があるか否かを判断する(ステップS1103)。バックアップ未実施のセッション情報がなければ(ステップS1103:No)、サーバ102は、スケールイン通知に基づく停止処理を開始し(ステップS1104)、一連の処理を終了する。
一方、バックアップ未実施のセッション情報があれば(ステップS1103:Yes)、サーバ102は、セッション情報管理テーブル404を参照する。そして、バックアップ未使用に該当するセッション情報の使用状況が「不使用」の状態であるか否かを判断する(ステップS1105)。判断の結果、セッション情報の使用状況が「不使用」の状態でなければ(ステップS1105:No)、サーバ102は、ステップS1103の処理に戻る。
一方、該当するセッション情報の使用状況が「不使用」の状態であれば(ステップS1105:Yes)、サーバ102は、セッション情報管理テーブル404から該当するセッション情報を取得する(ステップS1106)。
つぎに、サーバ102は、所得したセッション情報が他サーバ102に引継ぎ済みであるか、セッションバックアップサーバ103に確認依頼を送信する(ステップS1107)。そして、サーバ102は、セッションバックアップサーバ103から送信される確認結果に基づき、セッション情報を他サーバ102に引継ぎ済みであるか否かを判断する(ステップS1108)。
そして、サーバ102は、セッション情報を他サーバ102に引継ぎ済みであれば(ステップS1108:Yes)、該当するセッション情報をセッションバックアップサーバ103にバックアップせずに破棄する(ステップS1109)。一方、セッション情報を他サーバ102に引継ぎ済みでなければ(ステップS1108:No)、該当するセッション情報をセッションバックアップサーバ103に送信し、バックアップする(ステップS1110)。ステップS1109、またはステップS1110の処理後、サーバ102はステップS1103の処理に戻る。
なお、ステップS1110ですべてのセッション情報がバックアップされた後は、ステップS1103の処理でバックアップ未実施のセッション情報がなくなり(ステップS1103:No)、サーバ102は停止処理を開始して動作停止する。
図12は、サーバ102がセッションバックアップサーバ103からセッション情報のバックアップの要求を受信した場合の処理例である。はじめに、サーバ102は、セッションバックアップサーバ103からセッション情報のバックアップ要求を受信すると(ステップS1201)、セッション情報管理テーブル404を参照する。そして、該当するセッション情報の使用状況が「不使用」の状態であるか否かを判断する(ステップS1202)。判断の結果、セッション情報の使用状況が「不使用」であれば(ステップS1202:Yes)、ステップS1203以下の処理を実行し、セッション情報の使用状況が「不使用」でなければ(ステップS1202:No)、ステップS1202の処理を再実行する。
ステップS1203では、サーバ102は、セッション情報管理テーブル404から該当するセッション情報を取得する(ステップS1203)。そして、サーバ102は、該当するセッション情報が他サーバ102に引継ぎ済みであるか確認のために、セッションバックアップサーバ103に確認依頼を送信する(ステップS1204)。
そして、サーバ102は、セッションバックアップサーバ103から送信される確認結果に基づき、セッション情報を他サーバ102に引継ぎ済みであるか否かを判断する(ステップS1205)。
そして、サーバ102は、セッション情報を他サーバ102に引継ぎ済みであれば(ステップS1205:Yes)、該当するセッション情報をセッションバックアップサーバ103にバックアップせずに破棄する(ステップS1206)。一方、セッション情報を他サーバ102に引継ぎ済みでなければ(ステップS1205:No)、該当するセッション情報をセッションバックアップサーバ103に送信し、バックアップする(ステップS1207)。ステップS1206またはステップS1207の処理を実行した後、一連の処理を終了する。
つぎに、セッションバックアップサーバ103の動作処理例について説明する。図13〜図15は、セッションバックアップサーバの動作処理の一例を示すフローチャートである。これら図13〜図15に示す処理は、セッションバックアップサーバ103に設けられたセッション情報管理部609(図8のCPU801)が統括し、他の機能部と協働して実行する。
図13は、セッションバックアップサーバ103がスケールイン対象のサーバのセッション情報のバックアップの処理例である。はじめに、セッションバックアップサーバ103は、クラウド運用監視部104からスケールイン対象のサーバ102のスケールイン通知を受信する(ステップS1301)。
つぎに、セッションバックアップサーバ103は、セッション情報管理テーブル601のスケールイン対象のサーバ102のバックアップ状況を「空」に変更する(ステップS1302)。つぎに、セッションバックアップサーバ103は、スケールイン対象のサーバ102から送信される全セッション情報のバックアップの受信を開始する(ステップS1303)。
つぎに、セッションバックアップサーバ103は、スケールイン対象のサーバ102から送信される全セッション情報のバックアップの受信が完了したか否かを判断する(ステップS1304)。判断の結果、全セッション情報のバックアップの受信が完了すれば(ステップS1304:Yes)、以上の処理を終了する。一方、全セッション情報のバックアップの受信が完了していなければ(ステップS1304:No)、セッションバックアップサーバ103は、全セッション情報のバックアップの受信を継続し(ステップS1305)、ステップS1304の処理に戻る。
図14は、セッションバックアップサーバ103がスケールイン対象のサーバ102から、セッション情報が他サーバ102に引継ぎ済みか確認依頼を受信した際の処理例である。はじめに、セッションバックアップサーバ103は、スケールインしたサーバ102からセッション情報が他サーバ102に引継ぎ済みか確認依頼を受信する(ステップS1401)。
つぎに、セッションバックアップサーバ103は、セッション情報管理テーブル601を参照し、バックアップ元サーバが確認依頼を送信してきたサーバ102であるか否かを一致判断する(ステップS1402)。一致判断の結果、バックアップ元サーバが確認依頼を送信してきたサーバ102であれば(ステップS1402:Yes)、セッション情報が他サーバ102に「引継ぎ未」である旨を、確認依頼を送信してきたサーバ102に送信する(ステップS1403)。
一方、バックアップ元サーバが確認依頼を送信してきたサーバ102でなければ(ステップS1402:No)、セッション情報が他サーバ102に「引継ぎ済み」である旨を、確認依頼を送信してきたサーバ102に送信する(ステップS1404)。ステップS1403、またはステップS1403の処理後、セッションバックアップサーバ103はステップS1401の処理に戻る。
図15は、セッションバックアップサーバ103がスケールイン対象外のサーバ102からセッション情報の取得要求を受信した際の処理例である。はじめに、セッションバックアップサーバ103は、クラウド運用監視部104からサーバ102がスケールインしたスケールイン通知を受信する(ステップS1501)。これにより、セッションバックアップサーバ103は、セッション情報管理テーブル601のスケールイン対象のサーバ102のバックアップ状況が「空」に変更済みであるか否かを確認する(ステップS1502)。
ここで、「空」に変更済みになるのを待って(ステップS1502:No)、変更済みになった場合(ステップS1502:Yes)に、セッションバックアップサーバ103は、スケールイン対象外のサーバ102からセッション情報取得要求を受信する(ステップS1503)。そして、セッションバックアップサーバ103は、セッション情報管理テーブル601を参照し、要求されたセッション情報のバックアップが「完了」となっているか否かを判断する(ステップS1504)。
判断の結果、要求されたセッション情報のバックアップが「完了」であれば(ステップS1504:Yes)、セッションバックアップサーバ103は、ステップS1508の処理に移行する。一方、「完了」でなければ(ステップS1504:No)、ステップS1505の処理に移行する。
ステップS1505では、セッションバックアップサーバ103は、スケールイン対象のサーバ102にセッション情報のバックアップを要求する(ステップS1505)。つぎに、セッションバックアップサーバ103は、スケールイン対象のサーバ102から、要求したセッション情報のバックアップを受信したか否かを判断する(ステップS1506)。
判断の結果、スケールイン対象のサーバ102から、要求したセッション情報のバックアップを受信すれば(ステップS1506:Yes)、セッションバックアップサーバ103は、ステップS1508の処理に移行する。一方、要求したセッション情報のバックアップを受信していなければ(ステップS1506:No)、スケールイン対象のサーバ102からのバックアップ完了待ちの状態となるが、この完了待ちを中止する(ステップS1507)。そして、セッションバックアップサーバ103は、ステップS1508の処理に移行する。
ステップS1508では、セッション情報取得要求してきたスケールイン対象外のサーバ102へセッションバックアップサーバ103が持つセッション情報を送信し(ステップS1508)、以上の処理を終了する。この際、セッションバックアップサーバ103は、セッション情報管理テーブル601を参照してセッション情報を送信する。
図16A〜図16Cは、実施の形態にかかるシステムによるセッション情報の処理の一例を説明する図である。セッション情報の処理順に従って説明する。これら図16A〜図16Cに示すシステム構成は、図1同様であり、上述したように、スケールイン対象のサーバ102(サーバ2)でハングアップが生じたとする。また、サーバ102のセッション情報管理テーブル404は図5のように遷移し、セッションバックアップサーバ103のセッション情報管理テーブル601は、図7のように遷移する。図16中、×印はスケールインによるサーバ停止を示す。
はじめに、図16Aに示すように、クライアント110がリクエストを送信する(S1)。ロードバランサ101は、リクエストの振り分けにより、たとえば、サーバ102(サーバ2)に振り分ける(S2)。ここで、リクエストを受け付けたサーバ102(サーバ2)がハングアップしたとする(S3)。この後、クラウド運用監視部104がサーバ102(サーバ2)のスケールイン通知をシステム100内の各装置(ロードバランサ101、サーバ(102)、セッションバックアップサーバ103)に出力する(S4)。
この後、クライアント110が新たなリクエストを送信したとする(S5)。ロードバランサ101は、このリクエストをサーバ102(サーバ1)に振り分ける(S6)。ここで、サーバ102(サーバ2)がサーバ102(サーバ1)のセッション情報を引継ぐとする。この場合、サーバ102(サーバ1)は、セッション情報がないので、セッションバックアップサーバ103にセッション情報を要求する(S7)。セッションバックアップサーバ103は、スケールイン対象のサーバ102(サーバ1)に最新のセッション情報Aを要求する(S8)。
セッションバックアップサーバ103は、スケールイン対象のサーバ102(サーバ2)がハングアップしているため、ハングアップから復帰していないと判断する(S9)。そしてセッションバックアップサーバ103は、S8の要求に基づくバックアップ完了待ち(サーバ2のセッション情報のバックアップ)を中止する。この後、セッションバックアップサーバ103は、セッション情報管理テーブル601が保持する(一世代古い)セッション情報A’をサーバ102(サーバ1)に送信する。
この後、図16Bに示すように、サーバ102(サーバ1)は新たなリクエストにより、セッション情報A’を更新し、セッション情報A’を最新のセッション情報として保持する(S11)。そして、サーバ102(サーバ1)は、最新のセッション情報A’をセッションバックアップサーバ103にバックアップする(S12)。これにより、セッションバックアップサーバ103は、保持するセッション情報A’をリクエスト後のセッション情報A’に変わる。
この後、サーバ102(サーバ2)がハングアップから復旧すると、保持していたセッション情報Aを更新する(S13)。ここで、サーバ102(サーバ2)は、セッション情報Aが他サーバ102に引継ぎ済みかをセッションバックアップサーバ103に確認する(S14)。セッションバックアップサーバ103は、セッション情報Aが他サーバ(サーバ1)で引継ぎ済みであることをサーバ102(サーバ2)に通知する(S15)。
これにより、サーバ102(サーバ2)は、保持していたセッション情報Aのバックアップを中止し、セッション情報Aを破棄する(S16)。
この後、図16Cに示すように、クラウド運用監視部104により、サーバ102(サーバ1)がスケールインし、各装置にサーバ102(サーバ1)のスケールイン通知をおこなったとする(S17)。この後、クライアント110が新たなリクエストを送信すると(S18)、ロードバランサ101は、このリクエストを処理可能なサーバ102(サーバ3)に振り分ける(S19)。
サーバ102(サーバ3)は、セッション情報がないので、セッションバックアップサーバ103にセッション情報を要求する(S20)。これに対応して、セッションバックアップサーバ103は、サーバ102(サーバ1)に最新セッション情報を要求する(S21)。そして、セッションバックアップサーバ103は、サーバ102(サーバ1)が持つセッション情報A’を取得する(S22)。そして、セッションバックアップサーバ103は、取得したセッション情報A’をサーバ102(サーバ3)に送信する(S23)。以上により、実施の形態によれば、セッション情報の入れ替わり(A’→A)が生じることがなく、セッション情報A’を一貫して使い続けることができる。
図17は、実施の形態にかかるシステムによるセッション情報の遷移の具体例を示す説明図である。クライアント110によるユーザの商品購入時の操作とセッション情報の処理状態を時系列に説明する。
1.ユーザが買い物かごに商品Xを追加した。(リクエスト)
2.1の操作後のページ遷移でブラウザが固まったとする。たとえば、リクエストに対し上述したサーバ2のハングアップが生じたために処理待ち状態が生じる。
3.ユーザが新規タブを開くと、買い物かごに商品Xが追加されていない。この状態は、システム100が新たなサーバ1でリクエスト処理をし、商品X追加前のセッションA’をセッションバックアップサーバ103から取得したために生じる。
4.ユーザが改めて買い物かごに商品Xを追加する操作をおこなう。(新たなリクエスト)
5.ユーザにより商品Xを追加する操作が完了する。これにより、買い物かごに商品Xがある。
6.ユーザが買い物かごに別の商品Yを追加する操作をおこなう。
7.ユーザにより商品Yを追加する操作が完了する。これにより、買い物かごに商品X、Yがある。
8.ユーザが買い物かごに別の商品Zを追加する操作をおこなう。(新たなリクエスト)
9.ユーザにより商品Zを追加する操作が完了する。これにより、買い物かごに商品X、Y、Zがある。この状態は、システム100が新たなサーバ3でリクエスト処理をし、セッションA’を取得したことに基づく。以上のように、実施の形態によれば、リクエスト処理の状態の一貫性を保つことができる。
(従来技術の問題)
つぎに、従来技術によるセッション情報の処理で生じる問題について説明する。図18は、従来技術によるシステムの全体構成例を示す説明図である。図18に示す従来技術のシステム1800は、実施の形態(図1等参照)と同様に配置された各装置を備える。
従来技術のシステム1800は、スケールイン通知後にセッションバックアップサーバ1803がスケールインで停止するサーバ2(1802)からセッション情報Aを取得し、バックアップする。そして、断続的にリクエストが来る状況でも、最新のセッション情報Aで他サーバ1、3(1802)によりリクエストの処理を続行する。
この従来技術のシステム1800では、スケールイン時にスケールイン対象のサーバ1802にハングアップが生じた後に、セッション情報が入れ替わる問題が生じる。
図19A〜図19Cは、従来技術のシステムにより生じるセッション情報の不整合を説明する図である。はじめに、図19Aに示すように、クライアント1810がリクエストを送信する(s1)。ロードバランサ1801は、リクエストの振り分けにより、たとえば、サーバ2(1802)に振り分ける(s2)。ここで、リクエストを受け付けたサーバ2(1802)がハングアップしたとする(s3)。この後、クラウド運用監視部104がサーバ2(1802)のスケールイン通知をシステム1800内の各装置(ロードバランサ1801、サーバ(1802)、セッションバックアップサーバ1803)に出力する(s4)。
この後、クライアント1810が新たなリクエストを送信したとする(s5)。ロードバランサ1801は、このリクエストをサーバ1(1802)に振り分ける(s6)。ここで、サーバ2(1802)がサーバ1(1802)のセッション情報を引継ぐとする。この場合、サーバ1(1802)は、セッション情報がないので、セッションバックアップサーバ1803にセッション情報を要求する(s7)。セッションバックアップサーバ1803は、スケールイン対象のサーバ1(1802)に最新のセッション情報Aを要求する(s8)。
セッションバックアップサーバ1803は、スケールイン対象のサーバ2(1802)がハングアップしているため、ハングアップから復帰していないと判断する(s9)。そしてセッションバックアップサーバ1803は、s8の要求に基づくバックアップ完了待ち(サーバ2のセッション情報のバックアップ)を中止する。この後、セッションバックアップサーバ1803は、保持する(一世代古い)セッション情報A’をサーバ1(1802)に送信する。
この後、図19Bに示すように、サーバ1(1802)は新たなリクエストにより、セッション情報A’を更新し、セッション情報A’を最新のセッション情報として保持する(s11)。そして、サーバ1(1802)は、最新のセッション情報A’をセッションバックアップサーバ1803にバックアップする(s12)。これにより、セッションバックアップサーバ1803は、保持するセッション情報がリクエスト後のセッション情報A’に変わる。
この後、サーバ2(1802)がハングアップから復旧すると、保持していたセッション情報Aを更新する(s13)。そして、サーバ2(1802)は、セッション情報Aをセッションバックアップサーバ1803にバックアップする(s14)。これにより、セッションバックアップサーバ1803は、保持するセッション情報がセッション情報Aに変わる。
この後、図19Cに示すように、クラウド運用監視部104により、サーバ1(1802)がスケールインし、各装置にサーバ1(1802)のスケールイン通知をおこなったとする(s15)。この後、クライアント1810が新たなリクエストを送信すると(s16)、ロードバランサ1801は、このリクエストを処理可能なサーバ3(1802)に振り分ける(s17)。
サーバ3(1802)は、セッション情報がないので、セッションバックアップサーバ103にセッション情報を要求する(s18)。これに対応して、セッションバックアップサーバ1803は、サーバ3(1802)に最新セッション情報を要求する(s19)。そして、セッションバックアップサーバ1803は、サーバ1(1802)が持つセッション情報Aを取得する(s20)。そして、セッションバックアップサーバ1803は、取得したセッション情報Aをサーバ3(1802)に送信する。このように、従来技術では、セッション情報の入れ替わり(A’→A)が生じ、セッション情報の一貫性がなくなってしまう。
図20は、従来技術のシステムによるセッション情報の不整合の具体例を説明する図である。クライアント1810によるユーザの商品購入時の操作とセッション情報の処理状態を時系列に説明する。
1.ユーザが買い物かごに商品Xを追加した。
2.1の操作後のページ遷移でブラウザが固まったとする。たとえば、リクエストに対し上述したサーバ2のハングアップが生じたために処理待ち状態が生じる。
3.ユーザが新規タブを開くと、買い物かごに商品Xが追加されていない。この状態は、システム1800が新たなサーバ1でリクエスト処理をし、商品X追加前のセッションA’をセッションバックアップサーバ1803から取得したために生じる。
4.ユーザが改めて買い物かごに商品Xを追加する操作をおこなう。
5.ユーザにより商品Xを追加する操作が完了する。これにより、買い物かごに商品Xがある。
6.ユーザが買い物かごに別の商品Yを追加する操作をおこなう。
7.ユーザにより商品Yを追加する操作が完了する。これにより、買い物かごに商品X、Yがある。
8.ユーザが買い物かごに別の商品Zを追加する操作をおこなう。
9.ユーザにより商品Zを追加する操作が完了する。この際、買い物かごに商品X、Zはあるが、商品Yがない。この状態は、システム1800が新たなサーバ3でリクエスト処理をし、上記2.の処理を完了したセッション情報Aを取得したことに基づく。
以上のように、従来技術では、リクエスト処理の状態の一貫性を保つことができない。
以上説明したように、実施の形態によれば、各サーバ102は、セッションバックアップサーバ103に対し、生成したセッション情報を順次送信してバックアップする。そして、スケールイン対象のサーバ102は、セッションバックアップサーバ103に送信した最新のセッション情報が、処理を引き継ぐ他のサーバに提供されたか否かをセッションバックアップサーバ103に確認する。そして、セッションバックアップサーバ103からの応答が、最新のセッション情報が他のサーバ102に提供されていれば最新のセッション情報よりも後に生成されるセッション情報のセッションバックアップサーバ103への送信を抑制する。
また、セッションバックアップサーバ103側では、スケールイン対象のサーバ102(サーバ2)にある最新のセッション情報を取得するリクエストを送信する。この際、サーバ102(サーバ2)からリクエストの応答がない場合、ハングアップのため最新のセッション情報を取得できないと判断し、セッションバックアップサーバ103は、一世代古いセッション情報A’を送信する。
そして、リクエストを新しく振り分けられたサーバ102(サーバ1、3)は、セッションA’を最新セッションとして使用する。その後、スケールイン対象のサーバ102(サーバ2)のハングアップが解消したとする。この場合、サーバ102(サーバ2)は、セッション情報Aをセッションバックアップサーバ103へバックアップする前に、セッション情報Aが他のサーバ102(サーバ1、3)に引継ぎ済みかを確認するリクエストをセッションバックアップサーバ103へ送信する。確認の結果、引継ぎ済みであれば、サーバ102(サーバ2)は、セッション情報Aのバックアップを中止し、セッション情報Aを破棄する。すなわち、セッション情報のセッションバックアップサーバ103への送信を抑制する。
これにより、実施の形態では、あるサーバで生じたハングアップにより、新たなリクエストを他のサーバで処理する際、他のサーバは、セッションバックアップサーバから適切なセッション情報を取得できるようになる。そして、システムの複数のサーバが用いるセッション情報の入れ替わりが生じることがないため、リクエスト処理に一貫性を持たせることができるようになる。たとえば、ユーザの要求したリクエストに対する処理に対応した応答をユーザに返すことができ、ユーザの処理に対応した処理を正確に実行して、ユーザに提供できるようになる。
また、サーバは、セッション情報をセッションの識別子と、前記セッションの内容と、前記セッションの使用状態、の各情報を関連付けたセッション情報管理テーブルを用い、前記セッション毎の使用状態に応じて更新して使用する。これにより、前記リクエスト、前記セッション情報のバックアップ、および前記セッション情報の前記他のサーバへの提供の有無の状態を簡単に判断できる。
そして、クラウド上の複数のサーバを使用するシステムでは、稼働するサーバ数に応じた課金が発生するが、スケールイン/スケールアウトのシステムにより、稼働するサーバ数を削減でき、システム運用にかかるコストを削減できる。実施の形態では、このようなスケールイン/スケールアウトをおこなうシステムに適用した場合に、システム内のあるサーバでハングアップが生じた場合でも、影響を受けずにリクエスト処理の一貫性を保つことができるようになる。
なお、本発明の実施の形態で説明した制御プログラムは、あらかじめ用意されたプログラムをサーバ等のプロセッサに実行させることにより実現することができる。本制御方法は、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)、フラッシュメモリ、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本制御方法は、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)スケールインにより処理対象から除外されたサーバから受信済みのセッション情報をスケールイン後も処理をおこなうサーバに提供可能なバックアップサーバに対して、自サーバが生成したセッション情報を順次送信し、
複数のサーバのうち前記自サーバがスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップサーバから他のサーバに提供されたか否かを示す情報の送信要求を前記バックアップサーバに送信し、
前記送信要求の送信に応じて、前記バックアップサーバから受信した応答が、前記最新のセッション情報が前記他のサーバに提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップサーバへの送信を抑制する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
(付記2)前記バックアップサーバから前記セッション情報のバックアップの要求を受信した場合、
保持する前記セッション情報が前記他のサーバに提供済みか否かを前記バックアップサーバに確認要求を送信し、
前記バックアップサーバから受信した応答が前記他のサーバに提供されていないことを示す場合、前記セッション情報を前記バックアップサーバに送信し、
前記バックアップサーバから受信した応答が前記他のサーバに提供されていることを示す場合、前記セッション情報の前記バックアップサーバへの送信を抑制する、
処理をコンピュータに実行させることを特徴とする付記1に記載の制御プログラム。
(付記3)スケールインにより自サーバが処理主体から除外となることを検知すると、保持するすべての前記セッション情報を前記バックアップサーバに送信した後、自サーバの停止処理を開始させる、
処理をコンピュータに実行させることを特徴とする付記1または2に記載の制御プログラム。
(付記4)前記スケールインの対象とされ、前記セッション情報の処理が一時的に中断する状態が生じた後の復旧時、前記セッション情報を前記バックアップサーバに送信する前に、前記セッション情報が前記バックアップサーバから前記他のサーバに提供されたか否かを示す情報の送信要求を前記バックアップサーバに送信する、
処理をコンピュータに実行させることを特徴とする付記1〜3のいずれか一つに記載の制御プログラム。
(付記5)前記セッション情報をセッションの識別子と、前記セッションの内容と、前記セッションの使用状態、の各情報を関連付けたテーブルを、前記セッション毎の使用状態に応じて更新させ、リクエスト、前記セッション情報のバックアップ、および前記セッション情報の前記他のサーバへの提供の有無の状態をそれぞれ判断させることを特徴とする付記1〜4のいずれか一つに記載の制御プログラム。
(付記6)バックアップサーバが、スケールイン対象となり処理対象から除外されたサーバから受信済みのセッション情報をスケールイン後も処理をおこなうサーバに提供し、
複数のサーバのうちスケールイン対象となるサーバから、最新のセッション情報が他のサーバに提供されたか否かを示す情報の送信要求に応じて、前記最新のセッション情報が他のサーバに提供されたか否かを示す情報をスケールイン対象の前記サーバに応答する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
(付記7)スケールインにより処理対象から除外されたサーバから受信済みのセッション情報をスケールイン後も処理をおこなうサーバに提供可能なバックアップサーバに対して、自サーバが生成したセッション情報を順次送信し、
複数のサーバのうち前記自サーバがスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップサーバから他のサーバに提供されたか否かを示す情報の送信要求を前記バックアップサーバに送信し、
前記送信要求の送信に応じて、前記バックアップサーバから受信した応答が、前記最新のセッション情報が前記他のサーバに提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップサーバへの送信を抑制する、
処理をコンピュータが実行することを特徴とする制御方法。
(付記8)スケールインにより処理対象から除外された情報処理装置から受信済みのセッション情報をスケールイン後も処理をおこなう情報処理装置に提供可能なバックアップ装置に対して、自情報処理装置が生成したセッション情報を順次送信する情報処理装置であって、
複数の情報処理装置のうち前記自情報処理装置がスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップ装置から他の情報処理装置に提供されたか否かを示す情報の送信要求を前記バックアップ装置に送信し、
前記送信要求の送信に応じて、前記バックアップ装置から受信した応答が、前記最新のセッション情報が前記他の情報処理装置に提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップ装置への送信を抑制する制御部、
を備えたことを特徴とする情報処理装置。
(付記9)情報処理装置と、バックアップ装置とを含むシステムであって、
前記情報処理装置は、
スケールインにより処理対象から除外された情報処理装置から受信済みのセッション情報をスケールイン後も処理をおこなう情報処理装置に提供可能なバックアップ装置に対して、自情報処理装置が生成したセッション情報を順次送信し、
複数の情報処理装置のうち前記自情報処理装置がスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップ装置から他の情報処理装置に提供されたか否かを示す情報の送信要求を前記バックアップ装置に送信し、
前記送信要求の送信に応じて、前記バックアップ装置から受信した応答が、前記最新のセッション情報が前記他の情報処理装置に提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップ装置への送信を抑制する制御部を備え、
前記バックアップ装置は、
スケールイン対象となり処理対象から除外された前記情報処理装置から受信済みのセッション情報をスケールイン後も処理をおこなう情報処理装置に提供し、
複数の情報処理装置のうちスケールイン対象となる情報処理装置から、最新のセッション情報が前記他の情報処理装置に提供されたか否かを示す情報の送信要求に応じて、前記最新のセッション情報が前記他の情報処理装置に提供されたか否かを示す情報をスケールイン対象の前記情報処理装置に応答する制御部を備えた、
ことを特徴とするシステム。
100 システム
101 ロードバランサ
102 サーバ
103 セッションバックアップサーバ
104 クラウド運用監視部
110 クライアント
120、830 ネットワーク
201、401 リクエスト受付部
202 振分部
203 振分先管理テーブル
204、409 負荷状況監視部
205、410、605 スケールイン通知受付部
206 振分先変更部
402 リクエスト処理部
403 レスポンス送信部
404、601 セッション情報管理テーブル
405 非同期バックアップ依頼キュー
412 セッション情報の引継ぎ確認の送信部
413 セッション情報の引継ぎ確認の結果受信部
414、609 セッション情報管理部
607 セッション情報の引継ぎ確認の受信部
608 セッション情報の引継ぎ確認の結果送信部
801 CPU
802 メモリ
805 記録媒体

Claims (8)

  1. スケールインにより処理対象から除外されたサーバから受信済みのセッション情報をスケールイン後も処理をおこなうサーバに提供可能なバックアップサーバに対して、自サーバが生成したセッション情報を順次送信し、
    複数のサーバのうち前記自サーバがスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップサーバから他のサーバに提供されたか否かを示す情報の送信要求を前記バックアップサーバに送信し、
    前記送信要求の送信に応じて、前記バックアップサーバから受信した応答が、前記最新のセッション情報が前記他のサーバに提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップサーバへの送信を抑制する、
    処理をコンピュータに実行させることを特徴とする制御プログラム。
  2. 前記バックアップサーバから前記セッション情報のバックアップの要求を受信した場合、
    保持する前記セッション情報が前記他のサーバに提供済みか否かを前記バックアップサーバに確認要求を送信し、
    前記バックアップサーバから受信した応答が前記他のサーバに提供されていないことを示す場合、前記セッション情報を前記バックアップサーバに送信し、
    前記バックアップサーバから受信した応答が前記他のサーバに提供されていることを示す場合、前記セッション情報の前記バックアップサーバへの送信を抑制する、
    処理をコンピュータに実行させることを特徴とする請求項1に記載の制御プログラム。
  3. スケールインにより前記自サーバが処理主体から除外となることを検知すると、保持するすべての前記セッション情報を前記バックアップサーバに送信した後、自サーバの停止処理を開始させる、
    処理をコンピュータに実行させることを特徴とする請求項1または2に記載の制御プログラム。
  4. 前記スケールインの対象とされ、前記セッション情報の処理が一時的に中断する状態が生じた後の復旧時、前記セッション情報を前記バックアップサーバに送信する前に、前記セッション情報が前記バックアップサーバから前記他のサーバに提供されたか否かを示す情報の送信要求を前記バックアップサーバに送信する、
    処理をコンピュータに実行させることを特徴とする請求項1〜3のいずれか一つに記載の制御プログラム。
  5. 前記セッション情報をセッションの識別子と、前記セッションの内容と、前記セッションの使用状態、の各情報を関連付けたテーブルを、前記セッション毎の使用状態に応じて更新させ、リクエスト、前記セッション情報のバックアップ、および前記セッション情報の前記他のサーバへの提供の有無の状態をそれぞれ判断させることを特徴とする請求項1〜4のいずれか一つに記載の制御プログラム。
  6. バックアップサーバが、スケールイン対象となり処理対象から除外されたサーバから受信済みのセッション情報をスケールイン後も処理をおこなうサーバに提供し、
    複数のサーバのうちスケールイン対象となるサーバから、最新のセッション情報が他のサーバに提供されたか否かを示す情報の送信要求に応じて、前記最新のセッション情報が他のサーバに提供されたか否かを示す情報をスケールイン対象の前記サーバに応答する、
    処理をコンピュータに実行させることを特徴とする制御プログラム。
  7. スケールインにより処理対象から除外されたサーバから受信済みのセッション情報をスケールイン後も処理をおこなうサーバに提供可能なバックアップサーバに対して、自サーバが生成したセッション情報を順次送信し、
    複数のサーバのうち前記自サーバがスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップサーバから他のサーバに提供されたか否かを示す情報の送信要求を前記バックアップサーバに送信し、
    前記送信要求の送信に応じて、前記バックアップサーバから受信した応答が、前記最新のセッション情報が前記他のサーバに提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップサーバへの送信を抑制する、
    処理をコンピュータが実行することを特徴とする制御方法。
  8. スケールインにより処理対象から除外された情報処理装置から受信済みのセッション情報をスケールイン後も処理をおこなう情報処理装置に提供可能なバックアップ装置に対して、自情報処理装置が生成したセッション情報を順次送信する情報処理装置であって、
    複数の情報処理装置のうち前記自情報処理装置がスケールインにより処理主体から除外となることを検知すると、送信した最新のセッション情報が前記バックアップ装置から他の情報処理装置に提供されたか否かを示す情報の送信要求を前記バックアップ装置に送信し、
    前記送信要求の送信に応じて、前記バックアップ装置から受信した応答が、前記最新のセッション情報が前記他の情報処理装置に提供されたことを示す場合、前記最新のセッション情報よりも後に生成されるセッション情報の前記バックアップ装置への送信を抑制する制御部、
    を備えたことを特徴とする情報処理装置。
JP2018045999A 2018-03-13 2018-03-13 制御プログラム、制御方法および情報処理装置 Active JP6984503B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018045999A JP6984503B2 (ja) 2018-03-13 2018-03-13 制御プログラム、制御方法および情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018045999A JP6984503B2 (ja) 2018-03-13 2018-03-13 制御プログラム、制御方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2019159844A JP2019159844A (ja) 2019-09-19
JP6984503B2 true JP6984503B2 (ja) 2021-12-22

Family

ID=67996527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018045999A Active JP6984503B2 (ja) 2018-03-13 2018-03-13 制御プログラム、制御方法および情報処理装置

Country Status (1)

Country Link
JP (1) JP6984503B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4319971B2 (ja) * 2004-11-22 2009-08-26 株式会社日立製作所 セッション情報管理システム、セッション情報管理方法およびそのプログラム
JP2007272472A (ja) * 2006-03-30 2007-10-18 Nomura Research Institute Ltd セッション引継システム
WO2012060276A1 (ja) * 2010-11-01 2012-05-10 かもめエンジニアリング株式会社 アクセス制御方法、アクセス制御装置およびアクセス制御プログラム
JP2012103879A (ja) * 2010-11-10 2012-05-31 Hitachi Ltd セッション管理方法、セッション管理システム及びプログラム
JP2012108685A (ja) * 2010-11-17 2012-06-07 Hitachi Ltd 負荷分散システム

Also Published As

Publication number Publication date
JP2019159844A (ja) 2019-09-19

Similar Documents

Publication Publication Date Title
CN107408070B (zh) 分布式存储系统中的多事务日志
EP2802981B1 (en) Decoupling paas resources, jobs, and scheduling
JP6190389B2 (ja) 分散型計算環境において計算を実行する方法およびシステム
US9251233B2 (en) Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
US20150067682A1 (en) Assignment of resources in virtual machine pools
KR101351222B1 (ko) 기록 큐잉 메커니즘을 이용한 다중 어레이 일관성 그룹 구현 방법 및 컴퓨터 판독 가능 매체
US20180101558A1 (en) Log-shipping data replication with early log record fetching
US20210382913A1 (en) Continuous replication and granular application level replication
JP2007140746A (ja) 計算機システム及び管理計算機並びにリカバリ管理方法
EP3671462B1 (en) System and method for consumption based tagging of resources
WO2014174671A1 (ja) 計算機システム及び負荷分散方法
KR20110086690A (ko) 저장 장치에 데이터 쓰기를 실행하는 방법 및 시스템
CN108228102B (zh) 节点间数据迁移方法、装置、计算设备及计算机存储介质
US11080146B2 (en) System and method for storage unavailability tolerant backup
CN106537364A (zh) 存储事务
US11055185B2 (en) Method and system for global snapshots of distributed storage
US10929043B2 (en) Space reservation for distributed storage systems
CN110825562B (zh) 数据备份方法、装置、系统和存储介质
JP2015060285A (ja) クラウドコンピューティングでのグローバルトランザクション処理方法
CN100550894C (zh) 对n路共享存储系统中快闪副本的高效锁管理
CN106339176B (zh) 中间文件处理方法、客户端、服务器和系统
JP6984503B2 (ja) 制御プログラム、制御方法および情報処理装置
JP6755680B2 (ja) データ移行システム、及び、データ移行システムの制御方法
WO2019055201A1 (en) PROVIDING COHERENCE IN A DISTRIBUTED DATA STORE
US20170123933A1 (en) System and method for distributing file system changes to remotely located file replicas

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211029

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211108

R150 Certificate of patent or registration of utility model

Ref document number: 6984503

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150