Webサーバ及び方法
【課題】サーバ管理者の行動が制限されることなく、サーバ群へのコマンド入力を実現可能なWebサーバ及び方法を提供すること。
【解決手段】Webサーバ10のWebプログラム部11は、ユーザ端末20から、サーバ群30に含まれるサーバを指定して、HTTPプロトコルにより受け付けた入力を、当該サーバに対するコマンドとしてコマンド受付DB14に書き込む。Webサーバ10のコマンドライン部12は、コマンド受付DB14に書き込まれた情報を読み込み、暗号化された通信プロトコルにより対象サーバへのコマンド入力を実行し、実行結果をコマンド受付DB14に書き込む。Webプログラム部11は、ユーザ端末20からの要求に応じて、コマンド受付DB14に書き込まれた実行結果をユーザ端末20に送信する。
【解決手段】Webサーバ10のWebプログラム部11は、ユーザ端末20から、サーバ群30に含まれるサーバを指定して、HTTPプロトコルにより受け付けた入力を、当該サーバに対するコマンドとしてコマンド受付DB14に書き込む。Webサーバ10のコマンドライン部12は、コマンド受付DB14に書き込まれた情報を読み込み、暗号化された通信プロトコルにより対象サーバへのコマンド入力を実行し、実行結果をコマンド受付DB14に書き込む。Webプログラム部11は、ユーザ端末20からの要求に応じて、コマンド受付DB14に書き込まれた実行結果をユーザ端末20に送信する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Webサーバ及び方法、より詳しくは、ユーザ端末のWebブラウザからの入力に応じて、サーバ群へのコマンド操作を実現可能なWebサーバ及び方法に関する。
【背景技術】
【0002】
インターネットの爆発的な普及により、ポータルサイトや動画投稿サイトなどの様々なサービスが提供されるようになっている。このような大規模なサービスを提供するサイトは、多数のサーバ群により運営されるところ、サーバ障害が生じるとサービスの提供が困難になり、多大な損失が生じてしまうことになる。そのため、運営会社のサーバ管理者は、サーバ障害によるサービス停止を防止すべく、サーバの管理に膨大な労力をかけている。
【0003】
サーバ管理者の労力を軽減すべく、サーバ障害の早期発見を実現するための様々な方法が知られている(例えば、特許文献1参照)。このような障害発見方法を使用することで、サーバ管理者は容易かつ早期にサーバ障害を発見することができる。
また、発見されたサーバ障害について、過去に発生した障害事例の履歴と比較することでサーバ障害の復旧を容易にする方法なども知られている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11−149396号公報
【特許文献2】特開平10−312321号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、サーバ障害が生じた場合や、メンテナンスを行う場合には、サイト運営会社は、障害が生じているサーバの復旧を実現し、或いは、メンテナンスを行うサーバを操作する必要がある。この点、特許文献1、2の方法により早期発見や復旧が容易になったとしても、サーバ管理者が当該サーバにアクセス可能な端末を使用して復旧作業やメンテナンス作業を行う必要があり、サーバ管理者の行動が制限されてしまっていた。そこで、サーバの復旧作業やメンテナンス作業などを含む運用作業を、サーバ管理者が遠隔地からリモートで復旧可能な方法が望まれていた。
【0006】
ここで、遠隔地の端末からセキュリティを維持した状態でサーバにアクセスするために、通信電文を暗号化したり、電子証明書を用いて端末を当該サーバに認証させたりする技術が普及している。しかしながら、このような方法では、通信の暗号化のためのソフトウェアを端末に導入したり、電子証明書を導入したりする必要があり、作業が可能な端末が依然として限られる。さらに、このような暗号化や電子証明書を各端末に配布するための運用管理が煩雑になる上、逆にそのような端末が悪意の第三者の手に渡った場合には、サーバに自由にアクセス可能となってしまい、これが致命的なセキュリティホールとなるので適切ではない。
【0007】
本発明はこのような問題に鑑みてなされたものであり、サーバ管理者の行動が制限されることなく、サーバ群へのコマンド入力を実現可能なWebサーバ及び方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明では、以下のような解決手段を提供する。
【0009】
(1) ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバであって、前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付手段と、受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶手段と、前記コマンド記憶手段に記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込手段と、前記コマンド読込手段により読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行手段と、前記コマンド実行手段の実行結果を記憶する実行結果記憶手段と、前記実行結果記憶手段に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信手段と、を備えるWebサーバ。
【0010】
(1)に記載のWebサーバによれば、ユーザ端末からHTTP(HyperText Transfer Protocol)プロトコルにより受け付けた入力に基づいて、Webサーバがユーザ端末に代わりサーバ群へのコマンド入力を実行する。
ここで、ユーザ端末には、HTTPプロトコルで通信可能な機能、すなわち、通常の端末が備えるWebブラウザがあれば足り、また、ユーザ端末はWebサーバと通信するだけであるため、ユーザ端末とサーバ群との間に直接暗号化などをする必要はない。そのため、ユーザ端末の種別に制限がかけられることがない。
したがって、サーバ管理者は、任意のユーザ端末(例えば、自己の携帯電話)を常備するだけで遠隔地からサーバ群へのコマンド入力を実現することができ、サーバ管理者の行動が制限されることなく、サーバ群へのコマンド入力を実現することができる。
【0011】
また、Webサーバは、Webサーバとサーバ群とは暗号化(例えば、SSH(Secure Shell))された通信プロトコル(例えば、telnet)により接続される。これにより、サーバ群へのアクセスを保護することができる。
したがって、サーバ管理者の行動が制限されることがないだけでなく、サーバ群へのセキュアなコマンド入力を実現することができる。
【0012】
(2) 前記実行結果送信手段は、前記ユーザ端末から前記実行結果の送信要求を受信することに応じて、前記実行結果を送信する(1)に記載のWebサーバ。
【0013】
(2)に記載のWebサーバによれば、ユーザ端末からの送信要求、すなわち、サーバ管理者の操作に応じてコマンドの実行結果がユーザ端末に送信されるため、利便性を高めることができる。
【0014】
(3) 前記実行結果送信手段は、前記実行結果記憶手段に前記実行結果が記憶されることに応じて、前記実行結果を送信する(1)に記載のWebサーバ。
【0015】
(3)に記載のWebサーバによれば、コマンドの実行結果は、実行結果記憶手段に記憶されるたびに、すなわち、コマンドが実行されるたびに、ユーザ端末に送信される。そのため、ユーザ端末には直接コマンド操作を行った場合のような表示が行われることになり、利便性を高めることができる。
【0016】
(4) ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバを介して、前記ユーザ端末から前記サーバ群にコマンドを実行する方法であって、前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付工程と、受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶工程と、記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込工程と、読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行工程と、前記コマンド実行工程の実行結果を記憶する実行結果記憶工程と、前記実行結果記憶工程に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信工程と、を含む方法。
【0017】
(4)に記載の方法によれば、当該方法を実施することにより、(1)のWebサーバと同様の効果が期待できる。
【発明の効果】
【0018】
本発明によれば、サーバ管理者の行動が制限されることなく、サーバ群へのコマンド入力を実現可能なWebサーバ及び方法を提供できる。
【図面の簡単な説明】
【0019】
【図1】本発明のWebサーバの構成を示すブロック図である。
【図2】ユーザID管理データベースを示す図である。
【図3】コマンド受付データベースを示す図である。
【図4】コマンド実行処理を示す図である。
【図5】実行結果送信処理を示す図である。
【図6】実行結果送信処理を示す図である。
【図7】ログイン時の動作例を示す図である。
【図8】コマンド入力時の動作例を示す図である。
【図9】実行結果出力時の動作例を示す図である。
【図10】コマンド入力に引数を指定する場合の動作例を示す図である。
【図11】別実施形態におけるログイン時の動作例を示す図である。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態について図を参照し、説明する。
【0021】
[Webサーバの概略]
図1は、本実施形態に係るWebサーバ10を含む、HTTPプロトコルによるコマンド実行システム1(以下、このシステムを「システム1」とする)の概略を示す図である。図1を参照して、本実施形態に係るWebサーバ10について説明する。
システム1は、Webサーバ10と、ユーザ端末20と、サーバ群30と、ユーザID管理サーバ40と、を含んで構成される。
【0022】
ここで、ユーザ端末20は、Webブラウザを備え、Webサーバ10とHTTPプロトコルにより通信可能な端末であれば足り、例えば、PC20a(デスクトップPC、ノートブックPCのいずれであってもよい)、携帯電話20b又はPDA20cなど任意の端末を採用することができる。
また、サーバ群30は、インターネット上のサービスを提供するサイトを運営する多数のサーバからなる。ユーザ端末20からコンテンツ要求がされると、サーバ群30内に蓄積されたデータがWebサーバ10を介して送信されることで、ユーザ端末20にコンテンツが提供される。
また、ユーザID管理サーバ40は、後述するユーザID管理データベース(以下、データベースを「DB」とする)13を管理するサーバである。具体的には、サーバ群30に含まれるサーバのアクセス権限をどのユーザに対して開放(アクセス可能に)するかを管理する。なお、ユーザID管理DB13の管理を別サーバに行わせることなく、Webサーバ10に当該機能を持たせることとしてもよい。
【0023】
続いて、本実施形態に係るWebサーバ10は、Webプログラム部11と、コマンドライン部12と、記憶部の一部を構成するユーザID管理DB13及びコマンド受付DB14と、を備える。
【0024】
Webプログラム部11は、ユーザ端末20のWebブラウザからのリクエスト要求に応じて、コンテンツの提供などといったレスポンスを返す制御部(HTTPデーモン)であり、ユーザ端末20のWebブラウザとHTTPプロトコルにより通信する。
Webプログラム部11は、ログイン受付手段111と、アクセス可否確認手段1112と、入力受付手段113と、コマンド書込手段114と、実行結果読込手段115と、実行結果送信手段116と、を備える。
【0025】
コマンドライン部12は、サーバ群30に含まれるサーバへのコマンドを実行すると共に実行結果を取得可能な制御部であり、サーバ群30に含まれる各サーバとSSHで暗号化されたtelnetなどの通信プロトコルにより通信する。なお、コマンドライン部12とサーバ群30との間の通信は、暗号化された通信プロトコルで行われていれば足り、暗号化の方法や通信プロトコルの種別は、SSHやtelnetに限られるものではない。
コマンドライン部12は、コマンド読込手段121と、コマンド実行手段122と、実行結果書込手段123と、を備える。
【0026】
本実施形態に係るWebサーバ10は、このようなWebプログラム部11とコマンドライン部12とを用いることにより、HTTPプロトコルにより受け付けたユーザからの入力に応じて、サーバ群へのセキュアなコマンド操作を実現している。以下に、本実施形態に係るWebサーバ10の具体的な構成を説明する。
【0027】
ログイン受付手段111は、ユーザ端末20から、ユーザを識別するユーザID及びサーバ群30の中のサーバを指定する情報と共にログイン要求を受け付ける。アクセス可否確認手段112は、ログイン要求を受け付けると、ユーザID管理DB13を参照して、指定されたサーバへのアクセス権限が当該ユーザIDに与えられているか判断し、この判断結果をユーザ端末20に通知する。
ここで、ユーザID管理DB13は、図2に示すように、ユーザID欄131に関連付けてアクセス可能サーバ欄132を備え、ユーザIDに関連付けて、サーバ群30に含まれる各々のサーバの中でアクセスを許可するサーバを識別する情報を記憶している。なお、図2では、ユーザIDに関連付けてアクセス可能サーバを記憶しているが、各々のサーバに関連付けてアクセス可能なユーザIDを記憶することとしてもよい。
アクセス可否確認手段112は、例えば、「server02」へのログイン要求が、ユーザID「0001」のユーザから行われた場合にはログインできたことをユーザ端末20に返信し、ユーザID「0002」のユーザから行われた場合にはログイン不可能である旨をユーザ端末20に返信する。
【0028】
図1に戻り、指定されたサーバにログインできた場合には、ユーザ端末20から所定の入力情報(指定されたサーバに対する入力コマンドを示す情報を含む)が送信される。入力受付手段113は、この情報をユーザ端末20から受け付ける。コマンド書込手段114は、受け付けた情報から入力コマンドを示す情報を抽出し、ログインされたサーバに対するコマンドとして、コマンド受付DB14に書き込む。なお、ユーザ端末20からの入力をコマンド受付DB14に書き込むのは、Webプログラム部11では入力されたコマンドを実行することができないため、入力されたコマンドを実行可能なコマンドライン部12に送るためである。
ここで、コマンド受付DB14は、図3に示すように、コマンド入力欄141と実行結果入力欄142とから構成される。また、コマンド入力欄141は、コマンド欄141Aと対象サーバ欄141Bとから構成される。このコマンド受付DB14は、コマンド記憶手段の一例として機能する。
例えば、「server02」にログインしたユーザから、「restart」という入力情報を受け付けた場合には、コマンド書込手段114は、コマンド欄141Aに「restart」と書き込み、対象サーバ欄141Bに「server02」と書き込む。詳しくは後述するが、このように書き込まれると、サーバ群30に含まれる「server02」に対し、「restart」コマンドが実行される。
【0029】
図1に戻り、コマンド読込手段121は、コマンド受付DB14のコマンド入力欄141に書き込まれた情報(コマンド及び対象サーバ)を、所定の時間間隔で読み込む。ここで、コマンド読込手段121は、定期的に(例えば、0.5秒毎に)コマンド受付DB14にアクセスし、新たな書き込みがある場合に当該書き込みを読み込む機能(polling)を有する。
コマンド実行手段122は、読み込まれた情報に基づいて、暗号化された通信プロトコルによりコマンド操作を実行する。具体的には、リモートホストでのコマンドを実行するシェルなどのコマンドラインインタプリタにおいて、「コマンド」及び「対象サーバ」を入力することによりコマンド操作を行う。例えば、コマンド欄141Aに「restart」、対象サーバ欄141Bに「server02」と書き込まれていた場合には、コマンド実行手段122は、コマンドラインインタプリタにおいて「restart server02」と入力する。その結果、「server02」の再起動が行われる。
実行結果書込手段123は、コマンド実行手段122によるコマンド操作の実行結果を、コマンド受付DB14の実行結果入力欄142に書き込む。これにより、コマンド受付DB14には、コマンド実行手段122の実行結果が記憶されるため、コマンド受付DB14は、実行結果記憶手段の一例としても機能する。
【0030】
実行結果読込手段115は、コマンド受付DB14の実行結果入力欄142に書き込まれた情報を読み込む。ここで、実行結果読込手段115は、ユーザ端末20から実行結果の送信要求を受信することに応じて、実行結果入力欄142に書き込まれた情報を読み込む。なお、ユーザ端末20からの送信要求は、ユーザの意思による操作、例えば、ユーザ端末20からリロード操作(Webサーバ10へ入力情報を送信した後のURLと同一URLでのリロード操作)、が行われた場合に行われる。
実行結果送信手段116は、実行結果読込手段115が読み込んだ実行結果を、ユーザ端末20に送信する。これにより、ユーザ端末20からユーザの意思による送信要求がなされると、実行結果がユーザ端末20に送信されることになる。
【0031】
なお、ユーザ端末20への実行結果の送信を、ユーザの意思による送信要求ではなく、コマンド受付DB14の実行結果入力欄142に実行結果が書き込まれることに応じて、行うこととしてもよい。具体的には後述するが、公知のComet(コメット)という技術を利用することで実現することができる。これにより、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果が、略リアルタイムでユーザ端末20に送信され、ユーザ端末20に表示される。例えば、コマンド操作の実行結果が数十行・数百行にわたる場合には、ユーザの意思による送信要求に応じて実行結果を送信したのでは、何度も送信要求を行わなければならず、また、表示される実行結果も中途半端な状態となってしまう。さらに、コマンド操作の実行結果が何らかの原因で長時間にわたり書き込まれない場合には、実行結果が書き込まれるより前にユーザがリロード操作を行っても実行結果送信手段116は実行結果を返すことが出来ず、ユーザに何度もリロード操作を強いることになる。これに対して、Cometを利用し実行結果を送信することで、ユーザ端末20には実行結果が略リアルタイムで順次表示されるため、ユーザ端末20上で実際にコマンド操作を実行したかのような状況を実現できる。
【0032】
本実施形態のWebサーバ10の構成についての説明は以上である。なお、本実施形態のWebサーバ10のハードウェアは、一般的なコンピュータによって構成してもよい。一般的なコンピュータは、例えば、制御部として、中央処理装置(CPU)を備える他、記憶部として、メモリ(RAMやROM)、ハードディスク(HDD)及び光ディスク(CDやDVDなど)を、ネットワーク通信装置として各種有線や無線LAN装置を適宜備え、バスラインにより接続されている。このような一般的なコンピュータにおいて、CPUは、Webサーバ10を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。また、ユーザ端末20及びサーバ群30に含まれるサーバについても同様の構成を有してよい。
【0033】
[システム1の動作]
次に、図4〜図6を参照して、HTTPプロトコルにより受け付けたユーザからの入力に応じて、サーバ群30へのセキュアなコマンド操作を実現する方法について説明する。図4は、ユーザからの入力に応じてサーバ群30へのコマンド操作を実行するコマンド実行処理を示し、図5は、ユーザの意思による操作に応じて実行結果を送信する実行結果送信処理1を示し、図6は、Cometを利用し実行結果を送信する実行結果送信処理2を示す。
【0034】
[コマンド実行処理]
図4を参照して、コマンド実行処理について説明する。
【0035】
S1、S2:ユーザ端末20が、サーバ群30に含まれるサーバの障害を示すアラームを受信すると、ユーザは、サーバ障害を復旧するためユーザ端末20を介してWebサーバ10のWebプログラム部11にログイン要求を行う。なお、ログイン要求は、ユーザID及びログイン対象のサーバを指定して行われる。
【0036】
S3、S4:Webプログラム部11のログイン受付手段111がログイン要求を受け付けると、アクセス可否確認手段112は、ユーザID管理DB13を参照して、該当ユーザIDがログイン対象サーバにアクセス可能であるか否かを判別する。
S5:このとき、該当ユーザIDがログイン対象サーバにアクセスできない場合には、アクセス可否確認手段112は、アクセス不可能であることを示す情報をユーザ端末20に送信する。
S6:一方、アクセス可能である場合には、アクセス可否確認手段112は、アクセス可能であることを示す情報をユーザ端末20に送信する。
【0037】
S7:対象サーバにアクセス可能なユーザ端末20は、後述するコマンド入力画面から入力された入力情報をWebプログラム部11に送信する。
S8、S9:入力受付手段113は、当該入力情報を受け付け、コマンド書込手段114は、ログイン対象サーバへのコマンドとして、コマンド受付DB14に書き込む。
【0038】
S10、S11:コマンド読込手段121は、コマンド受付DB14を定期的に確認し、新たな書き込みがある場合には当該書き込みからコマンド及び対象サーバを読み込む。続いて、コマンド実行手段122は、読み込んだ情報に基づいてコマンド操作を実行する。
【0039】
S12:サーバ群30の対象サーバでは、コマンド操作に応じた処理を実行する。
S13:そして、実行結果書込手段123は、この実行結果をコマンド受付DB14に書き込み、コマンド実行処理を終了する。
【0040】
[実行結果送信処理1]
次に図5を参照して、ユーザの意思による操作に応じて実行結果を送信する実行結果送信処理1について説明する。
【0041】
S21:ユーザ端末20では、例えば、ユーザのリロード操作などにより、実行結果の送信要求を行う。
【0042】
S22〜S24:Webプログラム部11の実行結果読込手段115は、送信要求を受け付けると、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果を読み込む。続いて、実行結果送信手段116は、読み込んだ実行結果をユーザ端末20に送信する。
【0043】
S25、S26:ユーザ端末20は、実行結果を受信すると、Webブラウザに実行結果を表示し、実行結果送信処理1を終了する。
【0044】
[実行結果送信処理2]
次に図6を参照して、Cometを利用し実行結果を送信する実行結果送信処理2について説明する。
ここで、Cometは、Webサーバが常にHTTPリクエストを受け付けたままの状態にしておくものである。具体的には、WebサーバがHTTPリクエストを受け付けると、返すべき情報が出てくるまで(又はタイムアウトになる前まで)この状態のまま保留する。そして、返すべき情報が出てきた場合には、この情報を返信し、返すべき情報がないままタイムアウトになる場合には、空の情報を返信する。ユーザ端末のWebブラウザでは、返すべき情報を受け付けた場合には、この情報に応じた処理を行った後、直ちに次のHTTPリクエストをWebサーバに送る一方で、空の情報を受け付けた場合には、直ちに次のHTTPリクエストをWebサーバに送る。このようにして、Cometでは、Webサーバが常にHTTPリクエストを受け付けたままの状態にしておく。
【0045】
S31:ユーザ端末20(Webブラウザ)は、Webサーバ10のWebプログラム部11にComet用のTCP(Transmission Control Protocol)コネクションを開設する。
S32:続いて、ユーザ端末20は、Webプログラム部11に対して、実行結果の送信要求を示すHTTPリクエストを送信する。
【0046】
S33〜S35:Webプログラム部11の実行結果読込手段115は、実行結果の送信要求を受け付けると、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果を読み込む。続いて、Webプログラム部11は、新たな実行結果が読み込まれたか否か、すなわち、返すべき情報があるか否かを判断する。
【0047】
S36:このとき、新たな実行結果がある場合には、実行結果送信手段116は、読み込んだ実行結果をユーザ端末20に送信する。
S37、S38、S32:ユーザ端末20は、実行結果を受信すると、Webブラウザに実行結果を表示する。続いて、ユーザ端末20は、Webプログラム部11に対して、直ちに次のHTTPリクエストを送信する。
【0048】
S39:他方、新たな実行結果がない場合には、Webプログラム部11は、タイムアウトであるか否かを判断する。
S34、S35:このとき、タイムアウトでない場合には、実行結果読込手段115は、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果を読み込み、Webプログラム部11は、新たな実行結果が読み込まれたか否かを判断する。
S40:他方、タイムアウトである場合には、実行結果送信手段116は、空の情報をユーザ端末20に送信する。
S41、S32:ユーザ端末20は、空の情報を受信すると、Webプログラム部11に対して、直ちに次のHTTPリクエストを送信する。
【0049】
[動作例]
続いて、図7〜図9を参照して、システム1の動作例を説明する。図7は、ユーザがサーバ群30に含まれるサーバにログインする際(図4のS1〜S7に相当)のユーザ端末20の表示例を示し、図8は、ユーザ端末20からの入力に基づいて対象サーバへのコマンド操作を実行する際(図4のS7〜S11に相当)の動作例を示し、図9は、コマンドの実行結果をユーザ端末20に表示する際(図4のS12、S13、図5、図6に相当)の動作例を示す。
【0050】
[ログイン時の動作例]
図7を参照して、ログイン時の動作例について説明する。
【0051】
図7(1)を参照して、サーバ群30に含まれるサーバに障害が生じると、ユーザ端末20にはその旨が送信され、ユーザ端末20の表示画面にアラーム画面が表示される。図7(1)では、「server02」に障害が生じたことが表示されている。このとき、ユーザは、障害が生じたサーバが、自分がアクセス可能なサーバである場合には、「server02」にログインし、障害の復旧を行う。
【0052】
図7(2)は、ログイン画面を示す図である。このログイン画面は、例えば、アラーム画面において対象サーバを選択することにより表示される。図7(2)では、アラーム画面において「server02」を選択したことにより、「server02」に対するログイン画面がユーザ端末20に表示されている。ログイン画面において、ユーザがユーザID入力欄201にユーザIDを入力し、ログインボタン202を選択することで、ログイン要求が行われる。
【0053】
その結果、ログインできた場合には、ユーザ端末20には図7(3)に示すコマンド入力画面が表示される。このコマンド入力画面には、テキスト入力可能なコマンド入力欄203が設けられる。本実施形態では、ログインされたサーバが、コマンド操作を行う対象サーバとして、自動的に決定される。
なお、対象サーバにアクセスできない場合には、アクセス不可能であることを示す画面がユーザ端末20に表示される。
【0054】
[コマンド入力時の動作例]
次に、図8を参照して、ユーザ端末20からの入力に基づいて、サーバ群30に含まれるサーバに対してコマンド入力を行う際の動作例について説明する。
【0055】
ログインできた場合にはユーザ端末20にコマンド入力画面が表示される(図8(1))。このコマンド入力画面において、コマンド入力欄203にテキスト形式の入力がされ、送信ボタン211が操作されると、Webプログラム部11を介してコマンド受付DB14に所定の情報が書き込まれる。具体的には、コマンド受付DB14のコマンド欄141Aには、コマンド入力欄203に入力された情報が書き込まれ、対象サーバ欄141Bには、ログインされたサーバの種類を示す情報が書き込まれる(図8(2))。
そして、コマンド受付DB14に書き込まれた情報は、コマンドライン部12により読み込まれ、サーバ群30に含まれるサーバに対するコマンド入力として実行される(図8(3))。具体的には、シェルなどのコマンドラインインタプリタにおいて、「コマンド」及び「対象サーバ」を入力することで行われる。例えば、コマンド欄141Aに「restart」、対象サーバ欄141Bに「server02」と書き込まれていた場合には、コマンドラインインタプリタにおいて「restart server02」と入力する。
【0056】
[実行結果出力時の動作例]
次に、図9を参照して、入力されたコマンドの実行結果をユーザ端末20に表示する際の動作例について説明する。
【0057】
コマンドラインインタプリタにおいて入力されたコマンドが実行されると(図9(1))、その実行結果が、コマンドライン部12を介してコマンド受付DB14の実行結果入力欄142に書き込まれる(図9(2))。
そして、ユーザの意思による送信要求やCometによる送信要求がなされると、Webプログラム部11が、コマンド受付DB14に書き込まれた実行結果を読み出した上で、ユーザ端末20に実行結果を送信する。ユーザ端末20では、実行結果を受信すると、受信した実行結果を表示画面に表示する。
【0058】
[Webサーバによる効果]
以上のように、本実施形態に係るWebサーバ10は、ユーザ端末20からHTTPプロトコルにより受け付けた入力に基づいて、サーバ群30へのコマンド入力を実行する。このコマンド入力にあたり、ユーザ端末20にはHTTPプロトコルで通信可能な機能があれば足り、また、ユーザ端末20とサーバ群30との間に直接暗号化などをする必要はない。その結果、ユーザ端末20の種別に制限がかけられることがない。
また、Webサーバ10は、ユーザ端末20からのアクセスをユーザIDと関連付けて管理すると共に、Webサーバ10とサーバ群30とは暗号化された通信プロトコルにより接続される。これにより、ユーザID管理と暗号化された通信プロトコルという2つの方法により、サーバ群30へのアクセスを保護することができる。
したがって、ユーザ端末の種別に制限をかけることなく、サーバ群30へのセキュアなコマンド入力を実現することができる。
【0059】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0060】
例えば、本実施形態では、コマンド実行時の引数として、コマンドが動作する対象となるオブジェクトを指定する引数(対象サーバ)のみをとることとしているが、これに限られるものではない。いわゆる「フラグ」や「パラメータ」といったコマンドの動作を修正する引数をとることとしてもよい。
具体的には、図10に示すように、コマンド入力画面においてフラグ入力欄231を設け(図10(1))、Webプログラム部11において入力された引数をコマンド受付DB14に書き込み(図示は省略)、書き込まれた「コマンド」「対象サーバ」及び「フラグ」に基づいて、図10(2)に示すようなコマンド入力を行うこととしてもよい。
【0061】
また、本実施形態では、ログイン時に対象サーバの指定を受け付けた上で、ログインされたサーバが、コマンド操作を行う対象サーバとして自動的に決定されることとしているが、これに限られるものではない。コマンド操作を行う対象サーバは、コマンド入力時にユーザからの指定により決定することとしてもよい。
図11に別実施形態における、ログイン時の動作例を示す。サーバ群30に含まれるサーバに障害が発生すると、ユーザ端末20にはアラーム画面が表示される(図11(1))。
サーバに障害が発生したことを把握すると、サーバ管理者はユーザ端末20においてログイン画面を開き、ユーザID入力欄301にユーザIDを入力し、ログインボタン302を選択することで、ログイン要求を行う。このログイン要求に対して、Webサーバ10は、任意の方法(例えば、ユーザID管理DB13に、ユーザIDが、個別のサーバへのアクセス権限を有するか否かの情報に加え、サーバ群30へのアクセス権限を有する否かの情報を記憶させ、ログイン要求に含まれるユーザIDがサーバ群30へのアクセス権限を有するか否かにより判断する)により、ログイン可能であるか否かを判断し、その結果をユーザ端末20に送信する。
そして、ログインできた場合には、サーバ管理者が、コマンド入力画面(図11(3))において、対象サーバ入力欄303にコマンド操作を行う対象サーバを入力すると共に、コマンド入力欄304に実行するコマンドを入力し、送信ボタン305を選択することで、Webサーバ10には、サーバ群30の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力情報が送信される。Webサーバ10では、ユーザID管理DB13を参照して、指定されたサーバへのアクセス権限を有するユーザIDであるか判断し、アクセス権限を有する場合には、コマンド受付DB14の所定の領域に、コマンド及び対象サーバを書き込む。
【0062】
なお、上述の実施形態は、サーバに障害が発生したことを把握することにより行われるものとして説明したが、これに限られず、サーバの障害の有無に関わらず、様々な実施形態が可能である。
【符号の説明】
【0063】
10 Webサーバ
11 Webプログラム部
111 ログイン受付手段
112 アクセス可否確認手段
113 入力受付手段
114 コマンド書込手段
115 実行結果読込手段
116 実行結果送信手段
12 コマンドライン部
121 コマンド読込手段
122 コマンド実行手段
123 実行結果書込手段
13 ユーザID管理DB
14 コマンド受付DB
【技術分野】
【0001】
本発明は、Webサーバ及び方法、より詳しくは、ユーザ端末のWebブラウザからの入力に応じて、サーバ群へのコマンド操作を実現可能なWebサーバ及び方法に関する。
【背景技術】
【0002】
インターネットの爆発的な普及により、ポータルサイトや動画投稿サイトなどの様々なサービスが提供されるようになっている。このような大規模なサービスを提供するサイトは、多数のサーバ群により運営されるところ、サーバ障害が生じるとサービスの提供が困難になり、多大な損失が生じてしまうことになる。そのため、運営会社のサーバ管理者は、サーバ障害によるサービス停止を防止すべく、サーバの管理に膨大な労力をかけている。
【0003】
サーバ管理者の労力を軽減すべく、サーバ障害の早期発見を実現するための様々な方法が知られている(例えば、特許文献1参照)。このような障害発見方法を使用することで、サーバ管理者は容易かつ早期にサーバ障害を発見することができる。
また、発見されたサーバ障害について、過去に発生した障害事例の履歴と比較することでサーバ障害の復旧を容易にする方法なども知られている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11−149396号公報
【特許文献2】特開平10−312321号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、サーバ障害が生じた場合や、メンテナンスを行う場合には、サイト運営会社は、障害が生じているサーバの復旧を実現し、或いは、メンテナンスを行うサーバを操作する必要がある。この点、特許文献1、2の方法により早期発見や復旧が容易になったとしても、サーバ管理者が当該サーバにアクセス可能な端末を使用して復旧作業やメンテナンス作業を行う必要があり、サーバ管理者の行動が制限されてしまっていた。そこで、サーバの復旧作業やメンテナンス作業などを含む運用作業を、サーバ管理者が遠隔地からリモートで復旧可能な方法が望まれていた。
【0006】
ここで、遠隔地の端末からセキュリティを維持した状態でサーバにアクセスするために、通信電文を暗号化したり、電子証明書を用いて端末を当該サーバに認証させたりする技術が普及している。しかしながら、このような方法では、通信の暗号化のためのソフトウェアを端末に導入したり、電子証明書を導入したりする必要があり、作業が可能な端末が依然として限られる。さらに、このような暗号化や電子証明書を各端末に配布するための運用管理が煩雑になる上、逆にそのような端末が悪意の第三者の手に渡った場合には、サーバに自由にアクセス可能となってしまい、これが致命的なセキュリティホールとなるので適切ではない。
【0007】
本発明はこのような問題に鑑みてなされたものであり、サーバ管理者の行動が制限されることなく、サーバ群へのコマンド入力を実現可能なWebサーバ及び方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明では、以下のような解決手段を提供する。
【0009】
(1) ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバであって、前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付手段と、受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶手段と、前記コマンド記憶手段に記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込手段と、前記コマンド読込手段により読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行手段と、前記コマンド実行手段の実行結果を記憶する実行結果記憶手段と、前記実行結果記憶手段に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信手段と、を備えるWebサーバ。
【0010】
(1)に記載のWebサーバによれば、ユーザ端末からHTTP(HyperText Transfer Protocol)プロトコルにより受け付けた入力に基づいて、Webサーバがユーザ端末に代わりサーバ群へのコマンド入力を実行する。
ここで、ユーザ端末には、HTTPプロトコルで通信可能な機能、すなわち、通常の端末が備えるWebブラウザがあれば足り、また、ユーザ端末はWebサーバと通信するだけであるため、ユーザ端末とサーバ群との間に直接暗号化などをする必要はない。そのため、ユーザ端末の種別に制限がかけられることがない。
したがって、サーバ管理者は、任意のユーザ端末(例えば、自己の携帯電話)を常備するだけで遠隔地からサーバ群へのコマンド入力を実現することができ、サーバ管理者の行動が制限されることなく、サーバ群へのコマンド入力を実現することができる。
【0011】
また、Webサーバは、Webサーバとサーバ群とは暗号化(例えば、SSH(Secure Shell))された通信プロトコル(例えば、telnet)により接続される。これにより、サーバ群へのアクセスを保護することができる。
したがって、サーバ管理者の行動が制限されることがないだけでなく、サーバ群へのセキュアなコマンド入力を実現することができる。
【0012】
(2) 前記実行結果送信手段は、前記ユーザ端末から前記実行結果の送信要求を受信することに応じて、前記実行結果を送信する(1)に記載のWebサーバ。
【0013】
(2)に記載のWebサーバによれば、ユーザ端末からの送信要求、すなわち、サーバ管理者の操作に応じてコマンドの実行結果がユーザ端末に送信されるため、利便性を高めることができる。
【0014】
(3) 前記実行結果送信手段は、前記実行結果記憶手段に前記実行結果が記憶されることに応じて、前記実行結果を送信する(1)に記載のWebサーバ。
【0015】
(3)に記載のWebサーバによれば、コマンドの実行結果は、実行結果記憶手段に記憶されるたびに、すなわち、コマンドが実行されるたびに、ユーザ端末に送信される。そのため、ユーザ端末には直接コマンド操作を行った場合のような表示が行われることになり、利便性を高めることができる。
【0016】
(4) ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバを介して、前記ユーザ端末から前記サーバ群にコマンドを実行する方法であって、前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付工程と、受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶工程と、記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込工程と、読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行工程と、前記コマンド実行工程の実行結果を記憶する実行結果記憶工程と、前記実行結果記憶工程に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信工程と、を含む方法。
【0017】
(4)に記載の方法によれば、当該方法を実施することにより、(1)のWebサーバと同様の効果が期待できる。
【発明の効果】
【0018】
本発明によれば、サーバ管理者の行動が制限されることなく、サーバ群へのコマンド入力を実現可能なWebサーバ及び方法を提供できる。
【図面の簡単な説明】
【0019】
【図1】本発明のWebサーバの構成を示すブロック図である。
【図2】ユーザID管理データベースを示す図である。
【図3】コマンド受付データベースを示す図である。
【図4】コマンド実行処理を示す図である。
【図5】実行結果送信処理を示す図である。
【図6】実行結果送信処理を示す図である。
【図7】ログイン時の動作例を示す図である。
【図8】コマンド入力時の動作例を示す図である。
【図9】実行結果出力時の動作例を示す図である。
【図10】コマンド入力に引数を指定する場合の動作例を示す図である。
【図11】別実施形態におけるログイン時の動作例を示す図である。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態について図を参照し、説明する。
【0021】
[Webサーバの概略]
図1は、本実施形態に係るWebサーバ10を含む、HTTPプロトコルによるコマンド実行システム1(以下、このシステムを「システム1」とする)の概略を示す図である。図1を参照して、本実施形態に係るWebサーバ10について説明する。
システム1は、Webサーバ10と、ユーザ端末20と、サーバ群30と、ユーザID管理サーバ40と、を含んで構成される。
【0022】
ここで、ユーザ端末20は、Webブラウザを備え、Webサーバ10とHTTPプロトコルにより通信可能な端末であれば足り、例えば、PC20a(デスクトップPC、ノートブックPCのいずれであってもよい)、携帯電話20b又はPDA20cなど任意の端末を採用することができる。
また、サーバ群30は、インターネット上のサービスを提供するサイトを運営する多数のサーバからなる。ユーザ端末20からコンテンツ要求がされると、サーバ群30内に蓄積されたデータがWebサーバ10を介して送信されることで、ユーザ端末20にコンテンツが提供される。
また、ユーザID管理サーバ40は、後述するユーザID管理データベース(以下、データベースを「DB」とする)13を管理するサーバである。具体的には、サーバ群30に含まれるサーバのアクセス権限をどのユーザに対して開放(アクセス可能に)するかを管理する。なお、ユーザID管理DB13の管理を別サーバに行わせることなく、Webサーバ10に当該機能を持たせることとしてもよい。
【0023】
続いて、本実施形態に係るWebサーバ10は、Webプログラム部11と、コマンドライン部12と、記憶部の一部を構成するユーザID管理DB13及びコマンド受付DB14と、を備える。
【0024】
Webプログラム部11は、ユーザ端末20のWebブラウザからのリクエスト要求に応じて、コンテンツの提供などといったレスポンスを返す制御部(HTTPデーモン)であり、ユーザ端末20のWebブラウザとHTTPプロトコルにより通信する。
Webプログラム部11は、ログイン受付手段111と、アクセス可否確認手段1112と、入力受付手段113と、コマンド書込手段114と、実行結果読込手段115と、実行結果送信手段116と、を備える。
【0025】
コマンドライン部12は、サーバ群30に含まれるサーバへのコマンドを実行すると共に実行結果を取得可能な制御部であり、サーバ群30に含まれる各サーバとSSHで暗号化されたtelnetなどの通信プロトコルにより通信する。なお、コマンドライン部12とサーバ群30との間の通信は、暗号化された通信プロトコルで行われていれば足り、暗号化の方法や通信プロトコルの種別は、SSHやtelnetに限られるものではない。
コマンドライン部12は、コマンド読込手段121と、コマンド実行手段122と、実行結果書込手段123と、を備える。
【0026】
本実施形態に係るWebサーバ10は、このようなWebプログラム部11とコマンドライン部12とを用いることにより、HTTPプロトコルにより受け付けたユーザからの入力に応じて、サーバ群へのセキュアなコマンド操作を実現している。以下に、本実施形態に係るWebサーバ10の具体的な構成を説明する。
【0027】
ログイン受付手段111は、ユーザ端末20から、ユーザを識別するユーザID及びサーバ群30の中のサーバを指定する情報と共にログイン要求を受け付ける。アクセス可否確認手段112は、ログイン要求を受け付けると、ユーザID管理DB13を参照して、指定されたサーバへのアクセス権限が当該ユーザIDに与えられているか判断し、この判断結果をユーザ端末20に通知する。
ここで、ユーザID管理DB13は、図2に示すように、ユーザID欄131に関連付けてアクセス可能サーバ欄132を備え、ユーザIDに関連付けて、サーバ群30に含まれる各々のサーバの中でアクセスを許可するサーバを識別する情報を記憶している。なお、図2では、ユーザIDに関連付けてアクセス可能サーバを記憶しているが、各々のサーバに関連付けてアクセス可能なユーザIDを記憶することとしてもよい。
アクセス可否確認手段112は、例えば、「server02」へのログイン要求が、ユーザID「0001」のユーザから行われた場合にはログインできたことをユーザ端末20に返信し、ユーザID「0002」のユーザから行われた場合にはログイン不可能である旨をユーザ端末20に返信する。
【0028】
図1に戻り、指定されたサーバにログインできた場合には、ユーザ端末20から所定の入力情報(指定されたサーバに対する入力コマンドを示す情報を含む)が送信される。入力受付手段113は、この情報をユーザ端末20から受け付ける。コマンド書込手段114は、受け付けた情報から入力コマンドを示す情報を抽出し、ログインされたサーバに対するコマンドとして、コマンド受付DB14に書き込む。なお、ユーザ端末20からの入力をコマンド受付DB14に書き込むのは、Webプログラム部11では入力されたコマンドを実行することができないため、入力されたコマンドを実行可能なコマンドライン部12に送るためである。
ここで、コマンド受付DB14は、図3に示すように、コマンド入力欄141と実行結果入力欄142とから構成される。また、コマンド入力欄141は、コマンド欄141Aと対象サーバ欄141Bとから構成される。このコマンド受付DB14は、コマンド記憶手段の一例として機能する。
例えば、「server02」にログインしたユーザから、「restart」という入力情報を受け付けた場合には、コマンド書込手段114は、コマンド欄141Aに「restart」と書き込み、対象サーバ欄141Bに「server02」と書き込む。詳しくは後述するが、このように書き込まれると、サーバ群30に含まれる「server02」に対し、「restart」コマンドが実行される。
【0029】
図1に戻り、コマンド読込手段121は、コマンド受付DB14のコマンド入力欄141に書き込まれた情報(コマンド及び対象サーバ)を、所定の時間間隔で読み込む。ここで、コマンド読込手段121は、定期的に(例えば、0.5秒毎に)コマンド受付DB14にアクセスし、新たな書き込みがある場合に当該書き込みを読み込む機能(polling)を有する。
コマンド実行手段122は、読み込まれた情報に基づいて、暗号化された通信プロトコルによりコマンド操作を実行する。具体的には、リモートホストでのコマンドを実行するシェルなどのコマンドラインインタプリタにおいて、「コマンド」及び「対象サーバ」を入力することによりコマンド操作を行う。例えば、コマンド欄141Aに「restart」、対象サーバ欄141Bに「server02」と書き込まれていた場合には、コマンド実行手段122は、コマンドラインインタプリタにおいて「restart server02」と入力する。その結果、「server02」の再起動が行われる。
実行結果書込手段123は、コマンド実行手段122によるコマンド操作の実行結果を、コマンド受付DB14の実行結果入力欄142に書き込む。これにより、コマンド受付DB14には、コマンド実行手段122の実行結果が記憶されるため、コマンド受付DB14は、実行結果記憶手段の一例としても機能する。
【0030】
実行結果読込手段115は、コマンド受付DB14の実行結果入力欄142に書き込まれた情報を読み込む。ここで、実行結果読込手段115は、ユーザ端末20から実行結果の送信要求を受信することに応じて、実行結果入力欄142に書き込まれた情報を読み込む。なお、ユーザ端末20からの送信要求は、ユーザの意思による操作、例えば、ユーザ端末20からリロード操作(Webサーバ10へ入力情報を送信した後のURLと同一URLでのリロード操作)、が行われた場合に行われる。
実行結果送信手段116は、実行結果読込手段115が読み込んだ実行結果を、ユーザ端末20に送信する。これにより、ユーザ端末20からユーザの意思による送信要求がなされると、実行結果がユーザ端末20に送信されることになる。
【0031】
なお、ユーザ端末20への実行結果の送信を、ユーザの意思による送信要求ではなく、コマンド受付DB14の実行結果入力欄142に実行結果が書き込まれることに応じて、行うこととしてもよい。具体的には後述するが、公知のComet(コメット)という技術を利用することで実現することができる。これにより、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果が、略リアルタイムでユーザ端末20に送信され、ユーザ端末20に表示される。例えば、コマンド操作の実行結果が数十行・数百行にわたる場合には、ユーザの意思による送信要求に応じて実行結果を送信したのでは、何度も送信要求を行わなければならず、また、表示される実行結果も中途半端な状態となってしまう。さらに、コマンド操作の実行結果が何らかの原因で長時間にわたり書き込まれない場合には、実行結果が書き込まれるより前にユーザがリロード操作を行っても実行結果送信手段116は実行結果を返すことが出来ず、ユーザに何度もリロード操作を強いることになる。これに対して、Cometを利用し実行結果を送信することで、ユーザ端末20には実行結果が略リアルタイムで順次表示されるため、ユーザ端末20上で実際にコマンド操作を実行したかのような状況を実現できる。
【0032】
本実施形態のWebサーバ10の構成についての説明は以上である。なお、本実施形態のWebサーバ10のハードウェアは、一般的なコンピュータによって構成してもよい。一般的なコンピュータは、例えば、制御部として、中央処理装置(CPU)を備える他、記憶部として、メモリ(RAMやROM)、ハードディスク(HDD)及び光ディスク(CDやDVDなど)を、ネットワーク通信装置として各種有線や無線LAN装置を適宜備え、バスラインにより接続されている。このような一般的なコンピュータにおいて、CPUは、Webサーバ10を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。また、ユーザ端末20及びサーバ群30に含まれるサーバについても同様の構成を有してよい。
【0033】
[システム1の動作]
次に、図4〜図6を参照して、HTTPプロトコルにより受け付けたユーザからの入力に応じて、サーバ群30へのセキュアなコマンド操作を実現する方法について説明する。図4は、ユーザからの入力に応じてサーバ群30へのコマンド操作を実行するコマンド実行処理を示し、図5は、ユーザの意思による操作に応じて実行結果を送信する実行結果送信処理1を示し、図6は、Cometを利用し実行結果を送信する実行結果送信処理2を示す。
【0034】
[コマンド実行処理]
図4を参照して、コマンド実行処理について説明する。
【0035】
S1、S2:ユーザ端末20が、サーバ群30に含まれるサーバの障害を示すアラームを受信すると、ユーザは、サーバ障害を復旧するためユーザ端末20を介してWebサーバ10のWebプログラム部11にログイン要求を行う。なお、ログイン要求は、ユーザID及びログイン対象のサーバを指定して行われる。
【0036】
S3、S4:Webプログラム部11のログイン受付手段111がログイン要求を受け付けると、アクセス可否確認手段112は、ユーザID管理DB13を参照して、該当ユーザIDがログイン対象サーバにアクセス可能であるか否かを判別する。
S5:このとき、該当ユーザIDがログイン対象サーバにアクセスできない場合には、アクセス可否確認手段112は、アクセス不可能であることを示す情報をユーザ端末20に送信する。
S6:一方、アクセス可能である場合には、アクセス可否確認手段112は、アクセス可能であることを示す情報をユーザ端末20に送信する。
【0037】
S7:対象サーバにアクセス可能なユーザ端末20は、後述するコマンド入力画面から入力された入力情報をWebプログラム部11に送信する。
S8、S9:入力受付手段113は、当該入力情報を受け付け、コマンド書込手段114は、ログイン対象サーバへのコマンドとして、コマンド受付DB14に書き込む。
【0038】
S10、S11:コマンド読込手段121は、コマンド受付DB14を定期的に確認し、新たな書き込みがある場合には当該書き込みからコマンド及び対象サーバを読み込む。続いて、コマンド実行手段122は、読み込んだ情報に基づいてコマンド操作を実行する。
【0039】
S12:サーバ群30の対象サーバでは、コマンド操作に応じた処理を実行する。
S13:そして、実行結果書込手段123は、この実行結果をコマンド受付DB14に書き込み、コマンド実行処理を終了する。
【0040】
[実行結果送信処理1]
次に図5を参照して、ユーザの意思による操作に応じて実行結果を送信する実行結果送信処理1について説明する。
【0041】
S21:ユーザ端末20では、例えば、ユーザのリロード操作などにより、実行結果の送信要求を行う。
【0042】
S22〜S24:Webプログラム部11の実行結果読込手段115は、送信要求を受け付けると、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果を読み込む。続いて、実行結果送信手段116は、読み込んだ実行結果をユーザ端末20に送信する。
【0043】
S25、S26:ユーザ端末20は、実行結果を受信すると、Webブラウザに実行結果を表示し、実行結果送信処理1を終了する。
【0044】
[実行結果送信処理2]
次に図6を参照して、Cometを利用し実行結果を送信する実行結果送信処理2について説明する。
ここで、Cometは、Webサーバが常にHTTPリクエストを受け付けたままの状態にしておくものである。具体的には、WebサーバがHTTPリクエストを受け付けると、返すべき情報が出てくるまで(又はタイムアウトになる前まで)この状態のまま保留する。そして、返すべき情報が出てきた場合には、この情報を返信し、返すべき情報がないままタイムアウトになる場合には、空の情報を返信する。ユーザ端末のWebブラウザでは、返すべき情報を受け付けた場合には、この情報に応じた処理を行った後、直ちに次のHTTPリクエストをWebサーバに送る一方で、空の情報を受け付けた場合には、直ちに次のHTTPリクエストをWebサーバに送る。このようにして、Cometでは、Webサーバが常にHTTPリクエストを受け付けたままの状態にしておく。
【0045】
S31:ユーザ端末20(Webブラウザ)は、Webサーバ10のWebプログラム部11にComet用のTCP(Transmission Control Protocol)コネクションを開設する。
S32:続いて、ユーザ端末20は、Webプログラム部11に対して、実行結果の送信要求を示すHTTPリクエストを送信する。
【0046】
S33〜S35:Webプログラム部11の実行結果読込手段115は、実行結果の送信要求を受け付けると、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果を読み込む。続いて、Webプログラム部11は、新たな実行結果が読み込まれたか否か、すなわち、返すべき情報があるか否かを判断する。
【0047】
S36:このとき、新たな実行結果がある場合には、実行結果送信手段116は、読み込んだ実行結果をユーザ端末20に送信する。
S37、S38、S32:ユーザ端末20は、実行結果を受信すると、Webブラウザに実行結果を表示する。続いて、ユーザ端末20は、Webプログラム部11に対して、直ちに次のHTTPリクエストを送信する。
【0048】
S39:他方、新たな実行結果がない場合には、Webプログラム部11は、タイムアウトであるか否かを判断する。
S34、S35:このとき、タイムアウトでない場合には、実行結果読込手段115は、コマンド受付DB14の実行結果入力欄142に書き込まれた実行結果を読み込み、Webプログラム部11は、新たな実行結果が読み込まれたか否かを判断する。
S40:他方、タイムアウトである場合には、実行結果送信手段116は、空の情報をユーザ端末20に送信する。
S41、S32:ユーザ端末20は、空の情報を受信すると、Webプログラム部11に対して、直ちに次のHTTPリクエストを送信する。
【0049】
[動作例]
続いて、図7〜図9を参照して、システム1の動作例を説明する。図7は、ユーザがサーバ群30に含まれるサーバにログインする際(図4のS1〜S7に相当)のユーザ端末20の表示例を示し、図8は、ユーザ端末20からの入力に基づいて対象サーバへのコマンド操作を実行する際(図4のS7〜S11に相当)の動作例を示し、図9は、コマンドの実行結果をユーザ端末20に表示する際(図4のS12、S13、図5、図6に相当)の動作例を示す。
【0050】
[ログイン時の動作例]
図7を参照して、ログイン時の動作例について説明する。
【0051】
図7(1)を参照して、サーバ群30に含まれるサーバに障害が生じると、ユーザ端末20にはその旨が送信され、ユーザ端末20の表示画面にアラーム画面が表示される。図7(1)では、「server02」に障害が生じたことが表示されている。このとき、ユーザは、障害が生じたサーバが、自分がアクセス可能なサーバである場合には、「server02」にログインし、障害の復旧を行う。
【0052】
図7(2)は、ログイン画面を示す図である。このログイン画面は、例えば、アラーム画面において対象サーバを選択することにより表示される。図7(2)では、アラーム画面において「server02」を選択したことにより、「server02」に対するログイン画面がユーザ端末20に表示されている。ログイン画面において、ユーザがユーザID入力欄201にユーザIDを入力し、ログインボタン202を選択することで、ログイン要求が行われる。
【0053】
その結果、ログインできた場合には、ユーザ端末20には図7(3)に示すコマンド入力画面が表示される。このコマンド入力画面には、テキスト入力可能なコマンド入力欄203が設けられる。本実施形態では、ログインされたサーバが、コマンド操作を行う対象サーバとして、自動的に決定される。
なお、対象サーバにアクセスできない場合には、アクセス不可能であることを示す画面がユーザ端末20に表示される。
【0054】
[コマンド入力時の動作例]
次に、図8を参照して、ユーザ端末20からの入力に基づいて、サーバ群30に含まれるサーバに対してコマンド入力を行う際の動作例について説明する。
【0055】
ログインできた場合にはユーザ端末20にコマンド入力画面が表示される(図8(1))。このコマンド入力画面において、コマンド入力欄203にテキスト形式の入力がされ、送信ボタン211が操作されると、Webプログラム部11を介してコマンド受付DB14に所定の情報が書き込まれる。具体的には、コマンド受付DB14のコマンド欄141Aには、コマンド入力欄203に入力された情報が書き込まれ、対象サーバ欄141Bには、ログインされたサーバの種類を示す情報が書き込まれる(図8(2))。
そして、コマンド受付DB14に書き込まれた情報は、コマンドライン部12により読み込まれ、サーバ群30に含まれるサーバに対するコマンド入力として実行される(図8(3))。具体的には、シェルなどのコマンドラインインタプリタにおいて、「コマンド」及び「対象サーバ」を入力することで行われる。例えば、コマンド欄141Aに「restart」、対象サーバ欄141Bに「server02」と書き込まれていた場合には、コマンドラインインタプリタにおいて「restart server02」と入力する。
【0056】
[実行結果出力時の動作例]
次に、図9を参照して、入力されたコマンドの実行結果をユーザ端末20に表示する際の動作例について説明する。
【0057】
コマンドラインインタプリタにおいて入力されたコマンドが実行されると(図9(1))、その実行結果が、コマンドライン部12を介してコマンド受付DB14の実行結果入力欄142に書き込まれる(図9(2))。
そして、ユーザの意思による送信要求やCometによる送信要求がなされると、Webプログラム部11が、コマンド受付DB14に書き込まれた実行結果を読み出した上で、ユーザ端末20に実行結果を送信する。ユーザ端末20では、実行結果を受信すると、受信した実行結果を表示画面に表示する。
【0058】
[Webサーバによる効果]
以上のように、本実施形態に係るWebサーバ10は、ユーザ端末20からHTTPプロトコルにより受け付けた入力に基づいて、サーバ群30へのコマンド入力を実行する。このコマンド入力にあたり、ユーザ端末20にはHTTPプロトコルで通信可能な機能があれば足り、また、ユーザ端末20とサーバ群30との間に直接暗号化などをする必要はない。その結果、ユーザ端末20の種別に制限がかけられることがない。
また、Webサーバ10は、ユーザ端末20からのアクセスをユーザIDと関連付けて管理すると共に、Webサーバ10とサーバ群30とは暗号化された通信プロトコルにより接続される。これにより、ユーザID管理と暗号化された通信プロトコルという2つの方法により、サーバ群30へのアクセスを保護することができる。
したがって、ユーザ端末の種別に制限をかけることなく、サーバ群30へのセキュアなコマンド入力を実現することができる。
【0059】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0060】
例えば、本実施形態では、コマンド実行時の引数として、コマンドが動作する対象となるオブジェクトを指定する引数(対象サーバ)のみをとることとしているが、これに限られるものではない。いわゆる「フラグ」や「パラメータ」といったコマンドの動作を修正する引数をとることとしてもよい。
具体的には、図10に示すように、コマンド入力画面においてフラグ入力欄231を設け(図10(1))、Webプログラム部11において入力された引数をコマンド受付DB14に書き込み(図示は省略)、書き込まれた「コマンド」「対象サーバ」及び「フラグ」に基づいて、図10(2)に示すようなコマンド入力を行うこととしてもよい。
【0061】
また、本実施形態では、ログイン時に対象サーバの指定を受け付けた上で、ログインされたサーバが、コマンド操作を行う対象サーバとして自動的に決定されることとしているが、これに限られるものではない。コマンド操作を行う対象サーバは、コマンド入力時にユーザからの指定により決定することとしてもよい。
図11に別実施形態における、ログイン時の動作例を示す。サーバ群30に含まれるサーバに障害が発生すると、ユーザ端末20にはアラーム画面が表示される(図11(1))。
サーバに障害が発生したことを把握すると、サーバ管理者はユーザ端末20においてログイン画面を開き、ユーザID入力欄301にユーザIDを入力し、ログインボタン302を選択することで、ログイン要求を行う。このログイン要求に対して、Webサーバ10は、任意の方法(例えば、ユーザID管理DB13に、ユーザIDが、個別のサーバへのアクセス権限を有するか否かの情報に加え、サーバ群30へのアクセス権限を有する否かの情報を記憶させ、ログイン要求に含まれるユーザIDがサーバ群30へのアクセス権限を有するか否かにより判断する)により、ログイン可能であるか否かを判断し、その結果をユーザ端末20に送信する。
そして、ログインできた場合には、サーバ管理者が、コマンド入力画面(図11(3))において、対象サーバ入力欄303にコマンド操作を行う対象サーバを入力すると共に、コマンド入力欄304に実行するコマンドを入力し、送信ボタン305を選択することで、Webサーバ10には、サーバ群30の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力情報が送信される。Webサーバ10では、ユーザID管理DB13を参照して、指定されたサーバへのアクセス権限を有するユーザIDであるか判断し、アクセス権限を有する場合には、コマンド受付DB14の所定の領域に、コマンド及び対象サーバを書き込む。
【0062】
なお、上述の実施形態は、サーバに障害が発生したことを把握することにより行われるものとして説明したが、これに限られず、サーバの障害の有無に関わらず、様々な実施形態が可能である。
【符号の説明】
【0063】
10 Webサーバ
11 Webプログラム部
111 ログイン受付手段
112 アクセス可否確認手段
113 入力受付手段
114 コマンド書込手段
115 実行結果読込手段
116 実行結果送信手段
12 コマンドライン部
121 コマンド読込手段
122 コマンド実行手段
123 実行結果書込手段
13 ユーザID管理DB
14 コマンド受付DB
【特許請求の範囲】
【請求項1】
ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバであって、
前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付手段と、
受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶手段と、
前記コマンド記憶手段に記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込手段と、
前記コマンド読込手段により読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行手段と、
前記コマンド実行手段の実行結果を記憶する実行結果記憶手段と、
前記実行結果記憶手段に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信手段と、
を備えるWebサーバ。
【請求項2】
前記実行結果送信手段は、前記ユーザ端末から前記実行結果の送信要求を受信することに応じて、前記実行結果を送信する請求項1に記載のWebサーバ。
【請求項3】
前記実行結果送信手段は、前記実行結果記憶手段に前記実行結果が記憶されることに応じて、前記実行結果を送信する請求項1に記載のWebサーバ。
【請求項4】
ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバを介して、前記ユーザ端末から前記サーバ群にコマンドを実行する方法であって、
前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付工程と、
受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶工程と、
記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込工程と、
読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行工程と、
前記コマンド実行工程の実行結果を記憶する実行結果記憶工程と、
前記実行結果記憶工程に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信工程と、
を含む方法。
【請求項1】
ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバであって、
前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付手段と、
受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶手段と、
前記コマンド記憶手段に記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込手段と、
前記コマンド読込手段により読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行手段と、
前記コマンド実行手段の実行結果を記憶する実行結果記憶手段と、
前記実行結果記憶手段に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信手段と、
を備えるWebサーバ。
【請求項2】
前記実行結果送信手段は、前記ユーザ端末から前記実行結果の送信要求を受信することに応じて、前記実行結果を送信する請求項1に記載のWebサーバ。
【請求項3】
前記実行結果送信手段は、前記実行結果記憶手段に前記実行結果が記憶されることに応じて、前記実行結果を送信する請求項1に記載のWebサーバ。
【請求項4】
ユーザ端末とHTTPプロトコルにより通信可能であり、サーバ群に含まれる各々のサーバと暗号化されたプロトコルにより通信可能に接続されたWebサーバを介して、前記ユーザ端末から前記サーバ群にコマンドを実行する方法であって、
前記ユーザ端末から、前記サーバ群の中のサーバを指定する情報及び入力コマンドを示す情報を含む入力を受け付ける入力受付工程と、
受け付けた前記入力に含まれる入力コマンドを示す情報を、前記サーバ群のうち前記指定されたサーバに対するコマンドとして記憶するコマンド記憶工程と、
記憶された前記コマンドを所定の時間間隔で読み込むコマンド読込工程と、
読み込まれた前記コマンドを前記指定されたサーバに対して実行するコマンド実行工程と、
前記コマンド実行工程の実行結果を記憶する実行結果記憶工程と、
前記実行結果記憶工程に記憶された前記実行結果を前記ユーザ端末にWebページとして送信する実行結果送信工程と、
を含む方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−134255(P2011−134255A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2009−295308(P2009−295308)
【出願日】平成21年12月25日(2009.12.25)
【出願人】(500257300)ヤフー株式会社 (1,128)
【Fターム(参考)】
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願日】平成21年12月25日(2009.12.25)
【出願人】(500257300)ヤフー株式会社 (1,128)
【Fターム(参考)】
[ Back to top ]