Nothing Special   »   [go: up one dir, main page]

JP2017529628A - マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法 - Google Patents

マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法 Download PDF

Info

Publication number
JP2017529628A
JP2017529628A JP2017516114A JP2017516114A JP2017529628A JP 2017529628 A JP2017529628 A JP 2017529628A JP 2017516114 A JP2017516114 A JP 2017516114A JP 2017516114 A JP2017516114 A JP 2017516114A JP 2017529628 A JP2017529628 A JP 2017529628A
Authority
JP
Japan
Prior art keywords
server
patching
application server
domain
tenant
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.)
Granted
Application number
JP2017516114A
Other languages
English (en)
Other versions
JP2017529628A5 (ja
JP6748638B2 (ja
Inventor
イスラム,ナズルル
リンドホルム,ジェイコブ
ドーア,ジョシュア
カッソ,クリストファー・エス
バラスブラマニャム,ヤミニ・ケイ
リウ,スティーブン
モルダニ,ラジブ
クマール,アブヒジット
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2017529628A publication Critical patent/JP2017529628A/ja
Publication of JP2017529628A5 publication Critical patent/JP2017529628A5/ja
Application granted granted Critical
Publication of JP6748638B2 publication Critical patent/JP6748638B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法が本明細書に記載される。当該システムは、1つ以上のパーティションを、テナントが使用するために当該テナントと関連付けることができ、パーティションはドメインのランタイムおよび管理の区分またはスライスである。パッチングプロセスは、アプリケーションサーバクラスタ化環境が提供する高可用性特徴を利用して、中断なしでまたはゼロのダウンタイムで動作するドメインの能力を維持する制御されたローリングリスタートにおいてパッチを適用することができる。当該プロセスを用いて、アプリケーションサーバ、アプリケーション、または他のソフトウェアコンポーネントの未パッチバージョンもしくは以前のバージョンを起こり得るロールバックのために保存すること、または回復不能エラーが起きた場合に自動復帰を提供することを含む、複雑なまたは長い実行タスクを自動化することができる。

Description

著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
関連出願の優先権主張および相互参照:
本願は、2014年9月24日に出願され「SYSTEM AND METHOD FOR MULTITENANT-AWARE PATCHING IN A MULTITENANT APPLICATION SERVER ENVIRONMENT(マルチテナントアプリケーションサーバ環境におけるマルチテナント認識型パッチングのためのシステムおよび方法)」と題された米国仮出願番号第62/054,903号に基づく優先権の利益を主張するものであり、2015年1月21日に出願され「SYSTEM AND METHOD FOR SUPPORTING MULTI-TENANCY IN AN APPLICATION SERVER, CLOUD, OR OTHER ENVIRONMENT(アプリケーションサーバ、クラウド、または他の環境においてマルチテナンシをサポートするためのシステムおよび方法)」と題された米国特許出願番号第14/601,883号に関連する。上記の出願の各々は、引用により本明細書に援用される。
発明の分野:
本発明の実施形態は、概して、アプリケーションサーバおよびクラウドプラットフォーム環境に関し、特に、マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法に関する。
背景:
アプリケーションサーバおよび他のエンタープライズコンピューティング環境において、アドミニストレータにとっての一般的なタスクは、複数のドメインをサポートする一連のアプリケーションサーバインストールをパッチする必要性である。パッチは、特定の問題についての1回限りの解決、または周期的なバージョン更新を含み得る。なぜパッチをインストールする必要があるのかに係わらず、アドミニストレータは概して、アプリケーションダウンタイムを最小化しつつパッチをロールアウトするためにドメインの各ノード上の複雑な一連のステップを実行する必要があり、当該ステップは、パッチング環境が各ホスト上で最新であることを確実にすること;ホスト上で実行されているそれらのサーバをシャットダウンすること;ならびに、次に、アプリケーションサーバインスタンスをパッチおよびリスタートしてパッチが正確に機能するかどうかを検証することを含む。パッチングは複雑なプロセスであり、1つのアプリケーションサーバインスタンスについても何分も掛かることがあり、パッチがドメイン内のすべてのノードに適用される場合は数時間にもなり得るため、当該プロセスはシステムダウンタイムのリスクを冒すユーザにとって不安をもたらし得る。
概要:
一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法が本明細書に記載される。当該システムは、1つ以上のパーティションを、テナントが使用するために当該テナントと関連付けることができ、パーティションはドメインのランタイムおよび管理の区分またはスライスである。パッチングプロセスは、アプリケーションサーバクラスタ化環境が提供する高可用性特徴を利用して、中断なしでまたはゼロのダウンタイムで動作するドメインの能力を維持する制御されたローリングリスタートにおいてパッチを適用することができる。当該プロセスを用いて、アプリケーションサーバ、アプリケーション、または他のソフトウェアコンポーネントの未パッチバージョンもしくは以前のバージョンを起こり得るロールバックのために保存すること、または回復不能エラーが起きた場合に自動復帰を提供することを含む、複雑なまたは長い実行タスクを自動化することができる。
一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す図である。 一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。 一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。 一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す図である。 一実施形態に従った、例示的なマルチテナント環境をさらに示す図である。 一実施形態に従った、パッチングのサポートを示す図である。 一実施形態に従った、セッション処理のサポートを含むパッチングのためのシステムをさらに示す図である。 一実施形態に従った、セッション互換性検出のサポートを含むパッチングのためのシステムをさらに示す図である。 一実施形態に従った、パッチングのためのシステムをさらに示す図である。 一実施形態に従った、パッチングのためのシステムをさらに示す図である。 一実施形態に従った、パッチングのためのシステムをさらに示す図である。 一実施形態に従った、パッチングのためのシステムをさらに示す図である。 一実施形態に従った、パッチングイベントダイヤグラムを示す図である。 一実施形態に従った、別のパッチングイベントダイヤグラムを示す図である。 一実施形態に従った、別のパッチングイベントダイヤグラムを示す図である。 一実施形態に従った、パッチングのための方法のフローチャートを示す図である。
詳細な説明:
一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法が本明細書に記載される。当該システムは、1つ以上のパーティションを、テナントが使用するために当該テナントと関連付けることができ、パーティションはドメインのランタイムおよび管理の区分またはスライスである。パッチングプロセスは、アプリケーションサーバクラスタ化環境が提供する高可用性特徴を利用して、中断なしでまたはゼロのダウンタイムで動作するドメインの能力を維持する制御されたローリングリスタートにおいてパッチを適用することができる。当該プロセスを用いて、アプリケーションサーバ、アプリケーション、または他のソフトウェアコンポーネントの未パッチバージョンもしくは以前のバージョンを起こり得るロールバックのために保存すること、または回復不能エラーが起きた場合に自動復帰を提供することを含む、複雑なまたは長い実行タスクを自動化することができる。
アプリケーションサーバ(たとえば、マルチテナント(Multi-Tenant:MT))環境
図1は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す。
図1に示されるように、一実施形態に従うと、アプリケーションサーバ(たとえばマルチテナント(MT))環境100または他のコンピューティング環境は、ソフトウェアアプリケーションのデプロイメントおよび実行を可能にするものであって、アプリケーションサーバドメインを定義するために実行時に用いられるドメイン102の構成を含み、当該ドメイン102の構成に従って動作するように構成することができる。
一実施形態に従うと、アプリケーションサーバは、実行時に使用されるよう定義される1つ以上のパーティション104を含み得る。各々のパーティションは、グローバルユニークパーティション識別子(identifier:ID)およびパーティション構成と関連付けることができ、さらに、リソースグループテンプレートの参照126および/またはパーティション特有のアプリケーションもしくはリソース128とともに、1つ以上のリソースグループ124を含み得る。ドメインレベルのリソースグループ、アプリケーションおよび/またはリソース140も、任意にはリソースグループテンプレートの参照とともに、ドメインレベルで定義することができる。
各々のリソースグループテンプレート160は、1つ以上のアプリケーションA162、B164、リソースA166、B168および/または他のデプロイ可能なアプリケーションもしくはリソース170を定義することができ、リソースグループによって参照することができる。たとえば、図1に示されるように、パーティション104におけるリソースグループ124は、リソースグループテンプレート160を参照する(190)ことができる。
概して、システムアドミニストレータは、パーティション、ドメインレベルのリソースグループおよびリソースグループテンプレート、ならびにセキュリティ領域を定義することができるとともに、パーティションアドミニストレータは、たとえば、パーティションレベルのリソースグループを作成するか、アプリケーションをパーティションにデプロイするかまたはパーティションについての特定の領域を参照することによって、それら自体のパーティションのアスペクトを定義することができる。
図2は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
図2に示されるように、一実施形態に従うと、パーティション202は、たとえば、リソースグループテンプレート210の参照206を含むリソースグループ205と、仮想ターゲット(たとえば仮想ホスト)情報207と、プラグ接続可能なデータベース(pluggable database:PDB)情報208とを含み得る。リソースグループテンプレート(たとえば210)は、たとえば、Java(登録商標)メッセージサーバ(Java Message Server:JMS)サーバ213、ストア・アンド・フォワード(store-and-forward:SAF)エージェント215、メールセッションコンポーネント216またはJavaデータベースコネクティビティ(Java Database Connectivity:JDBC)リソース217などのリソースとともに、複数のアプリケーションA211およびB212を定義することができる。
図2に示されるリソースグループテンプレートが一例として提供される。他の実施形態に従うと、さまざまなタイプのリソースグループテンプレートおよび要素を提供することができる。
一実施形態に従うと、パーティション(たとえば202)内のリソースグループが、特定のリソースグループテンプレート(たとえば210)を参照する(220)と、パーティション特有の情報230(たとえば、パーティション特有のPDB情報)を示すために、特定のパーティションと関連付けられた情報を、参照されたリソースグループテンプレートと組合わせて用いることができる。次いで、パーティション特有の情報は、パーティションによって使用されるリソース(たとえば、PDBリソース)を構成するようにアプリケーションサーバによって使用可能である。たとえば、パーティション202と関連付けられたパーティション特有のPDB情報は、そのパーティションによって使用されるべき適切なPDB238を備えたコンテナデータベース(container database:CDB)236を構成する(232)ようにアプリケーションサーバによって使用可能である。
同様に、一実施形態に従うと、特定のパーティションと関連付けられた仮想ターゲット情報を用いて、そのパーティションによって使用されるべきパーティション特有の仮想ターゲット240(たとえば、ユニフォーム・リソース・ロケータ(uniform resource locator:URL)(たとえば、http://baylandurgentcare.com)によってアクセス可能にすることができるbaylandurgentcare.com)を定義する(239)ことができる。
図3は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
一実施形態に従うと、config.xml構成ファイルなどのシステム構成を用いて、パーティションを定義する。当該パーティションは、そのパーティションと関連付けられたリソースグループについての構成エレメントおよび/または他のパーティションプロパティを含む。値は、プロパティ名/値の対を用いてパーティションごとに指定することができる。
一実施形態に従うと、複数のパーティションは、管理されるサーバ/クラスタ242内で、または、CDB243にアクセス可能でありかつウェブ層244を介してアクセス可能である同様の環境内で、実行することができる。これにより、たとえば、ドメインまたはパーティションを(CDBの)PDBのうち1つ以上のPDBに関連付けることが可能となる。
一実施形態に従うと、複数のパーティションの各々、この例においてはパーティションA250およびパーティションB260は、そのパーティションと関連付けられた複数のリソースを含むように構成することができる。たとえば、パーティションAは、アプリケーションA1 252と、アプリケーションA2 254と、JMS A 256と、さらには、PDB A 259と関連付けられたデータソースA257とをともに含むリソースグループ251を含むように構成することができる。この場合、パーティションは仮想ターゲットA258を介してアクセス可能である。同様に、パーティションB260は、アプリケーションB1 262と、アプリケーションB2 264と、JMS B 266と、さらには、PDB B 269と関連付けられたデータソースB267とをともに含むリソースグループ261を含むように構成することができる。この場合、パーティションは仮想ターゲットB268を介してアクセス可能である。
上述の例のうちいくつかはCDBおよびPDBの使用を例示しているが、他の実施形態に従うと、他のタイプのマルチテナントのデータベースまたは非マルチテナントのデータベースをサポートすることができる。この場合、特定の構成は、たとえば、スキーマを使用するかまたはさまざまなデータベースを使用することによって、各々のパーティションのために提供することができる。
リソース
一実施形態に従うと、リソースは、環境のドメインにデプロイすることができるシステムリソース、アプリケーションまたは他のリソースもしくはオブジェクトである。たとえば、一実施形態に従うと、リソースは、アプリケーション、JMS、JDBC、JavaMail、WLDFもしくはデータソースであり得るか、または、サーバ、クラスタもしくは他のアプリケーションサーバターゲットにデプロイすることができる他のシステムリソースもしくは他のタイプのオブジェクトであり得る。
パーティション
一実施形態に従うと、パーティションは、パーティション識別子(partition identifier:ID)および構成に関連付けられ得るドメインのランタイムおよび管理の区分またはスライスであるとともに、アプリケーションを含み得て、ならびに/または、リソースグループおよびリソースグループテンプレートを使用することによってドメイン全体に渡るリソースを参照し得る。
概して、パーティションは、それ自体のアプリケーションを含み、リソースグループテンプレートを介してドメイン全体に渡るアプリケーションを参照し、それ自体の構成を有し得る。パーティション可能なエンティティは、リソース、たとえば、JMS、JDBC、JavaMail、およびWLDFリソースや、他のコンポーネント、たとえばJNDIネームスペース、ネットワークトラフィック、ワークマネージャ、セキュリティポリシーおよび領域などを含み得る。マルチテナント環境のコンテキストにおいては、システムは、テナントと関連付けられたパーティションの管理およびランタイムのアスペクトへのアクセスをテナントに提供するように構成することができる。
一実施形態に従うと、パーティション内の各々のリソースグループは、任意には、リソースグループテンプレートを参照することができる。パーティションは、複数のリソースグループを有し得るとともに、それらの各々はリソースグループテンプレートを参照し得る。各々のパーティションは、パーティションのリソースグループが参照するリソースグループテンプレートにおいて指定されていない構成データについてのプロパティを定義することができる。これにより、パーティションが、リソースグループテンプレートで定義されたデプロイ可能なリソースをそのパーティションで使用されるべき特定の値にバインドするものとして機能することが可能となる。場合によっては、パーティションは、リソースグループテンプレートによって指定される構成情報を無効にすることができる。
一実施形態に従うと、パーティション構成は、たとえば、config.xml構成ファイルによって定義されるように、複数の構成エレメントを含み得る。複数の構成エレメントは、たとえば、「パーティション(partition)」(そのパーティションを定義する属性および子エレメントを含む);「リソース・グループ(resource-group)」(パーティションにデプロイされるアプリケーションおよびリソースを含む);「リソース・グループ・テンプレート(resource-group-template)」;(そのテンプレートによって定義されるアプリケーションおよびリソースを含む);「jdbc・システム・リソース・無効化(jdbc-system-resource-override)」(データベース特有のサービス名、ユーザ名およびパスワードを含む);ならびに、「パーティション・プロパティ(partition-properties)」(リソースグループテンプレートにおいてマクロ置換のために使用可能なプロパティキー値を含む)を含む。
始動後、システムは、構成ファイルによって提供される情報を用いて、リソースグループテンプレートから各々のリソースについてのパーティション特有の構成エレメントを生成することができる。
リソースグループ
一実施形態に従うと、リソースグループは、名前付けされ完全に修飾されたデプロイ可能なリソースの集合であって、ドメインまたはパーティションのレベルで定義することができ、かつ、リソースグループテンプレートを参照することができる。リソースグループにおけるリソースは、完全に修飾されているものと見なされる。というのも、アドミニストレータが、それらのリソースを開始させるのに必要とされるかまたはそれらのリソースに接続するのに必要とされるすべての情報、たとえば、データソースに接続するためのクレデンシャル、またはアプリケーションについての目標情報、を提供しているからである。
システムアドミニストレータは、ドメインレベルで、またはパーティションレベルでリソースグループを公開することができる。ドメインレベルでは、リソースグループは、関連するリソースをグループ化するのに好都合な方法を提供する。システムは、グループ化されていないリソースと同じドメインレベルのリソースグループにおいて公開されたリソースを管理することができる。このため、リソースは、システム起動中に開始させたり、システムのシャットダウン中に停止させたりすることができる。アドミニストレータはまた、グループ内のリソースを個々に停止させるか、開始させるかまたは削除することができ、グループ上で動作させることによって暗黙的にグループ内のすべてのリソースに対して機能することができる。たとえば、あるリソースグループを停止させることにより、まだ停止されていないグループにおけるすべてのリソースを停止させ;リソースグループを始動させることにより、まだ始動させていないグループにおけるいずれのリソースも始動させ、リソースグループを削除することにより、グループに含まれるすべてのリソースを削除する。
パーティションレベルでは、システムまたはパーティションアドミニストレータは、任意のセキュリティ制限下で、或るパーティションにおいて0個以上のリソースグループを構成することができる。たとえば、SaaS使用事例においては、さまざまなパーティションレベルのリソースグループは、ドメインレベルのリソースグループテンプレートを参照することができる。PaaS使用事例においては、リソースグループテンプレートを参照しないが代わりにそのパーティション内でのみ使用可能にされるべきアプリケーションおよびそれらの関連するリソースを表わすパーティションレベルのリソースグループを作成することができる。
一実施形態に従うと、リソースグループ化を用いることで、アプリケーションと、それらアプリケーションがドメイン内で別個の管理ユニットとして使用するリソースとをともにグループ化することができる。たとえば、以下に記載される医療記録(MedRec)アプリケーションにおいては、リソースグループ化によりMedRecアプリケーションおよびそのリソースが定義される。複数のパーティションは、各々がパーティション特有の構成情報を用いて、同じMedRecリソースグループを実行することができ、このため、各々のMedRecインスタンスの一部であるアプリケーションが各々のパーティションにとって特有のものにされる。
リソースグループテンプレート
一実施形態に従うと、リソースグループテンプレートは、リソースグループから参照することができドメインレベルで定義されるデプロイ可能なリソースの集合であり、そのリソースを起動するのに必要な情報のうちいくらかは、パーティションレベル構成の仕様をサポートするように、テンプレート自体の一部として記憶されない可能性がある。ドメインは、リソースグループテンプレートをいくつ含んでもよく、それらの各々は、たとえば、1つ以上の関連するJavaアプリケーションと、それらのアプリケーションが依存するリソースとを含み得る。このようなリソースについての情報のうちのいくらかは、すべてのパーティションにわたって同じであってもよく、他の情報はパーティションごとに異なっていてもよい。すべての構成がドメインレベルで指定される必要はなく、代わりに、パーティションレベル構成が、マクロまたはプロパティ名/値の対を使用することによってリソースグループテンプレートで指定することができる。
一実施形態に従うと、特定のリソースグループテンプレートは、1つ以上のリソースグループによって参照可能である。概して、任意の所与のパーティション内では、リソースグループテンプレートは一度に1つのリソースグループによって参照することができる。すなわち、同じパーティション内で複数のリソースグループによって同時に参照することはできない。しかしながら、異なるパーティションにおける別のリソースグループによって同時に参照することができる。リソースグループを含むオブジェクト、たとえばドメインまたはパーティションは、プロパティ名/値の割当てを用いて、任意のトークンの値をリソースグループテンプレートで設定することができる。システムは、参照するリソースグループを用いてリソースグループテンプレートを起動させると、それらのトークンを、リソースグループが含むオブジェクトにおいて設定された値と置換えることができる。場合によっては、システムはまた、静的に構成されたリソースグループテンプレートおよびパーティションを用いて、パーティション/テンプレートの組合せごとにランタイム構成を生成することができる。
たとえば、SaaS使用事例においては、システムは、同じアプリケーションおよびリソースを複数回起動することができるが、そのうちの1回は、それらを用いるであろう各パーティションごとに起動され得る。アドミニストレータがリソースグループテンプレートを定義すると、これらは、どこか他のところで提供されるであろう情報を表わすためにトークンを用いることができる。たとえば、CRM関連のデータリソースに接続する際に使用されるユーザ名は、リソースグループテンプレートにおいて\${CRMDataUsername}として示すことができる。
テナント
一実施形態に従うと、マルチテナント(MT)アプリケーションサーバ環境などのマルチテナント環境においては、テナントは、1つ以上のパーティションおよび/もしくは1つ以上のテナント認識型アプリケーションによって表現可能であるエンティティ、または1つ以上のパーティションおよび/もしくは1つ以上のテナント認識型アプリケーションに関連付けることができるエンティティである。
たとえば、テナントは、別個のユーザ組織、たとえばさまざまな外部会社、特定の企業内のさまざまな部門(たとえばHRおよび財務部)などを表わすことができ、それら各々は、異なるパーティションに関連付けることができる。テナントのグローバルユニークアイデンティティ(テナントID)は、特定の時点において特定のユーザを特定のテナントに関連付けるものである。システムは、たとえば、ユーザアイデンティティの記録を参照することによって、ユーザアイデンティティから、特定のユーザがどのテナントに属しているかを導き出すことができる。ユーザアイデンティティにより、ユーザが実行することを認可されているアクションをシステムが実施することが可能となる。ユーザアイデンティティは、ユーザがどのテナントに属し得るかを含むが、これに限定されない。
一実施形態に従うと、システムは、互いに異なるテナントの管理およびランタイムを分離することを可能にする。たとえば、テナントは、それらのアプリケーションのいくつかの挙動、およびそれらがアクセスできるリソースを構成することができる。システムは、特定のテナントが別のテナントに属するアーティファクトを確実に管理することができないようにし、かつ、実行時に、特定のテナントの代わりに機能するアプリケーションがそのテナントと関連付けられたリソースのみを参照するが他のテナントと関連付けられたリソースは参照しないことを確実にすることができる。
一実施形態に従うと、テナント非認識型アプリケーションは、アプリケーションが応答している要求をどんなユーザが提示したかにかかわらず、アプリケーションが用いる如何なるリソースにもアクセス可能となるように明示的にテナントに対処する論理を含まないものである。対照的に、テナント認識型アプリケーションは、テナントに明示的に対処する論理を含む。たとえば、ユーザのアイデンティティに基づいて、アプリケーションは、ユーザが属するテナントを導き出すことができ、テナント特有のリソースにアクセスするためにその情報を用いることができる。
一実施形態に従うと、システムは、テナント認識型となるように明示的に書き込まれたアプリケーションをユーザがデプロイすることを可能にし、これにより、アプリケーション開発者は、現在のテナントのテナントIDを取得することができる。次いで、テナント認識型アプリケーションは、このテナントIDを用いて、アプリケーションの単一のインスタンスを用いている複数のテナントを処理することができる。
たとえば、単一の診療室または病院をサポートするMedRecアプリケーションは、2つの異なるパーティションまたはテナント(たとえばBayland Urgent CareテナントおよびValley Healthテナント)に対して公開することができ、その各々は、基礎をなすアプリケーションコードを変更することなく、別個のPDBなどの別個のテナント特有のリソースにアクセスすることができる。
例示的なドメイン構成およびマルチテナント環境
一実施形態に従うと、アプリケーションは、ドメインレベルでリソースグループテンプレートにデプロイすることができるか、または、パーティションに範囲指定されているかもしくはドメインに範囲指定されているリソースグループにデプロイすることができる。アプリケーション構成は、アプリケーションごとまたはパーティションごとに指定されたデプロイメントプランを用いて無効化することができる。デプロイメントプランはまた、リソースグループの一部として指定することができる。
図4は、一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す。
一実施形態に従うと、システムがパーティションを始動させると、当該システムは、提供された構成に従って、それぞれのデータベースインスタンスに対して、各パーティションごとに1つずつ、仮想ターゲット(たとえば仮想ホスト)および接続プールを作成する。
典型的には、各々のリソースグループテンプレートは、1つ以上の関連するアプリケーションと、それらアプリケーションが依存するリソースとを含み得る。各々のパーティションは、それが参照するリソースグループテンプレートにおいて指定されていない構成データを提供することができるが、これは、場合によっては、リソースグループテンプレートによって指定されるいくつかの構成情報を無効にすることを含めて、パーティションと関連付けられた特定値に対するリソースグループテンプレートにおけるデプロイ可能なリソースのバインディングを行なうことによって、実行可能である。これにより、システムは、各々のパーティションが定義したプロパティ値を用いて、パーティションごとにリソースグループテンプレートによってさまざまに表わされるアプリケーションを起動させることができる。
いくつかのインスタンスにおいては、パーティションが含み得るリソースグループは、リソースグループテンプレートを参照しないか、または、それら自体のパーティション範囲指定されたデプロイ可能なリソースを直接定義する。パーティション内で定義されるアプリケーションおよびデータソースは、概して、そのパーティションにとってのみ使用可能である。リソースは、パーティション:<partitionName>/<resource JNDI name>、またはドメイン:<resource JNDI name>を用いて、パーティションの中からアクセスすることができるようにデプロイ可能である。
たとえば、MedRecアプリケーションは、複数のJavaアプリケーション、データソース、JMSサーバおよびメールセッションを含み得る。複数のテナントのためにMedRecアプリケーションを実行させるために、システムアドミニストレータは、テンプレートにおけるそれらのデプロイ可能なリソースを公開している単一のMedRecリソースグループテンプレート286を定義することができる。
ドメインレベルのデプロイ可能なリソースとは対照的に、リソースグループテンプレートにおいて公開されたデプロイ可能なリソースは、テンプレートにおいて完全には構成されない可能性があるか、または、いくつかの構成情報が不足しているので、そのままでは起動させることができない。
たとえば、MedRecリソースグループテンプレートは、アプリケーションによって用いられるデータソースを公開し得るが、データベースに接続するためのURLを指定しない可能性がある。さまざまなテナントと関連付けられたパーティション、たとえば、パーティションBUC−A290(Bayland Urgent Care:BUC)およびパーティションVH−A292(Valley Health:VH)は、各々がMedRecリソースグループテンプレートを参照する(296,297)MedRecリソースグループ293,294を含むことによって、1つ以上のリソースグループテンプレートを参照することができる。次いで、当該参照を用いて、Bayland Urgent Careテナントによって使用されるBUC−Aパーティションと関連付けられた仮想ホストbaylandurgentcare.com304と、Valley Healthテナントによって使用されるVH−Aパーティションと関連付けられた仮想ホストvalleyhealth.com308とを含む各々のテナントのための仮想ターゲット/仮想ホストを作成する(302,306)ことができる。
図5は、一実施形態に従った例示的なマルチテナント環境をさらに示す。図5に示されるように、2つのパーティションがMedRecリソースグループテンプレートを参照している上述の例から引続いて、一実施形態に従うと、サーブレットエンジン310は、この例においてはBayland Urgent Careの医師テナント環境320およびValley Healthの医師テナント環境330といった複数のテナント環境をサポートするために用いることができる。
一実施形態に従うと、各々のパーティション321および331は、そのテナント環境についての入来トラフィックを受入れるための異なる仮想ターゲットと、異なるURL322,332とを定義することができる。異なるURL322,332は、パーティションと、この例ではBayland Urgent Careデータベースまたはvalley healthデータベースを含むそれぞれのリソース324、334とに接続するためのものである。同じアプリケーションコードが両方のデータベースに対して実行され得るので、データベースインスタンスは互換性のあるスキーマを用いることができる。システムがパーティションを始動させると、当該システムは、それぞれのデータベースインスタンスに対する接続プールおよび仮想ターゲットを作成することができる。
マルチテナント認識型パッチング
一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法が本明細書に記載される。当該システムは、1つ以上のパーティションを、テナントが使用するために当該テナントと関連付けることができ、パーティションはドメインのランタイムおよび管理の区分またはスライスである。パッチングプロセスは、アプリケーションサーバクラスタ化環境が提供する高可用性特徴を利用して、中断なしでまたはゼロのダウンタイムで動作するドメインの能力を維持する制御されたローリングリスタートにおいてパッチを適用することができる。当該プロセスを用いて、アプリケーションサーバ、アプリケーション、または他のソフトウェアコンポーネントの未パッチバージョンもしくは以前のバージョンを起こり得るロールバックのために保存すること、または回復不能エラーが起きた場合に自動復帰を提供することを含む、複雑なまたは長い実行タスクを自動化することができる。
さまざまな実施形態に従うと、本明細書において提供されるパッチングプロセスの説明では、以下の概念の一部またはすべてが用いられる:
PSU:パッチセット更新。
ZDT:ゼロダウンタイム。
ワークフロー:オーケストレーションフレームワークまたはパッチオーケストレータが実行する一連のタスク。
パッチングプリミティブ:パッチングロールアウトの再使用可能部分を表わす論理演算。
アウトオブプレース(out-of-place)パッチング:プロダクションサーバのダウンタイムが少なくて済み、必要であれば元のバージョンをより容易にロールバックする能力を提供する帯域内および帯域外パッチングおよび試験の態様で、ノンプロダクションサーバ上で実行されているたとえばOracleホームをパッチングしてから、パッチを試験および検証した後に、それをプロダクションサーバにプッシュアウトすること。
図6は、一実施形態に従ったパッチングのサポートを示す。
図6に示されるように、一実施形態に従うと、システムは管理サーバ400を含み得、管理サーバ400は、この例では、管理されるサーバ(ここではMS1、MS2およびMS3として示される)の第1のフェイルオーバーグループ404と、管理されるサーバ(ここではMS4、MS5およびMS6として示される)の第2のフェイルオーバーグループとを含む、管理されるサーバまたはクラスタを管理する役割を果たす。管理サーバは、REST API410、または別のタイプのインターフェイスを介してクライアントがアクセス可能である。
一実施形態に従うと、システムはパッチオーケストレーションフレームワークまたはパッチオーケストレータ420をさらに含み、パッチオーケストレータ420は、パッチングワークフローの一部として、以下にさらに説明するように複数のパッチングプリミティブを用いて、ソフトウェアコンポーネントもしくはパッチのさまざまなバージョンをロールアウトするおよび/または適用するように動作する。
概して、パッチオーケストレータは、ロバストな態様で動作するように、かつ、タスク再試行、およびロールバックセマンティクスなどの機能のサポートを含むように設計される。
一実施形態に従うと、パッチオーケストレーションプロセスは、アプリケーションサーバが提供するさまざまな特徴を活用して、高度な機能を提供する。当該機能は、後方互換性を有さない可能性があるアプリケーションセッションを処理する能力;管理されるサーバ内の既存のセッションが終了するのを待ってからそのサーバをシャットダウンする、セッション認識型グレースフルシャットダウン;パッチングウィンドウ時に複製セッションの自動デシリアライゼーションをオフにする、複製セッションのレイジーデシリアライゼーション;クラスタリスタートを回避するためにレイジーデシリアライゼーションを動的にオン/オフにすること;およびグループ情報に基づいたフェイルオーバーなどであり、これらの特徴または機能の各々は以下にさらに説明する。
一実施形態に従うと、パッチオーケストレータがサポートするパッチングプリミティブの例として、トラフィックディレクタまたは他のタイプのロードバランサ430、たとえばオラクルトラフィックディレクタ(Oracle Traffic Director:OTD)と通信して、指定サーバへのトラフィックを静止させる静止サーバ422;ホームディレクトリまたは他のストレージの(たとえばOracleホーム)シンボリックリンク(symlink)を新たなターゲットを指すように変更する更新ホーム424;準備完了(レディ)アプリケーションまたは同様のフレームワークと通信し、すべての登録アプリケーションがレディ状態にある時にのみ完了するレディ確認アプリケーション426;および、たとえばOTDと通信して、指定サーバへのトラフィックの送信を再開する起動サーバ428が挙げられ得る。
一実施形態に従うと、パッチオーケストレータを、そのプリミティブおよびワークフローとともに、パッチデータベース440と組合せて用いて、ソフトウェアコンポーネントまたはパッチのさまざまなバージョンをサポートすることができ、これは、たとえば、1つ以上の管理されるサーバ451について、初期のパッチ済バージョンまたは未パッチバージョン452から、後にパッチされたバージョン454への、1組のホームディレクトリまたは他のストレージをパッチまたは更新するために必要な情報450を含む。
たとえば、図6に示されるように、クラスタは上述のように管理されるサーバの2つのフェイルオーバーグループを含み得、第1のフェイルオーバーグループおよびその管理されるサーバ(MS1、MS2およびMS3)の選択はホームディレクトリのパッチ済バージョンを使用し、第2のフェイルオーバーグループおよび他の管理されるサーバ(MS4、MS5およびMS6)はホームディレクトリの初期バージョンまたは未パッチバージョンを使用する。
トラフィックディレクタまたはロードバランサからの要求は、フェイルオーバーグループ内の任意のサーバにフェイルオーバーし得る。以下にさらに説明するように、一実施形態に従うと、レイジーセッションデシリアライゼーション機能を用いて、2つのフェイルオーバーグループ、およびその中の管理されるサーバに跨り得る任意のセッションのフェイルオーバーをグレースフルに処理することができる。
図7は、一実施形態に従った、セッション処理のサポートを含むパッチングのためのシステムをさらに示す。
典型的なアプリケーションサーバ環境では、サーバインスタンスのシャットダウンおよびその後のリスタートには少しの時間が掛かり得、場合によっては数分も掛かり得る。これに対処するために、一実施形態に従うと、システムは、シャットダウン時に実行可能なよりスマートなセッション複製プロセスを含み、当該プロセスは、アクティブなセッションがシステム内のどこか別の場所で提供されているか否かを判断すること、および、提供されていない場合は、対象サーバをシャットダウンする前にセッションを使用可能にすることを含む。
図7に示されるように、一実施形態に従うと、トラフィックディレクタは、ロードバランシング452、503ヘッダ検出454、ダイナミックディスカバリ456、およびヘルスチェック458などの機能をサポートするのに対し;アプリケーションサーバクラスタ化環境460は、ダイナミックレイジーセッションデシリアライゼーション462、セッションフェッチング464、およびオーファンセッションクリーンアップ468などの機能をサポートし;webコンテナ470は、セッション互換性検出472などの機能をサポートし;サーバライフサイクルコンポーネント480は、シャットダウン時のセッション複製482、およびすべてのセッションの待機484などの機能をサポートする。
一実施形態に従うと、上記のコンポーネントの各々は以下により詳細に説明され、これは、パッチング前後にパッチングサポートを動的にオンおよびオフにすること;セッションフェッチング;複数のバックアップを回避するためのオーファンセッションクリーンアップ;1つのサーバがどのようにトラフィックディレクタに503メッセージを送信して当該ディレクタに異なるサーバを試みるように指示するかを含む、非互換性セッションの処理;ならびにアプリケーションサーバ、アプリケーション、または他のコンポーネントの複数のバージョンの処理などの、さまざまな状況に対処するための上記コンポーネントの使用を含む。
たとえば、一実施形態に従うと、システムは、新たなパーティションを作成し、当該新たなパーティションにおいてアプリケーションサーバ、アプリケーション、または他のコンポーネントの異なるバージョンをセットアップすることによって、当該アプリケーションサーバ、アプリケーション、または他のコンポーネントのさまざまなバージョンがさまざまなパーティションにデプロイされることを可能にする。トラフィックディレクタは、どのくらいのトラフィックおよび/またはどのタイプのトラフィックを、アプリケーションサーバ、アプリケーション、または他のコンポーネントの新バージョンに対して、アプリケーションサーバ、アプリケーション、または他のコンポーネントの旧バージョンにダイレクトすべきかを制御するように構成され得る。
アプリケーションの2つのバージョンのみがデプロイされ得る(かつアプリケーションの一方のバージョンはリタイアメント用にマークを付けられる必要がある)アプリケーションのプロダクション再デプロイメントとは異なり、一実施形態に従うと、システムは、アプリケーションの2つよりも多いバージョンを同時にデプロイしてアクティブにすることができ、唯一の要件は、それらが異なるパーティションにデプロイされることである。
一実施形態に従うと、システムはさらに、複数のテナントが基礎をなす論理を共有する能力をサポートし、特定のパッチレベルをクラスタレベルで維持するが、たとえば、いくつかのパーティションがその特定の時間に特定のパッチレベルをサポートできないと判断された場合はそれらのパーティションを必要に応じてさまざまなクラスタに移動させる。
同様に、一実施形態に従うと、システムは、試験するために1つのノードにおいてたとえばOracleホームのパッチングレベルバージョンを使用し、その後、試験が完了すると、Oracleホームのそのバージョンを必要に応じて他のノードにロールアウトする能力をサポートする。
図8は、一実施形態に従った、セッション互換性検出のサポートを含むパッチングのためのシステムをさらに示す。
図8に示されるように、本明細書に示される一実施形態および例に従うと、クラスタ500は、パッチ済サーバ502、使用不可能サーバ504、および未パッチサーバ506のグループを含む複数のグループで提供される、複数の管理されるサーバ(ここではMS1〜MS5として示される)を含み得る。
一実施形態に従うと、管理されるサーバが使用不可能になる(ここでは取消し線が引かれたMS3として示される)と、トラフィックディレクタ(たとえばOTD)は、MS3がダウンしていることを示すエラーメッセージ511を受信し得る。トラフィックディレクタは別の管理されるサーバMS2にコンタクトすることを試み得(512)、サーバMS2は、デシリアライゼーションエラーを検出すると、webコンテナに、たとえばFailoverGroupヘッダ情報を有する503メッセージを返信させる。トラフィックディレクタは、503ヘッダ情報に基づいて、今度は管理されるサーバMS4にその要求を再試行し得る(513)。次いで、MS4におけるアプリケーションサーバは、MS2から適切なセッション情報をフェッチし(514)、最後に当該要求に応答し得る(515)。
一実施形態に従うと、プロセスは、以下にさらに説明するように、レイジーセッションデシリアライゼーション518機能の使用を活用し得る。
図9は、一実施形態に従ったパッチングのためのシステムをさらに示す。
図9に示されるように、一実施形態に従うと、システムは、ドメイン内の1つのクラスタが、たとえば異なるOracleホームなどの異なるホームディレクトリを使用すること、したがって異なるアプリケーションサーバ(たとえばWLS)バージョンまたはパッチバージョンを用いて動作することを可能にする。当該クラスタについて管理されるサーバは、同じドメインからの他のクラスタをサポートする任意の管理されるサーバと同じホスト上に存在していてもよいし、異なるホスト上に存在していてもよい。
特に、図9に示されるように、システムは、C1 530、C2 532およびC3 534を含む複数のクラスタを含み得、その各々は、ここではパーティションA562、パーティションB564、パーティションC566およびパーティションN568として示される1つ以上のパーティション550、552、554を操作する。
一実施形態に従うと、パッチデータベース540は、ここではバージョンA542、バージョンBパッチセット1(PS1)544、およびバージョンBパッチセット2(PS2)546として示される、アプリケーションサーバ、アプリケーション、または他のコンポーネントの複数のバージョンについてのバージョンまたはパッチ情報を含み得る。
一実施形態に従うと、さまざまなパーティションがさまざまな時間にマイグレーションおよび/またはパッチされ得るため、たとえば、パーティションAは、特定のアプリケーションサーバ(たとえばWLS)の第1のバージョンAを有するクラスタC1から、当該アプリケーションサーバの異なるバージョンB PS1を有するクラスタC2にマイグレーションされ得る。同様に、パーティションCは、アプリケーションサーバのバージョンAを有するクラスタC1から、アプリケーションサーバのさらに別の異なるバージョンB PS2を有するクラスタC3にマイグレーションされ得る。
一実施形態に従うと、このパッチングプロセスのいくつかの利点として、個別のパーティションを、同じリソースを共有している他のパーティションに影響を与えることなく、アプリケーションサーバ、アプリケーション、または他のコンポーネントのより新しい(たとえばパッチ済)バージョン(たとえばWLSのより新しいバージョン)にマイグレーションできることが挙げられる。パッチング処理はさらに、たとえば、WLSのパッチ済バージョンに対するWLSアプリケーションサーバの初期バージョンのA/Bテスト、またはアプリケーションのさまざまなバージョンをWLSの特定のバージョンで試験することを可能にする。
一実施形態に従うと、ある期間の間、パーティションは2つのクラスタ(たとえばソースおよびターゲットクラスタ)内で同時に「ライブである(live)」と見なすことができ、これによって任意の既存のセッションが完了またはタイムアウトすることができる。パーティションマイグレーションが完了すると、パーティションは次に、アプリケーションサーバ、アプリケーション、または他のコンポーネントの任意のより新しい(たとえばパッチ済)バージョンを含む、ターゲットクラスタ内でのみ使用可能にされる。
図10は、一実施形態に従ったパッチングのためのシステムをさらに示す。
図10に示されるように、一実施形態に従うと、1つ以上のコンピュータノード、または当該ノード上でアプリケーションサーバ、アプリケーション、もしくは他のコンポーネントが実行されているサーバをパッチするために、それらのノード上のサーバはまずグレースフルにシャットダウンされる。
580において、準備スイッチ(たとえばprepareSwitchOracleHome)プリミティブがパッチすべきノードまたはサーバにおいて呼出され、これは、そのノードまたはサーバ用のノードマネージャに、そのホームディレクトリ(たとえばOracleホーム)の切替えを実行することになるスクリプトをセットアップするように指示する。このステップを用いて、ノードマネージャが演算を実行するのに必要なパラメータがノードマネージャに与えられる。
582において、リスタートノードマネージャ(たとえばRestartNodeManager)プリミティブに対する呼出がなされ、これによって、そのノードにおけるノードマネージャは制御をスクリプト(たとえばswitchOracleHomeスクリプト)に転送し、当該スクリプトは次いで、現在のホームディレクトリ(たとえばOracleホーム)を指定ディレクトリパスに移動させ(583)、パッチ済のアプリケーションサーバ、アプリケーション、または他のコンポーネント画像を元の場所の中に抽出してから、ノードマネージャを再開する。
584において、アサートスイッチ(たとえばAssertSwitchOracleHome)プリミティブが実行され、これによって、ホーム(たとえばOracleホーム)ディレクトリの切替え585が成功裏に完了したことが確認される。
588において、開始サーバ(たとえばStartServers)プリミティブがノード毎またはサーバごとに呼出され、レディアプリケーション確認(たとえばReadyAppCheck)が成功裏に戻ってきて(そのように構成されている場合)初めて完了する。これによって、ワークフローがそれ以上のノードまたはサーバをシャットダウンする前に、そのノードにおけるパッチ済のアプリケーションサーバ、アプリケーション、または他のコンポーネントのすべてが確実に要求に応えることができ、制限されたダウンタイムまたはダウンタイムなし(すなわちゼロ)がサポートされる。
図11〜図12は、一実施形態に従ったパッチングのためのシステムをさらに示す。
図11〜図12に示されるように、例示的な実施形態に従うと、システムは、3つの物理マシンまたはノード(ここではコンピュータノード1〜3として示される)にわたって実行されるクラスタ604内の複数の管理されるサーバを含み得、管理サーバはそれ自体のマシン(ここでは管理ノード600として示される)上で単独で実行されている。同じマシン上のクラスタ内の管理されるサーバの各対は、同じローカルドメインディレクトリおよび同じローカルホーム(たとえばOracleホーム)ディレクトリを共有している。各マシンは各自のノードマネージャを含む。
一実施形態に従うと、最初に、管理サーバおよび管理されるサーバは元のホームディレクトリを使用する(602、606、607、608)。パッチングプロセスは、管理される各サーバにパッチ済バージョンをコピーし;次いで(サービス中断なしで)管理サーバへのロールアウトを実行する(610)ことによって進行し得る。
一実施形態に従うと、管理されるサーバは、いくつかの管理されるサーバが一時的にシャットダウンされている間であっても、パッチされているアプリケーションサーバ、アプリケーション、または他のコンポーネントのフェイルオーバーを提供できるのに十分な数のマシンに十分に分散されている。管理されるサーバは次にパッチされ、パッチされた共有のストレージを指しているローリングリスタートが(616、617、618)次に実行される。このプロセスでは、状態複製のためにセッション損失が生じず、ダウンタイムが制限されるかなくなる(すなわちゼロ)。
例示的な実施形態
例示的な実施形態に従うと、アウトオブプレースパッチングは、クラスタ化に組込まれた既存の高可用性特徴を利用して、中断なしで動作するドメインの能力を維持する制御されたローリングリスタートにおいてパッチを適用する。プロセスは、複雑で長い実行タスクを自動化し、未パッチバージョン(または以前のバージョン)をロールバックのために保存し、回復不能エラーが起きた場合に自動復帰を提供することによって、エクスポージャを減らすように設計される。高レベルにおいて、プロセスは、ドメイン内のサーバによって使用されている単数または複数のOracleホームディレクトリをクローン化し;ゼロダウンタイム互換性パッチを複製ディレクトリに適用し;ロールアウトを処理するオーケストレーションタスクを開始することになっている。
一実施形態に従うと、ロールアウトタスクは、サーバごとに以下を順に調整する:共通のドメイン(ディレクトリ)を共有しているノード上のサーバをグレースフルにシャットダウンする;サーバと関連付けられたノードマネージャをリスタートする;現在のOracleホームディレクトリをバックアップ場所に移動させ、指定されたOracleホームディレクトリをその位置でデプロイする;および、サーバを開始し、そのように構成されている場合はReadyAppsCheckを待機する。
場合によっては、サーバの構成に基づいて、1つよりも多いサーバを一度にシャットダウンさせることが望ましい場合がある。任意の1つ時点でシャットダウンするサーバの数は、ロールアウトの影響を最小化するためにできるだけ小さく保つべきである。クラスタ内には、稼働中であり要求に応答可能な少なくとも1つのサーバが常にあることになる。
回復不能エラーが起こった場合、ロールアウトタスクは、当該タスクが行なったいずれの変更も自動的に復帰させるため、サーバはそれらの元の状態(以前のバージョン)に戻される。これによって、エラーが診断されて解決されている間、ドメインが完全に使用可能であることが確実になる。ロールバックは、元のOracleホームディレクトリを保存することによって可能となり、パッチが元のディレクトリではなくディレクトリを複製するために適用される理由の一部である。ロールバックプロセス時に、ロールバックの完了を妨げる別のエラーに遭遇した場合、エラーが発生し、調査を可能にするためにプロセスは停止する。エラーがクリアされると、復帰プロセスが再開され得る。
初期インストールおよび構成
一実施形態に従うと、アウトオブプレースパッチングを容易にするために、サーバにわたってアプリケーションサーバ(たとえばWLS)のインストールのために満たさなければならない要件がいくつかある。
ドメイン内には、Oracleホームの場所が参照される多くの箇所が存在する。これは、開始スクリプト、プロパティファイル、およびxml構成ファイル内の変数を含む。Oracleホームの新たなバージョンを指すためにこれらの場所のすべてを見つけて更新することは概して実際的でない。このため、一実施形態に従うと、ロールアウトは、既存のOracleホームを(ユーザが指定したバックアップ場所に)移動させ、所望のOracleホームをその位置で拡張することによって機能する。このプロシージャが、まだ実行中の管理されるサーバに影響を与えないことを確実にするために、Oracleホームディレクトリは、マシン上の影響を受けて管理されるサーバのすべてによって使用されなくてはならず、他のマシン上の管理されるサーバによって使用されてはならない。Oracleホームはさらに、ノードマネージャプロセスによって書込可能な場所になければならない。これらの条件を保証するために、Oracleホームディレクトリは、影響を受けて管理されるサーバにとってローカルなハードドライブ上にインストールされ得る。
サーバをアップグレードしつつアップタイムを維持するための鍵は、クラスタで構成された高可用性を利用することである。クラスタ内の最小数のサーバは常に動作可能でなければならない。同じマシン上のクラスタ内のサーバは(それらが共通のドメインディレクトリを共有している場合は)ともにリスタートされる必要があるため、クラスタ内のサーバは少なくとも2つの異なる物理マシン上でホストされることが必要であるが、クラスタごとに最低でも3つのマシンが推奨される。これによって、一部は稼働中でサービスを提供し続け、一部はローリングリスタートの一部として停止することができる。
要求を処理するために異なるマシン上で使用可能なサーバの数を判断する際、実行中であるが管理モードまたはスタンバイモードにある管理されるサーバは要求に応答しないため、これらのサーバを除外することが重要である。
ロールアウトプロセスは、管理サーバおよび管理されるサーバを同時に更新する必要がある場合は大幅に複雑化し得る。これが起こるのは、管理サーバおよび管理されるサーバが、同じマシン上で実行されて同じドメインディレクトリを共有するように構成されている場合であろう。管理サーバは、共有のOracleホームディレクトリから実行されているため、管理されるサーバと同時に停止しなければならない。管理されるサーバのインストールホームを分離して、管理されるサーバ単位でパッチをロールアウトできるようにした場合は、この制限は適用されない。このため、この問題を単純化する2つの異なる構成がサポートされる。
1.第1は、マシン上で実行されている管理されるサーバがない状態で、当該マシン上で管理サーバを実行することである。これによって、管理サーバを単独で1つのステップで更新することができ、それが完了すると、次のステップは、異なるマシン上のそのドメイン内の管理されるサーバを更新することである。
2.第2の構成は、管理サーバを管理されるサーバと同じマシン上で実行することを可能にするが、管理サーバにそれ自体の別個のドメインディレクトリを使い切らせることである。これによっても、管理サーバを個々に更新することが可能となり、管理されるサーバをそれら自体のステップで更新することができる。
ドメイン内のすべてのサーバを更新するメカニズムを提供することに加えて、この特徴は、ドメイン内の個々のクラスタを更新する能力も提供する。ユーザがクラスタロールアウトモードの使用を試みているとき、異なるクラスタにサーブする単一のノード上に複数の管理されるサーバがある場合、管理されるサーバは、それらがサーブしているクラスタに従って別個のドメインディレクトリを有する必要がある。また、それらのドメインディレクトリは別個のOracleホームディレクトリを指す必要があり、それらはノードマネージャの別個のインスタンスによって管理される必要もある。これは、一方のクラスタにサーブしている(かつまだ実行中である)管理されるサーバのOracleホームディレクトリに影響を与えることなく、他方のクラスタ用のノード上の管理されるサーバのすべてを停止させてそれらのOracleホームディレクトリを更新することができるようにするために必要である。
ドメイン内のさまざまな時間にさまざまなパーティションをパッチすることは、それ自体は明示的にサポートされていないが、パーティションを管理してクラスタレベルパッチングを使用することによって達成可能である。パーティションがその環境でどのように使用されるかに依存して、1つのパーティションをアップグレードすることなく別のパーティションをアップグレードすることが望ましい場合がある。この例は、各パーティションが異なるテナントによって使用中であり、一方のテナントをアップグレードする必要があるが、他方のテナントは使用可能なメンテナンスウィンドウを有していないという環境であり得る。この状況では、パーティションマイグレーション特徴を用いてパーティション同士を分離することができる。アップグレードが必要なパーティションは、異なるクラスタ(既存のまたは新たに作成された)にマイグレーションされ得、この新たなクラスタに対してクラスタレベルロールアウトが実行され得る。これを達成する最も単純な方法は、新たなクラスタが元のクラスタとは異なる物理マシン上でホストされており、ドメインディレクトリ、Oracleホーム、およびノードマネージャがオーバーラップしないことが確実である場合である。使用可能な他の物理リソースがない場合、このプロシージャは、新たなクラスタがOracleホームディレクトリのそれ自体のコピーを指しているドメインディレクトリのそれ自体のコピーを有しており、ノードマネージャのそれ自体のインスタンスが影響を受ける各マシン上で実行されている限り、サポートされ得る。
一実施形態に従うと、ノードマネージャは、現在のOracleホームを指定されたバックアップディレクトリに移動させ、新たなOracleホームをその位置で抽出またはコピーする役割を果たす。また、ノードマネージャは、新たなディレクトリを使い切るためにリスタートさせる必要がある。これを調整するために、各ノードは各自のノードマネージャを有する必要がある。
たとえば、上述の図10〜図12では、システムは3つの物理マシンにわたって実行されている、クラスタ内の複数の管理されるサーバを含み、管理サーバはそれ自体のマシン上で単独で実行されている。同じマシン上のクラスタ内の管理されるサーバの各対は、同じローカルドメインディレクトリおよび同じローカルなOracleホームディレクトリを共有しており;各マシンの各自のノードマネージャは実行されている。
クローン化およびクローン化画像のパッチング
一実施形態に従うと、既存の画像をクローン化してクローン化画像をパッチするために、システムは、たとえば既存のOracleホームをクローン化するためのFMW Movementスクリプトの使用などの、既存のツーリングに依拠し得る。クローン化されたOracleホームができると、ユーザは次に既存のOPatchツーリングを用いて画像をパッチすることができる。FMW Movementスクリプトを使用するOracleホームのクローン化の記述は以下に従う:
1.copyBinary.shを用いてWLSインストールのアーカイブを作成する。
2.pasteBinary.shを新たなディレクトリに用いて、WLSインストールのクローンを作成する(中央インベントリファイルの更新)。クローンが作成されると、ユーザはオラクルユニバーサルインストーラ(Oracle Universal Installer)を実行し、クローンに中央インベントリが登録されたことを確認し得る。
自動化されたロールアウト
上述のように、一実施形態に従うと、ゼロダウンタイムで更新をロールアウトすることは、大部分はサーバクラスタ化の高可用性特徴を活用することによって可能となる。サーバクラスタ化を用いると、アプリケーションがダウンタイムを被ることなく、管理されるサーバの1つ以上をオフラインにすることができる。実際に、グレースフルサーバシャットダウンを用いると、ほとんどの場合、1つのセッションの損失さえも防止できる。サーバを停止させること、サーバを更新すること、およびサーバをサービス状態に戻すことの調整は、パッチングプリミティブと称されるカスタムコマンドを作成し、オーケストレーションフレームワークを用いてそれらを実行することによって処理され得る。コマンドはドメインのトポロジを分析し、次にサーバおよびノードマネージャのすべてを安全に更新する最良の方法を決定するのに対し;オーケストレーションフレームワークはプロセスのモニタリングおよびエラー処理を提供する。
一実施形態に従うと、このメカニズムが適切に機能するためには、アップグレード中のクラスタ内の管理されるサーバを2つ以上の物理マシンに分散する必要がある。この理由は、同じマシンによってホストされるクラスタ内のすべてのサーバは共通のドメインディレクトリを共有することになり、したがってともに停止させなければならないためである。ダウンタイムを回避するために、クラスタ内のサーバのいくつかは他のサーバと異なるマシン上で実行されなければならない。このように、要求に応えるために使用可能なサーバが常にいくつかある。
この技術によって導入される別の制約は、クローン化されたOracleホームに適用されるパッチが、サーバを、それらサーバが未パッチサーバとの互換性が依然としてある状態にしておかなければならないという要件である。より具体的には、パッチロールアウト時にサーバが故障した場合、ユーザのセッションはパッチ済サーバと未パッチサーバとの間でシームレスにマイグレーション可能でなければならない。
一実施形態に従うと、この態様でロールアウト可能な演算がいくつかある。これらは、パッチ済のOracleホームをロールアウトすること、サーバにわたってJAVA(登録商標)_HOMEの場所を更新すること、アプリケーションを更新されたバージョンに置換すること、および単一のロールアウトにおけるそれらの演算の任意の組合せを含む。すべてのサーバにわたってローリングリスタートを実行する能力も提供される。
例示的なパッチングAPI
一実施形態に従って、アップグレードまたはパッチをロールアウトするために用いられ得る例示的なパッチングAPIを以下に説明する。他の実施形態に従うと、異なるおよび/または付加的なパッチングAPIがサポートされてもよい。
Figure 2017529628
RolloutUpdateコマンド
一実施形態に従うと、rolloutUpdateコマンドは、サーバ上のOracleホーム、Javaホーム、およびアプリケーションを更新する能力を提供する。また、当該コマンドは、オプションのパラメータのうちのどれが指定されているかに依存して、それらの変更の任意の組合せを可能にする。Oracleホームを更新するためには、ユーザはrolloutOracleHomeパラメータ、backupOracleHomeパラメータ、およびisRollbackパラメータを指定する必要がある。Javaホームを更新するためには、ユーザはjavaHomeパラメータを指定する必要がある。アプリケーションを更新するためには、ユーザはapplicationPropertiesパラメータを指定する必要がある。isDryRunおよびautoRevertOnFailureオプションはすべての場合に有効であり、isSessionCompatibleオプションは、アプリケーションおよび/またはOracleホームが修正中である場合にのみ考慮される。単一のロールアウト時にどの更新が実行可能であるかについての制限はない。ユーザがOracle Homeパラメータ、JavaHomeパラメータ、またはApplicationPropertiesパラメータを指定しない場合は、ローリングリスタートが実行される。
シンタックス
rolloutUpdate(target, [rolloutOracleHome, backupOracleHome, isRollback], [javaHome], [applicationProperties], [options])
Figure 2017529628
Figure 2017529628

新たなパッチ済のOracleホームをロールアウトする:
Figure 2017529628
元のOracleホームにロールバックする:
Figure 2017529628
Javaの新たなバージョンのみをロールアウトする:
Figure 2017529628
アップグレードされたアプリケーションのみをロールアウトする
Figure 2017529628
新たなパッチ済のOracleホームをJavaの新たなバージョンでロールアウトする
Figure 2017529628
新たなパッチ済のOracleホーム、Javaの新たなバージョン、およびアップグレードされたアプリケーションをロールアウトする
Figure 2017529628
RolloutOracleHomeコマンド
一実施形態に従うと、rolloutOracleHomeコマンドは、Oracleホームを更新する能力を提供する。rolloutOracleHomeタスクは、どのサーバをどの順序で更新する必要があるかを理解し、それらを安全に更新するワークフローを作成する役割を果たす。これは、サーバのグレースフルシャットダウン、Oracleホームディレクトリの置換、ノードマネージャのリスタート、およびサーバの再開を含む。ロールアウトタスクは、ステータスがポーリングされ得るWorkflowProgressMBeanを返す。
シンタックス
rolloutOracleHome(target, rolloutOracleHome, backupOracleHome, isRollback, [options])
Figure 2017529628

パッチ済のOracleホームをロールアウトする
Figure 2017529628
RolloutJavaHomeコマンド
一実施形態に従うと、rolloutJavaHomeコマンドは、影響を受けるサーバが使用するJavaホームを更新する能力を提供する。rolloutJavaHomeタスクは、どのサーバをどの順序で更新する必要があるかを理解し、それらを安全に更新するワークフローを作成する役割を果たす。これは、サーバのグレースフルシャットダウン、サーバが使用するJavaホームの場所の更新、ノードマネージャのリスタート、およびサーバの再開を含む。このタスクは、ステータスがポーリングされ得るWorkflowProgressMBeanを返す。
シンタックス
rolloutJavaHome(target, javaHome, [options])
Figure 2017529628

ドメイン内のすべてのサーバ上のJavaホームを更新してjavaの最新のインストールされたバージョンを使用する:
Figure 2017529628
RolloutApplicationsコマンド
一実施形態に従うと、rolloutApplicationsコマンドは、サーバ上にデプロイされたアプリケーションを更新する能力を提供する。rolloutApplicationsタスクは、どのサーバをどの順序で更新する必要があるかを理解し、それらを安全に更新するワークフローを作成する役割を果たす。これは、サーバのグレースフルシャットダウン、アプリケーションの更新、ノードマネージャのリスタート、およびサーバの再開を含む。このタスクは、ステータスがポーリングされ得るWorkflowProgressMBeanを返す。
シンタックス
rolloutApplications(target, applicationProperties, [options])
Figure 2017529628

アップグレードされたたアプリケーションをロールアウトする
Figure 2017529628
RollingRestartコマンド
一実施形態に従うと、rollingRestartコマンドは、サーバを順次にリスタートする能力を提供する。rollingRestartタスクは、どのサーバをリスタートする必要があるかを理解し、それらを安全にリスタートするワークフローを作成する役割を果たす。これは、サーバのグレースフルシャットダウンおよびサーバの再開を含む。このタスクは、ステータスがポーリングされ得るWorkflowProgressMBeanを返す。
シンタックス
rollingRestart(target, [options])
Figure 2017529628

ドメイン内のすべてのサーバのローリングリスタートを行なう
Figure 2017529628
Javaホームの更新
一実施形態に従うと、ゼロダウンタイムパッチング特徴は、指定されたターゲット内のサーバについてJAVA_HOME設定を更新するためのメカニズムを提供する。このプロセスを開始する方法は2つあり、1つはスタンドアローンコマンドrolloutJavaHomeを用いることであり、もう1つは任意のjavaHomeパラメータをrolloutUpdateコマンドに対して指定することによるものである。後者を用いる場合、同じロールアウトにおいてOracleホームおよび/またはアプリケーションを更新することができる。JAVA_HOMEを設定する機能は、Oracleホームまたはアプリケーションもアップグレードされるか否かに係わらず同一である。
一実施形態に従うと、Oracleホームを更新するための上記のトポロジ前提条件は、Javaホームの更新にも適用される。さらに、この機能を提供できるようにするために、指すべきJAVA_HOMEを設定するJavaのバージョンは、ローカルにアクセス可能などこかに既にインストールされていること、および影響を受けるすべてのサーバにとってJAVA_HOMEへのパスが同じであることが必要である。サーバをシャットダウンする前にJavaをインストールすることは、Javaの各バージョン(現バージョンおよび新バージョン)がそれらへの別個の固有のパスを有する必要があることを意味する。
一実施形態に従うと、Javaホームの変更をロールアウトするために、同じOracleホームを共有しているマシン上のすべてのサーバを、そのマシン上で実行されているノードマネージャとともに、一緒にシャットダウンしなければならない。それらがシャットダウンされている間、ネイティブスクリプトがpasteBinaryの特別なフォームを用いて、Oracleホームディレクトリ内のすべてのスクリプトを更新して新たなJAVA_HOME場所を用いる。Java更新スクリプトは次にドメインディレクトリ内の必要な開始スクリプトを修正し、さらに、JAVA_HOMEへの新たなパスを用いる。次いで、ノードマネージャおよびそのマシン上のサーバが再開される。JAVA_HOMEの参照を含むOracleホームの下のすべてのスクリプトは、指定されたJAVA_HOMEを指す。JAVA_HOMEの参照を含む現在のドメインディレクトリの下のすべてのスクリプトは、指定されたJAVA_HOMEを指す。
成功裏に実行されたJavaホームの変更をロールバックする最も簡単な方法は、古い場所を新たなパスとして、新たなupdateJavaHomeコマンドを単に実行することである。しかし、いくつかのインスタンスにおいては、システムは、Javaホームも変更したOracleホーム変更のロールバックもサポートする。Oracleホームスクリプトをそれらの元の状態に戻すことは、Oracleホームディレクトリを以前の状態に復元する固有の部分として起こる。ユーザはロールバックコマンドを発行する際に元の(所望の)Javaホーム場所を指定していない可能性があるため、ドメインスクリプトをロールバックすることはこれほど単純でない場合がある。この問題に対処するために、updateOracleHomeコマンドは、Oracleホームディレクトリがバックアップ場所に移動すると、当該ディレクトリが、更新時に関連のドメインスクリプトの現バージョンのコピーを保持する「domainBackup」と称される付加的なディレクトリをさらに含むように、適合され得る。このように、ユーザが将来、本願のバックアップされたOracleホーム場所からロールバックコマンドを実行する場合、それらのドメインファイルを所定の位置にコピーバックすることができる。
アプリケーションの更新
上述のように、一実施形態に従うと、ゼロダウンタイムパッチング特徴は、アプリケーションサーバにデプロイされたアプリケーションを更新するためのメカニズムも提供する。このための1つのメカニズムは、それらをOracleホームディレクトリに含み、そこからそれらを非ステージデプロイすることである。このようにデプロイされたアプリケーションの更新は、Oracleホームの新バージョン(更新されたアプリケーションが含まれる)がロールアウトされるときに起こる。このようにデプロイされたアプリケーションは、ロールアウトされている新たなOracleホームとともに含まれている最新バージョンを有すること以外は、付加的な情報またはステップが不要である。Oracleホームディレクトリの外部のアプリケーションを更新するためのプロセスは、ステージされたアプリケーションと、ステージされていないアプリケーションとでは異なるが、いずれの場合も、現在のアプリケーションディレクトリの場所を突き止めること、そのディレクトリをバックアップ場所に移動させること、およびアプリケーションの新バージョンを含むアプリケーションディレクトリを元の場所の中に移動させ、旧アプリケーションコードを新アプリケーションコードに本質的に置換することを含む。この動作は元のディレクトリがアクセスされている間は実行できないため、影響を受けるサーバはこのプロシージャの間はシャットダウンしなければならない。しかし、ノードマネージャはアプリケーションコードから独立しているため、このプロセスは(OracleホームまたはJavaホームの更新とは異なり)ノードマネージャがまだ実行中である間に行われ得る。新たなOracleホームのロールアウトと同様に、いくつかの準備が必要である。たとえば、新たなアプリケーションコードを含むディレクトリは、ロールアウトが開始される前に、影響を受けるすべてのノードに分散されなくてはならず、かつ、ノードごとに同じパス内になくてはならない。
図13〜図15は、一実施形態に従ったパッチングイベントダイヤグラムを示す。
ステージされたアプリケーション、非ステージアプリケーション、および外部ステージアプリケーションは異なってデプロイされるという事実のために、それらは適切に更新されるために異なる処理を必要とする。すべてのモードにおいて、新たなアプリケーションソースは管理サーバ上のディレクトリとして提供される必要がある。非ステージモードおよび外部ステージモードでデプロイされるアプリケーションについては、新たなアプリケーションソースも、それが管理サーバ上にあるのと同じパス内で各ノードに予め分散される必要がある。
ステージされたモード
管理ノード620および管理サーバ622と、ノードマネージャ624および2つの管理されるサーバ(ここではMS1およびMS2として示される)を含むノード1との間のインタラクションを示す図13に示されるように、ステージされたモードの一実施形態に従うと、ステージモードでアプリケーションを実行するサーバは、それらのソースを管理サーバから直接取得する。アプリケーションを更新するために、まずソースを管理サーバ上で更新する必要があり、次に、サーバが管理モードにある間、そのソースを更新して変更を適切にピックアップするようにソースをトリガするために特定のターゲット再デプロイが各々について個々に呼出される。この演算グループは、整合性のために共通のクラスタ内の共通のマシン上でともにサーブする。
非ステージモード
管理ノード630および管理サーバ632と、ノードマネージャ634および2つの管理されるサーバを含むノード1との間のインタラクションを同様に示す図14に示されるように、非ステージモードの実施形態に従うと、非ステージアプリケーションは、サーバが開始されるとサーバのマシン上のディレクトリからロードされる。ここでアプリケーションコードを更新するために、同じアプリケーションディレクトリを指しているそのマシン上のすべてのサーバを同時にシャットダウンする必要がある。次いで、ディレクトリのコンテンツが脇に移動し、アプリケーションのより新しいバージョンに置換され得る。この更新はディレクトリを置換することによってなされるため、システムは、非ステージアプリケーションについて共有のストレージディレクトリを使用することをサポートし得ない。サポートすると、依然としてディレクトリからアプリケーションを実行している他のサーバにとって問題が生じるためである。次いで、影響を受けるサーバが管理モードで開始され、特定のターゲット再デプロイコマンドが、変更をピックアップするように個人ごとに発行される。
外部ステージモード
管理ノード640および管理サーバ642と、ノードマネージャ644および2つの管理されるサーバを含むノード1との間のインタラクションを同様に示す図15に示されるように、外部ステージモードの実施形態に従うと、外部ステージアプリケーションは、それらのアプリケーションソースがワークフローによって更新される必要があるという点で非ステージアプリケーションと同様である。しかし、主な相違点は、外部ステージアプリケーションソースディレクトリはサーバのステージングディレクトリ内にあり、このため、各サーバは更新すべきディレクトリのそれ自体のコピーを有していることである。ワークフローは、他のステージモードと同様に、共通のマシン上のサーバをともにシャットダウンしてから、影響を受ける各サーバのステージディレクトリを更新した後にそれを管理モードで開始し、特定のターゲット再デプロイを用いて、変更をピックアップするようにサーバをトリガする。
上記のプロセスが機能するためには、アプリケーションコードの置換は、サーバがシャットダウンされる際に当該サーバについてのみ行なわなければならない。したがって、同じアプリケーションディレクトリを共有しているいずれのサーバも同時にシャットダウンしなければならない。これによって、サーバが、アプリケーションディレクトリについて共通の共有ストレージ場所を使用することが防止される。各マシンは、アプリケーションディレクトリのローカルコピーと、新たなアプリケーションディレクトリのローカルコピーとを有する必要がある。新たなアプリケーションディレクトリへのパス、現在のアプリケーションディレクトリ、およびバックアップ場所は、影響を受けるすべてのサーバについて同一でなければならない。また、アプリケーションはOracleホームディレクトリ内に存在することはできない。
ロールアウトが進行するにつれて、かつサーバが依然として要求に応えている間に、アプリケーションの変更は交互にサーバにわたってロールアウトされるため、ロールアウトが開始される前に作成されたセッションは、アプリケーションのより新しいバージョンとの互換性がない可能性がある。これによって、セッションがロールアウト時にどのように処理されるのか、およびサーバがどのようにシャットダウンされるのかが多少複雑化するが、これはアプリケーションの更新をサポートするコマンド内のisSessionCompatibleフラグを用いることによって対処され得る。アプリケーションの旧バージョンとアプリケーションの新バージョンとの間のセッション同士が互換性がある場合、一定のセーフガードは不要であり、ロールアウトはより効率的に完了する。
一実施形態に従うと、ユーザから3つの情報が概して必要である:アプリケーション名(構成内のより多くの情報を調べるために用いられる);新たな/パッチ済のアプリケーションコードの場所(ローカルディレクトリである必要がある);および現在のアプリケーションディレクトリがバックアップされることになる場所(これもローカルディレクトリである必要がある)。現在のアプリケーションソース場所およびステージモードは、各サーバおよびそのアプリケーションの構成に基づいてワークフローによって計算することができる。
この減少した一組の情報でさえも、コマンドラインについて指定する際には扱いにくい場合がある。これに対処するために、一実施形態に従うと、情報は、コマンドが実行されるとコマンドが情報を読むことができる場所に、コマンドを発行する前にユーザによってテキストファイルで入れられ得る。それぞれのコマンドについてのコマンドライン引数は単純にこのファイルへのパスである。
さまざまな実施形態に従うと、ファイルを定義するさまざまなフォーマットを用いることができ、主な考慮事項は、人がファイルを生成することになるため、ファイルが人に優しい必要があることである。たとえば、JSONは人間が読取可能な適切なバランスであり、容易に認識でき、ユーザが各アプリケーションのプロパティに同じ名前を用いることを可能にし、一般的に公知でパースしやすいという付加的な利点がある。
ローリングリスタート
一実施形態に従うと、ゼロダウンタイムパッチング特徴は、1組のサーバを1つずつリスタートするためのメカニズムを提供する。サーバまたはOracleホームまたはドメインディレクトリ上で行なわれている構成の変更はないため、共通のOracleホームディレクトリから実行される同じマシン上に複数のサーバがある場合でも、サーバは1つずつ停止される。また、この理由のために、ワークフローに失敗があった場合、以前に影響を受けたサーバに復元する元の状態がないため、ワークフローは復帰しない。
進行モニタリング
一実施形態に従うと、WLSTロールアウトコマンドは、ロールアウトタスクの進行を監視するために問合せられ得るWorkflowProgressMBeanを返す。
ロールアウト実装
一実施形態に従うと、この特徴は、ロールアウトタスクを達成するためにいくつかの高レベル演算またはパッチングプリミティブを導入する。これらの演算は、インターフェイスがワークフローにおいて管理され得るように、オーケストレーションフレームワークからインターフェイスを実装する。パッチングプリミティブは、さらに高レベルのパッチングプリミティブによって呼出され得る。たとえば、PatchNodeプリミティブは、ShutdownServer、およびPrepareSwitchOracleHome、RestartNodeManager、AssertSwitchOracleHome、およびStartServerなどの他のプリミティブを呼出し得る。
一実施形態に従うと、ロールアウトWLST呼出は、PatchingFacadeMBeanを用いてワークフローを作成し、それを実行のためにワークフローライフサイクルマネージャ(たとえばWorkflowLifecycleManager)に渡す。ワークフローは、たとえば、RolloutDirectory;ともにアップグレードされる必要があるサーバグループ(同じクラスタ、同じマシン)を判断するCheckPrerequisites;および、サーバグループごとに:サーバごとにShutdownServer(グレースフルに)、ノードについて一度のPrepareSwitchOracleHome、ノードについて一度のRestartNodeManager、ノードについて一度のAssertSwitchOracleHome、およびサーバごとにStartServerなどのプリミティブを組込む。
一実施形態に従うと、PatchServerプリミティブは一度に1つのサーバをパッチするのに使用可能である。しかし、Oracleホームをロールアウトすると、ディレクトリを共有するノード上のすべてのサーバに影響を与えるため、影響を受ける各ノード上にすべてのサーバを含むことが必要である。これは、他のコンポーネントが使用するために、または部分的なロールアウトから回復するために提供される。それは、影響を受ける単一のサーバについて以下のプリミティブを呼出す:サーバごとにShutdownServer(グレースフルに)、ノードについて一度のPrepareSwitchOracleHome、ノードについて一度のRestartNodeManager、一度のAssertSwitchOracleHome、およびサーバごとにStartServer。
一実施形態に従うと、Oracleホームディレクトリが新たな画像に置換される方法は以下を含む:1.サーバがグレースフルにシャットダウンされる;2.prepareSwitchOracleHomeプリミティブが呼出される。このプリミティブは、そのノード用のノードマネージャに、Oracleホームディレクトリの切替えを行なうことになるスクリプトをセットアップするように命じる。このステップは、ノードマネージャが演算を行なうために必要なすべてのパラメータをノードマネージャがどのように取得するかである;3.次のステップは、RestartNodeManagerプリミティブを呼出すことである。これによって、ノードマネージャが制御をswitchOracleHomeスクリプトに転送する。そのスクリプトは、現在のOracleホームを指定されたディレクトリパスに移動させ、新たな画像を元の場所の中に抽出してからノードマネージャを再開する;4.実行すべき次のプリミティブは、AssertSwitchOracleHomeプリミティブである。このプリミティブは、Oracleホームディレクトリの切替えが成功裏に完了したことを確認する;そして、5.呼出される最後のプリミティブはStartServersである。これはサーバごとに呼出され、ReadyAppCheckが成功裏に戻ってきて(そのように構成されている場合)初めて完了する。これによって、ワークフローがそれ以上のサーバをシャットダウンする前に、すべてのアプリケーションが確実に要求に応えることができる。
エラーおよび失敗処理
ローリングリスタートを調整してOracleホームディレクトリを更新するためのオーケストレーションフレームワークを用いる利点の1つは、プロセスが多くのステップを含み得、数時間掛かり得ることである。必要なステップを手動で実行することは面倒で時間が掛かるため、エラーおよび非効率に繋がりやすい。プロセスを自動化することによって、引起こされるヒューマンエラーの機会が減少し、プロセスを実行するのに必要な時間をより効率的に使用でき、いくつかの失敗処理オプションが提供され、最悪の場合、その変更のすべてをそれらの元の状態に自動的に復帰させることができる。
一実施形態に従うと、複数のコマンド(または他のプリミティブ)で構成されるプリミティブを実行する際、失敗を処理可能な方法がいくつかある。個々のコマンドの失敗は、プリミティブを構成するのに用いられる設定に従って無視または再試行され得る。論理復帰演算(ファイルを新たな場所に移動させた後にその元の場所に戻すなど)を有する各プリミティブは、CommandRevertInterfaceを用いて復帰挙動も定義し得る。回復不能エラーに遭遇した場合(ロールアウト演算の完了の成功を妨げ、再試行後に成功しないエラー)、完了したステップが、当該ステップが完了したのと逆の順序で復帰される。この復帰段階時にさらなる失敗に遭遇すると、復帰プロセスは停止し、問題はオペレータによって手動で解決されなければならない。
一実施形態に従うと、ユーザはさらに、失敗が起こった場合にワークフローが自動的に復帰すべきでないと指定することができ、これによって、ワークフローの進行を妨げた問題を修正する機会がユーザに与えられる。ユーザがこれを行なうことができる場合、ユーザは次に、停止したワークフローに対する実行方法を呼出すことができ、当該方法はその最後に成功裏に完了したコマンドから進む。ユーザが、ワークフローの失敗の原因となったエラーをクリアすることができない場合、ユーザは、ワークフローを復帰させるために、停止したワークフローに対して復帰を呼出すことができ、その最後に成功裏に完了したコマンドで開始する。また、ワークフローは、それに対するキャンセルを呼出すことによって、または復帰時に回復不能エラーに遭遇することによって停止され得る。
ロールバック
状況によっては、Oracleホームのパッチ済バージョンがドメイン内のすべてのサーバに成功裏にロールアウトされるが、パッチ済バージョンとともに実行した後に、パッチ自体の問題が発見される場合がある。この場合、更新をロールバックし、すべてのサーバを以前のバージョンに戻すことが望ましい場合がある。一実施形態に従うと、この演算はロールアウトプロセスを再び実行することによって、しかし前のバージョンをターゲットバージョンとして用いることによって達成され得る。管理サーバが常に確実に最高パッチレベルにあるようにするために、これは、以前のパッチをまずクラスタに、次に個々に管理サーバにロールアウトすることによってなされるべきである。バージョンをロールバックすることには潜在的な問題がいくつかある。たとえば、より新しいバージョンに導入された特徴についての構成情報が損失する可能性があり、スキーマチェンジを取消すとトランザクションデータが損失する可能性がある。
パッチングファサード
一実施形態に従うと、システムはパッチングファサード(facade)(POJOとして)およびPatchingFacadeMBeanの両方を提供し得る。MBeanバージョンは非MBeanバージョンへのパススルーとして機能するが、進行オブジェクトをpojoのものではなくMBeanのものとして返す。ファサードにおける方法は、オーケストレーションフレームワークの知識をカプセル化し、これは、PatchingWorkflowBuilderにおける適切な方法を呼出して、WorkflowLifecycleManagerに進入するWorkflowBuilderを作成することを担当することを含む。露出したパッチングプリミティブごとに、他のコンポーネントが当該プリミティブを直接呼出すことを可能にする方法が、WorkflowBuildersを作成してプリミティブのいくつかを組合せる高レベル呼出しとともに提供され得る。アクティブな、かつ完了したワークフローのリストの問合せを可能にし、ワークフローの名前からワークフローの進行を調べるための方法も提供され得る。ワークフローは開始されると呼出側によって名前を割当てられ、名前は、ワークフローを特定してその進行を問合せるために用いられ得るため、固有でなければならない。
パッチングプリミティブ
一実施形態に従うと、パッチングプリミティブは、アウトオブプレースパッチングソリューションが必要とするローリングリスタートをグレースフルに実行するために必要な演算である。下には、各プリミティブのリスト、およびそれが何を行なうかの説明、それがどのフォールトトレランスメカニズムをサポートするか、およびそれが必要とする属性がある。
Support for retry(再試行のサポート)−これは、プリミティブが、最初に失敗した場合に再試行されるべき挙動を有している場合は真である。これは、次のサービスなど、移行中の可能性がある別のオブジェクトの状態に依存するプリミティブについて、または信頼性のない接続などの間欠的な失敗を処理するために用いられ得る。
Support for revert(復帰のサポート)−これは、プリミティブが、それが属するワークフローが復帰中である場合に実行され得る論理「取消」演算を有する場合は真である。プリミティブが復帰の事例について任意の特別な挙動を定義している場合、それはここに記述される。
Customized resume(カスタマイズされた再開)−ワークフローは、それが管理サーバリスタートのために一時停止した後に再開され得る。標準的な再開機能を無効にし、場合によってはいくつかの前提条件が依然として当てはまることを再確認する機会をプリミティブ与えるインターフェイスが存在する。プリミティブが再開の事例について任意の特別な挙動を定義している場合、それはここに記述される。
Ignore failures(失敗を無視)−これは、ワークフローの一部として実行されるが、プリミティブが成功裏に完了しない場合はワークフローを復帰させるべきでないプリミティブについて真である。これは、ワークフローの成功にとって絶対不可欠でない演算を試みるプリミティブによって用いられ得る。
一実施形態に従うと、各プリミティブはisDryRunと称されるフィールドも確認する。このisDryRunフィールドが真に設定されている場合、プリミティブは、プリミティブが実際には実行しないが実行したであろう作業をログ記録する。プリミティブはさらにいくつかの整合性確認を実行するが、このモードでは適用できない整合性確認もある。たとえば、StartServerプリミティブは、StopServerプリミティブがサーバを実際にシャットダウンしたことを予期できないため、サーバが停止したことを確かめる確認を実行しない。
一実施形態に従うと、アドミニストレータが、起こり得る任意のエラーを診断し、どのプリミティブがどのノードおよびサーバに対して実行されたかを見直すのを助けるために、各プリミティブは、トップレベルワークフローのワークフローid、実行中のプリミティブのタイプ、および影響を受けるターゲットを、その他の関連の情報とともに示す少なくとも1つのログメッセージをサーバログに出力することが必要である。
例示的なパッチングプリミティブ
一実施形態に従って、アップグレードまたはパッチをロールアウトするために用いられ得る例示的なパッチングプリミティブを以下に説明する。他の実施形態に従うと、異なるおよび/または付加的なパッチングプリミティブがサポートされてもよい。
シャットダウンサーバ
一実施形態に従うと、このプリミティブは、指定された管理されるサーバをグレースフルにシャットダウンする。これは概して、プロセスにおける作業がグレースフルに処理されることを可能にしつつ、管理されるサーバが「RUNNING(実行中)」から「SHUTDOWN(シャットダウン)」状態に移行する、長い実行プロセスである。プリミティブは基本的に、WLSにおけるグレースフルシャットダウン特徴に依拠する。サーバを実際にシャットダウンする前に、プリミティブはサーバの現在の状態を取得し(それがRUNNING(実行中)、SHUTDOWN(シャットダウン)、ADMIN(管理)、またはSTANDBY(スタンバイ)のいずれかにかかわらず)、lastServerStateと称される共有の状態属性を更新する。これは、サーバがそもそも開始されるべきであるか否かを判断するためにStartServerプリミティブによって用いられる。ShutdownServerプリミティブが実行されたときにサーバが停止されていると、StartServerプリミティブはサーバを開始しない。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
UpdateOracleHomeDirectory
一実施形態に従うと、このプリミティブは、Oracleホームディレクトリを新ディレクトリのコンテンツに更新する作業を実行する。現在のOracleホーム場所から実行されるいずれのプロセスも、まずシャットダウンすべきである。ノードマネージャは、外部スクリプトに制御を引渡し、外部スクリプトは新たなディレクトリが所定の位置に置かれると当該ディレクトリから制御をリスタートする。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
PrepareSwitchOracleHome
一実施形態に従うと、このプリミティブは、Oracleホームディレクトリを置換してノードマネージャをリスタートするために用いられることになるスクリプトをセットアップするためにノードマネージャが必要とするパラメータをノードマネージャに与える。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
AssertSwitchOracleHome
一実施形態に従うと、このプリミティブは、Oracleホームが成功裏に更新されたことを確認するために、ノードマネージャがリスタートした後に用いられる。これは、更新が成功した場合は真を返すが、そうでなければ失敗する。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
StartServer
一実施形態に従うと、このプリミティブは(新たなパス場所を用いて)管理されるサーバを開始する。サーバは、ここに述べられるようにSTANDBY、ADMINまたはRUNNINGモードで開始するように構成され得る。この情報は構成内に持続され、サーバが次に(再び)開始されるときに用いられる。サーバは、このプリミティブを通して開始されると、サーバが開始されるように構成されているいずれかのモードに自動的に移行する。デフォルトサーバ始動状態はRUNNINGである。
一実施形態に従うと、このプリミティブはさらにlastServerState共有属性の値を確認し、ShutdownServerプリミティブが呼出されたときにサーバが既にSHUTDOWN状態にあったかどうかを確かめる。既にSHUTDOWN状態にあった場合、元の状態を保存したいため、StartServerプリミティブはサーバを開始しない。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
RestartNodeManager
一実施形態に従うと、このプリミティブはノードマネージャをリスタートする。Javaベースのノードマネージャプロセスは、startNodeManagerスクリプトが認識する特定のリターンコードで出る。このリターンコードを見ると、startNodeManagerスクリプトはupdateOracleHomeスクリプトをキックオフする。そのスクリプトはドメインディレクトリ内に存在しており、現在のOracleホームディレクトリを指定されたバックアップ場所に移動させ、(新たなディレクトリがディレクトリではなくアーカイブである場合はpasteBinaryを用いて)新たなOracleホームディレクトリを所定の位置に移動させる役割を果たす。次いで、当該スクリプトは新たなOracleホームディレクトリからノードマネージャを開始する。updateOracleHomeスクリプトは、アーカイブを抽出するエラーまたは新たなディレクトリを所定の位置に移動させるエラーに遭遇した場合、元のディレクトリを所定の位置に戻し、ノードマネージャを開始する。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
ExecScript
一実施形態に従うと、このプリミティブは指定されたマシン上のdomain/bin/patchingディレクトリからカスタムスクリプトを実行する。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
UpdateNodeDirectory
一実施形態に従うと、このプリミティブは、個々のノードについてOracleホームディレクトリを更新するために必要なすべてのプリミティブを呼出す。それは、ShutdownServer、UpdateOracleHomeDirectory、PrepareSwitchOracleHome、AssertSwitchOracleHome、RestartNodeManager、StartServerを呼出す。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
RolloutDirectory
一実施形態に従うと、これは、ドメインまたはクラスタにわたってOracleホーム更新をロールアウトするための主要なトップレベルプリミティブである。それは、ロールアウトが成功するようにすべての他のプリミティブを調整する。それは、ロールアウトモードを考慮に入れて、どのサーバを更新すべきかを判断し、サーバおよびノードマネージャが正しい順序で更新されるようにする。それは、それ自体の成功を妨げ得るいずれかの構成問題を迅速に見つけることを試みて、checkPrerequisitesを第1のステップとして呼出す。次いで、それは、正確な順序でノードごとにUpdateNodeを呼出す。
パラメータ
プリミティブに対するパラメータは、任意の共有される状態オブジェクトと同様に、名前で渡される。名前によるパラメータおよび共有の状態オブジェクトの表を以下に示す。
Figure 2017529628
フォールトトレランスサポート
Figure 2017529628
シンボリックリンク
典型的なシステムにおいて、ドメイン内には、Oracleホームの場所が参照される多くの箇所が存在し得る。これは、開始スクリプト、プロパティファイル、およびxml構成ファイル内の変数を含む。一実施形態に従うと、Oracleホームディレクトリへのパス内にシンボリックリンクを用いることによって、システムは単にシンボリックリンクを変更するだけでOracleホームの場所を更新することができる。このように、システムは、パスを変更するときにパスを参照するすべてのファイルを追跡して更新しなくてもよい。各ノード上で、Oracleホームを含む共有のストレージは、共有のストレージデバイス上の共通ディレクトリ内にインストールされた複数のアプリケーションサーバ(たとえばWLS)バージョンを潜在的に露出するレベルでマウントされる。このように、新たなOracleホームディレクトリが作成されてパッチされ得、これらのいずれのノード上のマウントポイントも変更することなく使用可能になる。symlinkは、アプリケーションサーバの特定のバージョンをマウントディレクトリを通して指すように作成される。
共有ストレージ上のホーム
一実施形態に従うと、ロールアウトオーケストレーションタスクを実行するためのプリカーサーとしてクローン化してパッチしなければならないディレクトリの数を最小化するために、Oracleホームは、パッチされるすべてのサーバがアクセス可能な共有のストレージデバイス上に位置することが推奨される。こうして、単一の複製が作成されてパッチされ得、すべてのサーバが同じストレージポイントをマウントすることができる。提供されるストレージは、それがすべてのサーバにとっての単一の故障点とならないように、いくらか冗長構成されていることが推奨される。また、各サーバのシンボリックリンクが同じ方法で更新され得るように、すべてのサーバが同じパスを用いて共有のストレージ画像をマウントすることが必要である。
別個のマシン上のクラスタ内のサーバ
上述のように、一実施形態に従うと、サーバをアップグレードしつつアップタイムを維持するためのファクタは、クラスタで構成された高可用性を利用することである。一実施形態に従うと、クラスタ内の最小数のサーバは常に動作可能でなければならない。同じマシン上のクラスタ内のサーバは(それらが共通のドメインディレクトリおよびsymlinkを共有している場合は)ともにリスタートされる必要があるため、クラスタ内のサーバは少なくとも2つの異なる物理マシン上でホストされるべきであるが、クラスタごとに最低でも3つのマシンが推奨される。これによって、一部は稼働中でサービスを提供し続け、一部はローリングリスタートの一部として停止することができる。要求を処理するために異なるマシン上で使用可能なサーバの数を判断する際、実行中であるが管理モードまたはスタンバイモードにある管理されるサーバは要求に応答しないため、これらのサーバを除外することが重要である。
管理サーバ分離
ロールアウトプロセスは、管理サーバおよび管理されるサーバを同時に更新する必要がある場合は大幅に複雑化し得る。たとえば、これが起こるのは、管理サーバおよび管理されるサーバが、同じマシン上で実行されて同じドメインディレクトリを共有するように構成されている場合であろう。管理サーバは、共有のシンボリックリンクから実行されているため、管理されるサーバと同時に停止しなければならない。この制限は、管理されるサーバのインストールホームを分離して、管理されるサーバ単位でパッチをロールアウトすることを可能にすることによって対処され得る。一実施形態に従うと、この問題を単純化する2つの異なる構成がサポートされる。
第1は、マシン上で実行されている管理されるサーバがない状態で、当該マシン上で管理サーバを実行することである。これによって、管理サーバを単独で1つのステップで更新することができ、それが完了すると、次のステップは、異なるマシン上のそのドメイン内の管理されるサーバを更新することである。
第2の構成は、管理サーバを管理されるサーバと同じマシン上で実行することを可能にするが、管理サーバにそれ自体の別個のドメインディレクトリを使い切らせることである。これによっても、管理サーバを個々に更新することが可能となり、管理されるサーバをそれら自体のステップで更新することができる。
クラスタレベルのパッチング
一実施形態に従うと、ドメイン内のすべてのサーバを更新するメカニズムを提供することに加えて、システムは、ドメイン内の個々のクラスタを更新する能力を提供し得る。ユーザがクラスタロールアウトモードの使用を試みているとき、異なるクラスタにサーブする単一のノード上に複数の管理されるサーバがある場合、管理されるサーバは、それらがサーブしているクラスタに従って別個のドメインディレクトリを有する必要がある。これは、一方のクラスタにサーブしている(かつまだ実行中である)管理されるサーバのsymlinkに影響を与えることなく、他方のクラスタ用のノード上の管理されるサーバのすべてを停止させてそれらのsymlinkを更新することができるようにするために必要である。
ロールアウトモード
一実施形態に従うと、ロールアウトは、サーバをグレースフルにシャットダウンすること、そのOracleホームsymlinkを変更すること、およびサーバを再始動することを含む。これはドメイン全体に、ドメイン内の単一のクラスタに、または個々のサーバに適用され得る。これらのモードのいずれについても、共通のOracleホームを共有する、単一のマシン上で更新されている複数のサーバがある場合、それらはともにシャットダウンされて更新される。また、サーバのOracleホームが更新されると、それに関連付けられたノードマネージャはリスタートされて変更をピックアップする。これは厳密には必要でない場合もあるが、それを一貫して行なうことによってプロセスが簡略化され、ノードマネージャが反応的でない時間ウィンドウが短くなるだけで済む。
一実施形態に従うと、ドメインモードロールアウトは、ドメイン内の管理サーバおよびすべての管理されるサーバを、それらと関連付けられたすべてのノードマネージャとともに更新する。管理サーバは、その管理されるサーバのいずれかの最高パッチレベルで常に実行されていることが重要である。この要件がドメインモードロールアウト時に確実に満たされるようにするために、管理サーバは常に管理されるサーバの前に更新される。
一実施形態に従うと、クラスタモードロールアウトは管理サーバを更新せず、クラスタ内のすべての管理されるサーバおよびそれらと関連付けられたノードマネージャを更新する。
一実施形態に従うと、サーバモードロールアウトは、ターゲットパラメータ内に指定されているサーバに影響を与える。それはさらに、それらのサーバと関連付けられたノードマネージャを更新する。
Rollout WLSTコマンド
一実施形態に従うと、ロールアウトタスクは、どのサーバをどの順序で更新する必要があるかを理解し、それらを安全に更新するワークフローを作成する役割を果たす。これは、ノードを静止させること、サーバをグレースフルにシャットダウンすること、Oracleホームリンクを更新すること、ノードマネージャをリスタートすること、サーバを開始すること、およびノードをグレースフルに起動させることを含む。ロールアウトタスクは、それがワークフローライフサイクルマネージャ(たとえばWorkflowLifeCycleManager:LCM)に登録することになる名前を取るため、結果のMBeanは後で、または別のWLST接続によってアクセス可能である。ロールアウトタスクは、ステータスがポーリングされ得るWorkflowProgressMBeanを返す。いくつかの例を以下に示す:
ドメインにわたってロールアウトを実行する:
Figure 2017529628
クラスタにわたってロールアウトを実行する:
Figure 2017529628
2つの特定のサーバへのロールアウトを実行する:
Figure 2017529628
OTDが構成されていない状態でドメインにわたってドライランまたはロールアウトを実行する:
Figure 2017529628
一実施形態に従うと、WLSTロールアウトコマンドは、ロールアウトタスクの進行を監視するために問合せられ得るWorkflowProgressMBeanを返す。この情報は、再接続するために必要なWLSTセッションに使用可能であり、ワークフローが完了した後も使用可能であり続ける。
ノードマネージャ
一実施形態に従うと、自動パッチロールアウトソリューションには、リモートマシン上の環境を更新するメカニズムが必要である。一実施形態に従うと、オーケストレーションフレームワークは管理サーバから実行し、各マシン上のノードマネージャに、Oracleホームの更新、および新たなバイナリを取り込むためのプロセスのリスタートなどのタスクの実行を委任し得る。
一実施形態に従うと、ノードマネージャは、リモートマシン上のカスタムパッチングスクリプトを実行してOracleホームへのシンボリックリンクを変更するメカニズムの役割を果たす。スクリプトは、ドメイン当たりのマシンごとに一度実行され得る。ノードマネージャは内部で使用されるAPIをサポートし、自動化されたサービスマイグレーション時に基本的なスクリプト実行を可能にし、これは上述のパッチング特徴をサポートするために活用され得る。
一実施形態に従うと、シンボリックリンクはノードマネージャの実行中に切替えられるが、startNodeManagerスクリプトは、常にシンボリックリンクを使用するのではなく、実際のディレクトリを使い切るようにセットアップされる。シンボリックリンクは、パッチ済のバイナリを取り込むことができるようにノードマネージャをリスタートするためにのみ用いられる。ドメイン内の、またはOracleホームの外部のノードマネージャホーム内の親開始スクリプトは、シンボリックリンク場所を用いてベースのstartNodeManagerスクリプトを実行する。ベーススクリプトはWL_HOMEセットとともに実際のディレクトリにインストールされ、その値を用いてすべての環境値が生成される。この結果、ドメインがシンボリックリンク場所から実行されている間、ノードマネージャは実際のディレクトリから実行されるのみであるため、シンボリックリンクが切替ええられても影響を受けない。
一実施形態に従うと、ノードマネージャから実行されるシステムコンポーネントは、それらのプロセスが確実にパッチングをサポートできるようにするオプションを有する。
第1に、それらがノードマネージャ環境を用いてそれらのプロセスを開始する場合、それらはシンボリックリンク変更から隔離され、ノードマネージャバージョンと整合している。つまり、それらは、シンボリックリンクが変更されている間、それらのコンポーネントを実行し続けることができ、新たなOracleホーム場所をピックアップするためにノードマネージャがリスタートされた後にのみリスタートされる。
第2に、それらがシンボリックリンクをより直接的に用いることを望む場合、それらは、WLS使用などの何らかの開始スクリプトを介してドメイン自体から、またはLINK_MW_HOMEなどの規定値としてのノードマネージャ環境からその値を取得する必要があり、それらのプロセスがシンボリックリンク変更の前に適切にシャットダウンされることを確実にする必要がある。さらに別のオプションは、それらが、それら自体のパス情報を供給してそれを直接管理できるようにすることである。たとえば、OHSインストールは、「ohs.home」をJAVA_OPTIONS環境フラグ内のノードマネージャに渡す。この値は、パスが変更されたとき、およびプロセスがリスタートされたときにそれ自体のパッチングプリミティブ制御を提供することによって、パッチング時に管理されるシンボリックリンクであり得る。
一実施形態に従うと、自動ロールアウトパッチングの一部として、ノードマネージャは、たとえば「RESTART」コマンドをノードマネージャに発行することによって、新たな(パッチ済の)WebLogicサーバ画像から外れるようにリスタートされ得る。また、ノードマネージャは、さまざまなオプションを指定するユーザが供給したスクリプトなどの、他の方法で開始され得る。アプローチは、ベースのstartNodeManagerスクリプトに依拠して内部終了コードをキャプチャしてから、シンボリックリンク場所で見つけたstartNodeManagerスクリプトを実行することである。たとえば、入来するRESTARTコマンドは88のコードでJVMを出る。スクリプトは88を見て、スクリプト自体のいずれかの変更をピックアップするために新たなスクリプトを用いて別のインスタンスを開始することを試みる。これは、ドメインレベルまたは他のラッパースクリプトの変更はまったくピックアップせず、WL_HOME/server/binの下のベースのstartNodeManagerスクリプトの変更のみをピックアップする。これは、この特定のトポロジではシンボリックリンクとなる、親スクリプトが用いたSCRIPTPATHを実行することによって達成される。
一実施形態に従うと、自動パッチロールアウトソリューションにおいて、ロールアウトコマンドは管理されるすべてのサーバをシャットダウンし、ノードマネージャを介してカスタムパッチングスクリプトを実行し、管理されるすべてのサーバを開始し、ノードマネージャをリスタートする。ノードマネージャ自体は、System.getenv() APIを介してシステムプロパティを取得することによって、および/または、ProcessBuilder.environment() APIを使用し、これらの値を構成値とともに、新たなプロセスが作成されると当該プロセスに提供することによって、ノードマネージャ自体の環境を伝える。
一実施形態に従うと、ドメインは、ノードマネージャがOracleホームディレクトリのその元のビューを維持している間にスワップされ得るOracleホームディレクトリへのそれ自体の固有のシンボリックリンクを有する。そのようなトポロジでは、ノードマネージャは、CLASSPATH、および不正確なバージョンからバイナリへのポインタを管理されるサーバに与える他の値を伝える。これは、WebLogicサーバおよびOracleホームに特有の環境値のみを伝えることのみによって対処され得る。
一実施形態に従うと、ドメイン当たりのノードマネージャおよびマシン当たりのノードマネージャの両方において、NodeManagerHomeディレクトリはOracleホームディレクトリの外部に位置することが予想される。デフォルトでは、ドメイン当たりのノードマネージャのNodeManagerHomeディレクトリは、ドメインディレクトリ下のサブディレクトリである。
NodeManagerリスタート
一実施形態に従うと、システムはJavaベースのノードマネージャプロセスをリスタートする自動化された能力を提供し得る。
Javaベースのノードマネージャ
一実施形態に従うと、Javaベースのノードマネージャは、NMClientから発行される新たなコマンド「RESTART」を受付ける。NMServerは、リスタートコマンドを受信すると、特定の終了コード88で出る。いずれかのグレースフルシャットダウンアクションも取られるべきであるが、ノードマネージャが開始する管理されるプロセスは実行され続けるべきである。NMClient APIは以下を提案した:
Figure 2017529628
startNodeManagerスクリプト
一実施形態に従うと、供給されたstartNodeManagerスクリプトは、Javaノードマネージャがもはや実行されていない場合、特定のコード88をチェックする。88が戻されたコードである場合は、スクリプトはシンボリックリンク場所で見つけられる新たなstartNodeManagerスクリプトを開始する。バイナリおよびスクリプトを含むすべての新たなパッチファイルは別個の場所に位置しており、シンボリックリンクを用いて使用可能となる。つまり、いずれのファイルも上書きされるべきでない。リスタートシナリオは、$WL_HOMEがシンボリックリンク場所を指す以下の例のようなものがスクリプトされる:
Figure 2017529628
一実施形態に従うと、ノードマネージャプロセスを開始するさまざまな方法の多くは、WL_HOME/server/binディレクトリに含まれるベースのstartNodeManagerスクリプトを利用し得る。domain/binおよびカスタムラッパー内のドメインレベルスクリプトはこのスクリプトに委任すべきであり、その結果、開始のために同じ論理を使用すべきであり、WLST startNodeManagerコマンドもそれらのスクリプトを使用可能である。
図16は、一実施形態に従ったパッチングのための方法のフローチャートを示す。
図16に示されるように、ステップ660において、1つ以上のパーティションをサポートするソフトウェアアプリケーションを実行するためのドメインを含むアプリケーションサーバ環境が、1つ以上のコンピュータにおいて提供され、各パーティションはドメインの管理およびランタイムの区分を提供し、パーティションは任意に、デプロイ可能なアプリケーションもしくはリソースの集合を有する、および/またはリソースグループテンプレートを参照する1つ以上のリソースグループを含み得る。
ステップ662において、1つ以上のコンピュータノード、または当該ノード上でアプリケーションサーバ、アプリケーション、もしくは他のコンポーネントが実行されているサーバが、グレースフルにシャットダウンされているそれらのノード上のサーバによって、パッチングのために準備される。
664において、パッチすべきノードまたはサーバにおいて準備スイッチが呼出され、これは、そのノードまたはサーバ用のノードマネージャに、そのホームディレクトリの切替えを実行することになるスクリプトをセットアップするように、かつノードマネージャが演算を実行するのに必要なパラメータをノードマネージャに与えるように指示する。
ステップ668において、ノードマネージャをリスタートするための呼出がなされ、これによって、ノードマネージャはスクリプトに制御を転送し、スクリプトは、現在のホームディレクトリ(たとえばOracleホーム)を指定されたディレクトリパスに移動させ、パッチ済のアプリケーションサーバ、アプリケーション、または他のコンポーネント画像を元の場所の中に抽出してから、ノードマネージャを再開する。
ステップ672において、アサートスイッチが実行され、これによって、ホーム(たとえばOracleホーム)ディレクトリの切替えが成功裏に完了したことが確認される。
ステップ674において、ワークフローがそれ以上のノードまたはサーバをシャットダウンする前に、パッチ済のアプリケーションサーバ、アプリケーション、または他のコンポーネントのすべてが確実に要求に応えることができるようにするために、開始サーバがノードごとまたはサーバごとに呼出され、これによって制限されたダウンタイムまたはダウンタイムなし(すなわちゼロ)がサポートされる。
ゼロダウンタイムパッチング時のセッション複製
一実施形態に従うと、ゼロダウンタイムパッチング時、「ゼロダウンタイム」を確実にするためにセッション損失から保護することが重要である。これは、ローリングパッチングプロセス時のセッション複製およびフェイルオーバー、ならびにアプリケーションパッチングによるセッション互換性の懸念事項を考慮することを意味する。
典型的なアプリケーションサーバ(たとえばWLS)環境では、システムは概して、ユーザ要求同士の間の時間にクラスタの1つのメンバーのみが停止される限り、1つのセッションがクラスタ内のどこかで確実に使用可能であるように努める。プライマリサーバがクラッシュした後にセカンダリサーバがクラッシュすると、そのセッションは失われる。プライマリサーバからのすべてのセッションは単一のセカンダリサーバに複製されるため、セッション複製分散はクラスタ全体にわたって均一でない。しかし、要求フェイルオーバーは均一に分散される。つまり、あるグループの要求が別のサーバにフェイルオーバーしている時、均一な部分はセカンダリサーバに、およびクラスタにわたって残っているサーバの各々にランディングする。次いで、各サーバは、受信した要求のその部分を担当する。セッションのコピーを有していなかったサーバは、セッションをフェッチしてから、それら自体の二次選択アルゴリズムを用いてバックアップコピーを維持する場所を決定しなければならない。古いコピーまたはオーファンコピーは、それがタイムアウトするまで所定の位置に残される。最終結果として、複製アルゴリズムが均一に分散されていなくても、要求の均一な分散によって、メモリ内のセッションは確実にある程度均一に分散されることになる。
非同期複製は、要求は完了しているがセッション変更は複製されていない別個のウィンドウを有する。また、この時間ウィンドウは、要求がサーバクラッシュのためにフェイルオーバーするたびに、またはフロントエンドから誤ってルーティングされるたびにサーブされる古いセッションがあり得ることを意味する。一実施形態に従うと、特定のセッションidについてセッションオブジェクトを見つけるためのアルゴリズムは、1.ローカルマップでセッションROIDをチェックし、見つけた場合はそれを使用する。2.クライアントクッキー内のJVMIDをチェックし、プライマリサーバまたはセカンダリサーバからセッションを取得することを試みる。3.使用可能である場合、そのサーバからセッションを取得し、プライマリになり、好ましいセカンダリサーバに複製する。4.元のプライマリ/セカンダリからのセッションはオーファンになり、無効化またはタイムアウト時にのみクリーンアップされる。5.セッションが上記から使用可能でない場合は、新たなセッションを戻す。
つまり、クッキーは有効なプライマリサーバまたはセカンダリサーバを指し得るが、セッションのローカルコピーを使用する可能性がある。これが起こるのは、フェイルオーバーが発生し、セカンダリ以外のサーバが要求にサーブする場合であろう。元のセカンダリは古いコピーを有しており、別のフェイルオーバーがそのサーバに発生すると、この古いコピーはその他のコピーの前に見つけられて使用される。
サーバ毎の二次選択は、セカンダリを自動的に、または好ましい候補サーバ、リモート候補サーバ、およびローカル候補サーバの構成値に基づいて選択することを試みる。余分な構成がない場合、自動選択は、フルサーバリスト内の現在のサーバのインデックスのモジュロ演算およびリモートサーバリストのサイズに基づいて、別のマシンからサーバを選択する。各マシンが単一のサーバを含んでおり、各マシンが当該サーバに対して同様の順序で編成されている場合は、各サーバがリスト内の次のサーバに複製され、サーバ1はサーバ2に、サーバ2はサーバ3に、サーバ3はサーバ4に等、リスト内の最後のサーバがサーバ1に複製するまで継続する。フロントエンドサーバは、シャットダウンのためにプライマリサーバへのアフィニティを維持することができない場合、残りのクラスタ化されたサーバ同士の間で均一に分散している要求をランダムにリダイレクトする。
ゼロダウンタイムパッチング時、上層アプリケーションを含むパッチ済のOracleホームをロールアウトすること、またはさらにはOracleホームパッチとは独立して特定のアプリケーションパッチをロールアウトすることも可能である。それらのアプリケーションが変更を含んでいる場合、システムをセッション非互換性の可能性から保護しなければならない。セッション非互換性の一般的なシナリオは、アプリケーションフレームワークを使用して起こる。そのようなフレームワークの新バージョンでアプリケーションを更新すると、クラスパスに含まれるクラスに対する制御が欠如することになる。アプリケーションセッションの1つのパッチ済バージョンはセッション内にクラス「patched.Foo」を含み得るが、アプリケーションセッションの以前のバージョンはクラス「unpatched.Bar」を含み得る。要求が当該セッションを複製する試みをトリガすると、パッチ済または未パッチサーバ上でシリアライゼーションが起こるのに対して、反対の状態のサーバ上ではデシリアライズする試みが起こり得る。クラスパス内に適切なクラスが欠如しているため、セッションを受信するサーバはデシリアライゼーションプロセスを失敗する。これによって、セッションが複製されず、警告メッセージがログファイル内にプリントされる。セッションは単一のサーバ上にのみ存在しているため、サーバシャットダウンまたはサーバクラッシュによって失われるリスクがある。
アプリケーションをパッチする際、セッションを複製する能力も重要であるが、要求にサーブするためにセッションが何らかのサーバ上で成功裏にデシリアライズされることを確実にする能力も等しく重要である。サーバがシャットダウンされた後、フロントエンドは、均一に分散されているクラスタ内の残りのメンバーのうちのいずれかにランダムに要求をフェイルオーバーする。サーバは要求を受信すると、そのセッションのコピーを保持するサーバからセッションをグラブすることを試みる。パッチ済または未パッチサーバが、反対の状態のサーバから発生したセッションをロードすることを試みると、非互換性セッションはデシリアライゼーションエラーをもたらし、ユーザはそれらのセッション情報を失う。このようなシナリオは、サーバがシャットダウンされ、次いで、クラスタの他のメンバーがランダムなフェイルオーバー要求を処理している間にパッチを用いてリスタートされるパッチロールアウトプロセス時によく起こる。これは、クラスタメンバーがフロントエンドサーバからランダムに選択される場合にいずれかのフェイルオーバー要求について起こり得る。また、スロークライアントまたはレイジークライアントは、サーバがパッチされた後に要求を同じサーバに送り返し得る。これは、パッチ済サーバが、他の何らかのサーバ上に記憶された「未パッチセッション」をロードすることを試みるという効果を有する。
ゼロダウンタイムパッチングは、サーバ1がシャットダウンされ、パッチされてからリスタートされた後に次のノードが続行するローリングする態様で、各ノードを更新する。プロセスがパッチすべき最後のサーバに来ると、最後のサーバ上でのみ互換性があり得る未パッチサーバ上に発生したセッションのグループが存在する。これらのセッションが行なわれる前に最後のサーバがシャットダウンされた場合(タイムアウトまたは無効化)は、それらのセッションはいずれのサーバ上にもロードされない可能性があり、失われる。しかし、セッションに互換性がある場合は、それらは待機なしで安全にシャットダウンされ得る。
ゼロダウンタイムパッチングがクラスタを進行するにつれて、パッチされているサーバはシャットダウンされ、そのプライマリセッションがリスクに晒される。この理由は、サーバ1がシャットダウンされると、セッションのそのプライマリコピーが使用不可能となるからである。サーバ2がセカンダリセッションをホストしている場合、当該セッションはサーバ2上でプライマリステータスに高められるが、セッションを更新する別の要求が入ってくるまで、当該セッションはクラスタ内のその他のサーバに複製されない。サーバ1をリスタートした直後、サーバ2はパッチングロールアウトにおける次の演算としてシャットダウンされ得る。サーバ2がシャットダウンされる前に別の要求を送信しないクライアントはすべて、そのセッション情報を失う。
一実施形態に従うと、既存の複製サービスへの影響を最小限に抑えてセッション非互換性を処理するために、パッチングフレームワークは各サーバに接続し、セッションをレイジーにデシリアライズする既存のオプション、クラスタ全体にわたるセッション問合せを、シャットダウン時にセッションを複製し、それらをフェッチした後にオーファンセカンダリをクリーンアップする新たなオプションとともに、一時的にイネーブルにする。これらのオプションは組合されて、セッションがクラスタにわたって適切に記憶されることを確実にし、パッチング時のセッション損失を最小化する。
セッション損失を回避するという目標を完全に達成するために、システムは、セッションをロード可能なサーバが確実に要求にサーブするようにしなければならない。一実施形態に従うと、これも、既存のセッション処理に対する最小限の中断で行なわれる。サーバはセッションをロードすることを楽観的に試み、それができない場合、要求を処理可能であるべき503応答コードを用いてサーバの適切なリストをOTDに通信する。
一実施形態に従うと、パッチすべきサーバをシャットダウンする際、セッション複製オプションは、サーバが、セッションがすべてセカンダリサーバ上で確実に使用可能であるようにするために必要ないずれのセッションも自動的に複製することを可能にする。パッチングフレームワークは、クラスタ内の最後のサーバをシャットダウンしようとしている場合、そのサーバをシャットダウンする際にデフォルトでwaitForAllSessionsを合図する。これは、サーバがシャットダウンを完成させ得る前にすべてのセッションを処理する必要があることをwebコンテナに合図する。ユーザは、すべてのアプリケーションパッチが互換性があるセッションクラスを有しており、したがってクラスタ内の最後のサーバを待機することが不要であると合図する入力を任意に提供し得る。
レイジーセッションデシリアライゼーションは、Exalogicプラットフォームなどのいくつかのシステム上でイネーブルになるパフォーマンスベースの特徴である。ReplicatedSessionDataオブジェットは、ClusterMBeanに問合せて、セッション属性をデシリアライズするか否かを決定する前にLazySessionDeserializationがイネーブルにされるか否かを確認する。イネーブルにされると、セッション属性はバイトアレイとして有効に記憶される。そのバイトアレイは、後で属性がリトリーブされると自動的にデシリアライズされる。
一実施形態に従うと、必要なときにのみセッションをロードするこの能力を利用するために、機能は動的にされ得る。パッチングフレームワークは、パッチングプロセス時にレイジーセッションデシリアライゼーションをイネーブル/ディスエーブルにする責任を有する。これは構成値でもあるため、フレームワークは、ClusterMBean構成が既にイネーブルにされていない場合にのみ設定を変更することを試みる。そうでない場合は、管理される各サーバ上のClusterServiceを用いて、イネーブルにされると構成値に優先するランタイム値を受信する。つまり、ClusterServiceは、LazyDeserializationがオフである場合でもオンにすることができる。しかし、ユーザがそれをオンとして構成している場合はディスエーブルにすることはできない。これはランタイム値となるため、パッチングフレームワークはClusterServiceに複数の呼出を行なわなければならない。最初の通知は、クラスタ内のいずれかのサーバがパッチされる前に起こる。これは、ClusterService上にLazySessionDeserializationを設定するために、RemoteClusterServicesOperationsインターフェイスを用いてクラスタ内の各サーバに接続する。第2の通知は、サーバがパッチされてリスタートされた後に起こる。リスタートの後、サーバは構成値を再び使用するため、ランタイム設定を再確立してLazySessionDeserializationをイネーブルにすることが必要である。パッチングプロセスが完了すると、パッチングフレームワークは必要に応じてレイジーセッションデシリアライゼーションオプションをディスエーブルにする。
一実施形態に従うと、パッチングフレームワークは、サーバのリストの対の形式で、サーバの現在の状態についてクラスタの各メンバーに警告する。サーバ名の一方のリストはグループ化と見なされ、サーバ名の他方のリストは他方のグループと見なされる。通知が必要な2つの異なるポイントが再び存在する。最初の通知は、サーバをシャットダウンしてパッチを適用した後に起こる。そのサーバをリスタートする前に、クラスタには、パッチ済リストに参加している新たなパッチ済サーバとの新たなグループ化が通知される。これによって、実行中のサーバは、パッチ済のサーバがリスタートされると古い情報を有さないことが確実になる。第2の通知は、フレームワークがすべてのアプリケーションが準備ができた状態となるのを待機する間、サーバが開始された直後に起こる。この目的は、サーバにできる限り早く状態が通知されることを確実にし、サーバがセッション非互換性を伴ういずれの要求も正確に処理できることを確実にすることである。最後に、パッチングプロセスが完了した後、値はクラスタへの最終通知とともにnullにリセットされる。これによってパッチング前の状態が復元されるため、クラスタはパッチングが進行中であると仮定しなくなり、したがって挙動は再びデフォルトに戻ることができる。
一実施形態に従うと、webコンテナは、複製セッションをリトリーブすることを楽観的に試みる。デシリアライゼーションエラーが発生する場合は、webコンテナは現在のサーバグループをチェックする。現在のサーバグループの値は、パッチングが現在進行中であるか否かを示す。webコンテナは、グループのコンテンツを調べて、現在のサーバがどのグループにいるかを特定する。現在のサーバ名を含んでいないグループは、現在のサーバは非互換性であり、したがって他方のグループが互換性があるはずであるという論理に基づいて、互換性があるグループと見なされる。これは、前方および後方互換性の問題の両方に対処する。webコンテナは、セッションが互換性がある可能性が最も高いサーバのグループを特定すると、そのグループ内のサーバのリストと一緒に「X-WebLogic-Cluster-FailoverGroup-List」ヘッダとともに503応答コードを返す。
一実施形態に従うと、OTDは、サーバグループを含むヘッダとともに503を受信し、そのリストからサーバをランダムに選択して要求をリダイレクトする。これはWLSが有していない情報であるため、OTDはドレインプール内のサーバを確実に処理する。サーバが指定したリストは、ランタイムに生成されたクラスタ内の現在のメンバーを含む。これは、クラスタに参加しているWebLogicサーバのダイナミックディスカバリと同様にフロントエンドによって処理されるべきである。リストは動的な性質のものであり、ランタイム中に変更し得るが、リストはパッチングプロセスの開始時に分かっているすべてのクラスタメンバーを含む。
一実施形態に従うと、パッチングフレームワークは、パッチング時にセッションの適切な処理を可能にする責任を有する。シャットダウン時のこのセッションの複製は、クラスタ全体にわたるセッション問合せ、およびオーファンセカンダリクリーンアップの両方を可能にすることに依存する。フレームワークは、ClusterMBean構成が任意の設定をイネーブルにしていない場合にのみ、当該設定の変更を試みる。フレームワークは、パッチング前に各サーバに接続して各フラグをイネーブルにする。そして、各サーバがリスタートされると、フラグは再び設定される必要がある。最後に、パッチングプロセスが完了した後、設定は必要に応じて復帰する。
一実施形態に従うと、WLS−MTクラスタ化について既に実装されているセッションフェッチングを用いて、クライアントクッキーを更新することなくセッションをセカンダリに自動的に複製するため、フェイルオーバー要求はクラスタのいずれかのメンバーにランディングすることになり、セッションを見つける何らかのメカニズムが必要となる。要求がサーバにランディングするときの挙動は以下のようになる:ローカルマップでセッションROIDをチェックし、見つけた場合はそれを使用する。2.クライアントクッキー内のJVMIDをチェックし、プライマリサーバまたはセカンダリサーバからセッションを取得することを試みる。3.使用可能である場合、そのサーバからセッションを取得し、プライマリになり、好ましいセカンダリサーバに複製する。4.元のプライマリ/セカンダリサーバ上のオーファンセッションを処理するための新たなメカニズムが導入される。5.セッションが上記から使用可能でない場合は、SessionFetchingがイネーブルにされていなければ新たなセッションを返し、SessionFetchingがイネーブルにされていればブロードキャストクエリをクラスタに送信する。第1の応答を用いて、セッションを取得可能なサーバを特定する。プライマリになり、好ましいセカンダリサーバに複製する。ii.元のプライマリ/セカンダリサーバ上のオーファンセッションに対処するための新たなメカニズムが導入される。
一実施形態に従うと、サーバシャットダウン時、他のクラスタメンバーにシャットダウンを通知する直前、ReplicationServiceは、セッションの各プライマリコピーがセカンダリサーバに確実に複製されるようにする。これによって、サーバのシャットダウン動作時にセッションが失われないことが確実になる。これは、元のプライマリがリスタートされてから要求を行なっていない、つまり、新たなプライマリサーバを新たなセカンダリサーバとともに再確立していないクライアントにしか影響を与えない。最後に、そのようなクライアントが戻ると、セッションはクラスタ内の何らかのサーバ上で使用可能となる。
一実施形態に従うと、オーファンセッションは、シャットダウン時のセッション複製またはセッションフェッチングに固有ではない。しかし、各サーバが連続してリスタートされるクラスタの反復のため、この問題が起こる可能性は高くなる。
オーファンセカンダリからの古いセッションデータをサーブする可能性に対処するために、フェッチング後にオーファンセカンダリコピーをクリーンアップするメカニズムが存在する。パッチング時にこの機能がイネーブルにされると、ReplicationServiceは、そのセッションをフェッチした後にオーファンセッションのクリーンアップを処理するバックグラウンドプロセスをトリガする。バックグラウンドプロセスは、セッションバージョン番号、タイムスタンプ情報、セッションを見つけた場所、そのセッションが関連付けられている可能性があるその他のサーバ、および新たなセカンダリサーバが分かっている。このため、セッションの現在のコピーを除去することなく、バージョンおよびタイムスタンプ情報に基づいてすべての古いコピーをクリーンアップすることができる。
一実施形態に従うと、サーバがグレースフルにシャットダウンされると、ユーザはignoreSessions=falseを指定して、webコンテナに、複製されていないセッションの完了を待機させ得る。しかし、クラスタ内のどこかにセッション複製があるため、webコンテナは複製セッションを待機しない。しかしZDTパッチングについては、セッションが非互換性であり、サーバがクラスタ内の最後の未パッチサーバである場合、サーバは互換性があるセッションを有する唯一のものであり、すべてのセッションが完了するのを待機する必要がある。このため、グレースフルシャットダウンのための「waitForAllSessions」フラグが導入される。
パッチングフレームワークは、クラスタ内の最後のサーバのシャットダウンを呼出す際、「waitForAllSessions」ブールをデフォルトで指定する。これは、webコンテナに、シャットダウンシーケンスを終了する前にすべてのセッションが無効化されるのを待機するように合図する。関連付けられたセッションがない要求はすべて503応答によって拒絶され、OTDは、503応答を取得した場合、これらの要求にサーブするためにクラスタ内の他のサーバを試みる。既存のセッションを有する要求はすべて適切にサーブされる。これらのセッションはパッチ済サーバのいずれとも互換性がない可能性があるため、webコンテナは完了までこれらのセッションの各々を処理する必要がある。
ユーザは、waitForAllSessionsが偽であり得ることを合図するために、パッチング動作を開始する際にSessionCompatibility=trueを任意に指定し得る。このwaitForAllSessionsオプションは、既存のignoreSessionsパラメータと同様のServerLifeCycleRuntimeMBeanに追加される。さまざまな実施形態に従うと、付加的なパラメータ、たとえばパッチングのために次に管理されるサーバのシャットダウンを開始する前にどれぐらい長く待機するかを示すタイムアウト(delayBetweenNodes)がサポートされ得;これは、サーバのシャットダウンを試みる前にセカンダリセッションが確実に複製されるようにするのに有用であり得る。
クイックスタートの例
一実施形態に従うと、ゼロダウンタイムパッチングは、一度に1つのノードの変更をロールアウトし、その変更が完了するまでトラフィックディレクタ(たとえばOTD)が入来するトラフィックを残りのノードにリダイレクトすることを可能にすることによって達成され得る。たとえばOracleホームのパッチングのための典型的なシーケンス演算は以下を含む:1.アドミニストレータがパッチを認証する;2.Oracleホームおよび代表ドメインのコピーが作成される;3.パッチが試験/認証環境に適用される;4.パッチがプロダクションに確実に承認されるようにするための試験が行われる;5.スクリプトを用いて認証済のOracleホームがコピーされ、生成されたアーカイブはプロダクション環境にわたってロールアウトされるパッチ済の「Gold Master」と見なされる;6.生成されたOracleホームアーカイブは、アドミニストレータによってプロダクション環境にわたって各物理マシンに分散される;および、7.アドミニストレータがロールアウト演算を実行する。
Javaホームのインストール/更新、およびアプリケーションソースの分散は、それらのロールアウト演算のためのアドミニストレータに同様に委ねられ得る。一実施形態に従うと、ターゲット環境は、管理サーバを実行する1つのノードを含む3つ以上の物理マシンまたはノードを含む必要がある。付加的な要件は、一実施形態に従うと、管理されるサーバはゼロダウンタイムをサポートするためにクラスタ内になければならないこと;各ノードは、管理サーバを実行しているノードを含む各自のノードマネージャが実行中でなければならないこと;Oracleホームディレクトリは、好ましくはすべてのノード上の同じ場所(たとえば/scratch/aime1/OracleHomes/wls1221)において、各ノード上にローカルにインストールされなければならないこと;および、ドメインディレクトリはOracleホームディレクトリの外部になければならないことを含む。
アドミニストレータは、移動スクリプトを利用してOracleホームのアーカイブjarを作成し、アーカイブjarを各リモートノードにコピーすることによって、すべてのノード上にインストールおよびドメインを複製する必要性を回避することができる。
一実施形態に従うと、ドメインは、少なくとも2つの管理されるサーバ、および少なくとも3つのノードマネージャを参照する必要がある。ドメインは、ドメインのコピーを作成すること、そのバイナリをリモートノードの両方に分散すること、および次いで各リモートノード上でアンパックを実行することを含む、パック/アンパックユーティリティを用いて複数のノードについて複製され得る。
Javaホームロールアウトが成功するためには、新たなJavaホームが影響を受ける各マシン上にインストールされる必要があり、各マシン上の同じパスに配置される必要がある。これは、現在のノードマネージャおよび管理されるサーバの実行中になされる必要があるため、インストールは既存のJavaホームパスを変更してはならない。これを助けるために、Javaホームはsymlinkを含むパスとしてではなく、絶対パスとして指定される。
ロールアウト演算が開始されると、Oracleホームの変更はいずれも、一度に1つのノードに適用される。アドミニストレータは、以下にさらに説明するようにOPatchツーリングを用いて所望のパッチを適用することができる。顧客の中には、PuppetまたはChefなど、ファイルの分散を補助し得るツールを所定の位置に有する者もある。
OPatchとの統合
一実施形態に従うと、システムは、OpatchAutoなどのプロダクトと統合して、さまざまな範囲のたとえばオラクル製品にわたってゼロダウンタイムパッチングのための顧客対応フロントエンドを提供し得る。これらの特徴を統合すると、単一のインターフェイス下でより完全なソリューションが提供される。
一実施形態に従うと、OpatchAutoが提供するツーリングは、ユーザが、たとえばWLSコンポーネントのパッチ済バージョンを作成すること、それらを更新されるノードに対してアクセス可能とすること、およびパッチングロールアウトを呼出して監視することを可能にする。パッチングインフラストラクチャは、アクティブなセッションが確実に保存されるようにしつつ、サーバのランタイム状態および可用性を管理し、WLSコンポーネントおよびアプリケーションソースを更新し、いずれかのマルチテナンシの懸念事項に対処する。
状況によっては、顧客は、非プロダクション環境で検証試験を行なうために、パッチ済アーカイブの作成をロールアウトから分離することを望む場合があり、または、顧客は、それらの部分を組合せた単一のアクションを望む場合がある。一実施形態に従うと、OpatchAutoは、別個のまたは組合されたステップとして、パッチ済のWLSアーカイブを作成し、アーカイブをすべてのノードに対して使用可能とし、ロールアウトを開始する能力を提供する。ユーザは、OpatchAutoを用いて、すべてのノードに分散されるパッチ済バイナリを作成し、パッチ済バイナリをすべてのノード上でステージし、サービスダウンタイムなしでパッチ済バイナリのランタイム起動を実行し得る(WLSにランタイム管理およびロールアウトの責任を負わせる)。
一実施形態に従うと、OpatchAutoはWLS環境においてゼロダウンタイムパッチングを駆動するエントリポイントの役割を果たし、これは、ZDTパッチングがトポロジについてサポートされるか否かをパッチングが決定できるようにパッチメタデータを検査する能力を提供すること、および試験用のオフラインパッチ済環境を作成するワークフロー能力を提供することを含む。これは、既存のOracleホームを、プロダクション環境から直接、またはプロダクション環境と同等であると仮定してコピーする能力を含む。
さらに、OpatchAutoは、成功裏にパッチされ試験されたOracleホームアーカイブをトポロジ内のさまざまなノードに分散するワークフロー能力を提供する。これによって環境はロールアウトの準備ができた状態となり、ロールアウトは任意の時間にOpatchAutoを用いて開始され得る。OpatchAutoを用いて、パッチングロールアウトを開始および監視することもできる。
パッチングインフラストラクチャは、サーバが更新される順序を決定する;パッチングロールアウトのステップを監視し、必要であれば進行すべき時および戻るべき時を判断する;セッションが確実に保存されるようにする;サーバライフサイクルを監視して、パッチ済のOracleホームビットをスワップインする;ステータス更新についてOpatchAutoによって問合せるべきその標準的な進行オブジェクトを提供する;ならびに、どのサーバがパッチされるか、かつどのサーバがパッチされたかに関する情報を提供するように進行オブジェクトを向上させる役割を果たす。この情報は、ロールアウトの実行を開始する前に進行オブジェクトを介しても使用可能にされる。
例:
アプリケーションサーバ(たとえばWLS)ドメインがMW_HOMEの外部に作成される。OpatchAutoウォレットがSSH/JMXを介してホストに接続するように作成される:
Figure 2017529628
パッチを管理サーバに適用し、パッチ済のOracleホームアウトオブプレースに基づいてアーカイブを作成する:
Figure 2017529628
検証後、更新されるすべてのノードにパッチ済アーカイブをステージする:
Figure 2017529628
ドメイン全体または特定のクラスタへのロールアウトを開始して監視する:
Figure 2017529628
失敗したロールアウトを再開またはロールバックする:
Figure 2017529628
本発明は、本開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能記憶媒体を含む、1つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを使用して都合よく実現され得る。ソフトウェア技術の当業者には明らかであるように、本開示の教示に基づいて、適切なソフトウェアコーディングが熟練したプログラマによって容易に準備され得る。
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された(1つもしくは複数の)非一時的な記憶媒体またはコンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者が本発明をさまざまな実施の形態および意図している特定の使用に適したさまざまな変形について理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの均等物によって規定されるものと意図されている。

Claims (20)

  1. マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムであって、
    1つ以上のコンピュータを備え、前記コンピュータは、前記コンピュータ上で実行されるアプリケーションサーバ環境を、
    前記アプリケーションサーバ環境内で使用され得る複数のデプロイ可能なリソースと、
    ドメイン内のデプロイ可能なリソースのグループ化を定義する、1つ以上のリソースグループテンプレートと、
    1つ以上のパーティションとともに含み、パーティションの各々は前記ドメインの管理およびランタイム区分を提供し、前記システムは、1つ以上のパーティションおよびリソースグループテンプレートを、テナントが使用するために前記テナントと関連付けることができ、
    前記システムは、アプリケーションサーバ環境に組込まれた高可用性特徴を利用して、中断なしで動作するドメインの能力を維持する制御された態様でパッチを適用するパッチング特徴を含む、システム。
  2. 前記パッチングのプロセスのモニタリングおよびエラー処理を提供するオーケストレーションフレームワークをさらに備える、請求項1に記載のシステム。
  3. 前記アプリケーションサーバ環境はJava EEアプリケーションサーバを含み、リソースグループテンプレートの各々は、1つ以上の関連のアプリケーションを、それらのアプリケーションが依存するリソースとともに含む、請求項1から2のいずれか1項に記載のシステム。
  4. 前記マルチテナントアプリケーションサーバ環境内でパッチングをサポートするノードマネージャをさらに備える、請求項1から3のいずれか1項に記載のシステム。
  5. 前記システムを用いて、クラスタ化環境においてノードにパッチを適用する、請求項1から4のいずれか1項に記載のシステム。
  6. 前記システムはクラウド環境内に提供され、前記クラウド環境内で動作する複数のテナントをサポートする、請求項1から5のいずれか1項に記載のシステム。
  7. マルチテナントアプリケーションサーバ環境においてパッチングをサポートするための方法であって、
    1つ以上のコンピュータ上で実行されるアプリケーションサーバ環境を含む、前記コンピュータにおいて、
    前記アプリケーションサーバ環境内で使用され得る複数のデプロイ可能なリソースと、
    ドメイン内のデプロイ可能なリソースのグループ化を定義する、1つ以上のリソースグループテンプレートと、
    1つ以上のパーティションとを提供することを含み、パーティションの各々は前記ドメインの管理およびランタイム区分を提供し、前記方法はさらに、
    1つ以上のパーティションおよびリソースグループテンプレートを、テナントが使用するために前記テナントと関連付けることを含み、
    前記システムは、アプリケーションサーバ環境に組込まれた高可用性特徴を利用して、中断なしで動作するドメインの能力を維持する制御された態様でパッチを適用するパッチング特徴を含む、方法。
  8. 前記パッチングのプロセスのモニタリングおよびエラー処理を提供するオーケストレーションフレームワークを用いることをさらに含む、請求項7に記載の方法。
  9. 前記アプリケーションサーバ環境はJava EEアプリケーションサーバを含み、リソースグループテンプレートの各々は、1つ以上の関連のアプリケーションを、それらのアプリケーションが依存するリソースとともに含む、請求項7から8のいずれか1項に記載の方法。
  10. ノードマネージャを用いて、前記マルチテナントアプリケーションサーバ環境内でパッチングをサポートすることをさらに含む、請求項7から9のいずれか1項に記載の方法。
  11. 前記方法を用いて、クラスタ化環境においてノードにパッチを適用する、請求項7から10のいずれか1項に記載の方法。
  12. 前記方法はクラウド環境内で実行され、前記クラウド環境内で動作する複数のテナントをサポートする、請求項7から11のいずれか1項に記載の方法。
  13. 命令が格納されている非一時的なコンピュータ読取可能記憶媒体であって、前記命令は、1つ以上のコンピュータによって読取られて実行されると、前記1つ以上のコンピュータにステップを実行させ、前記ステップは、
    アプリケーションサーバ環境を、
    前記アプリケーションサーバ環境内で使用され得る複数のデプロイ可能なリソースと、
    ドメイン内のデプロイ可能なリソースのグループ化を定義する、1つ以上のリソースグループテンプレートと、
    1つ以上のパーティションとともに提供することを含み、パーティションの各々は前記ドメインの管理およびランタイム区分を提供し、前記ステップはさらに、
    1つ以上のパーティションおよびリソースグループテンプレートを、テナントが使用するために前記テナントと関連付けることを含み、
    前記システムは、アプリケーションサーバ環境に組込まれた高可用性特徴を利用して、中断なしで動作するドメインの能力を維持する制御された態様でパッチを適用するパッチング特徴を含む、非一時的なコンピュータ読取可能記憶媒体。
  14. 前記パッチングのプロセスのモニタリングおよびエラー処理を提供するオーケストレーションフレームワークを用いることをさらに含む、請求項13に記載の非一時的なコンピュータ読取可能記憶媒体。
  15. 前記アプリケーションサーバ環境はJava EEアプリケーションサーバを含み、リソースグループテンプレートの各々は、1つ以上の関連のアプリケーションを、それらのアプリケーションが依存するリソースとともに含む、請求項13から14のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  16. ノードマネージャを用いて、前記マルチテナントアプリケーションサーバ環境内でパッチングをサポートすることをさらに含む、請求項13から15のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  17. 前記ステップを用いて、クラスタ化環境においてノードにパッチを適用する、請求項13から16のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  18. 前記ステップはクラウド環境内で実行され、前記クラウド環境内で動作する複数のテナントをサポートする、請求項13から17のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  19. 1つ以上のコンピュータシステム上で実行される命令を備えるコンピュータプログラムであって、前記プログラムの命令は、実行されると、前記1つ以上のコンピュータシステムに請求項7から12に記載の方法を実行させる、コンピュータプログラム。
  20. 非一時的なマシン読取可能データ記憶媒体に格納されている、請求項16に記載のコンピュータプログラムを備えるコンピュータプログラムプロダクト。
JP2017516114A 2014-09-24 2015-09-24 マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法 Active JP6748638B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462054903P 2014-09-24 2014-09-24
US62/054,903 2014-09-24
PCT/US2015/052057 WO2016049376A1 (en) 2014-09-24 2015-09-24 System and method for supporting patching in a multitenant application server environment

Publications (3)

Publication Number Publication Date
JP2017529628A true JP2017529628A (ja) 2017-10-05
JP2017529628A5 JP2017529628A5 (ja) 2018-09-06
JP6748638B2 JP6748638B2 (ja) 2020-09-02

Family

ID=54291643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516114A Active JP6748638B2 (ja) 2014-09-24 2015-09-24 マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法

Country Status (6)

Country Link
US (4) US9405530B2 (ja)
EP (1) EP3198431A1 (ja)
JP (1) JP6748638B2 (ja)
KR (1) KR102443172B1 (ja)
CN (1) CN106716360B (ja)
WO (1) WO2016049376A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022170887A (ja) * 2021-04-30 2022-11-11 株式会社日立製作所 アップデート装置、アップデート方法、およびプログラム
US11556330B2 (en) 2020-11-24 2023-01-17 Kyndryl, Inc. Analysis and implementation of security updates

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150081400A1 (en) * 2013-09-19 2015-03-19 Infosys Limited Watching ARM
KR102271265B1 (ko) 2014-01-21 2021-07-01 오라클 인터내셔날 코포레이션 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티 테넌시를 지원하기 위한 시스템 및 방법
US10476938B2 (en) 2014-01-21 2019-11-12 Oracle International Corporation System and method for multitenancy store in a multitenant application server environment
US10103946B2 (en) 2014-01-21 2018-10-16 Oracle International Corporation System and method for JMS integration in a multitenant application server environment
US10474998B2 (en) 2014-01-21 2019-11-12 Oracle International Corporation System and method for messaging in a multitenant application server environment
US10187454B2 (en) 2014-01-21 2019-01-22 Oracle International Corporation System and method for dynamic clustered JMS in an application server environment
US10027550B2 (en) 2014-06-23 2018-07-17 Oracle International Corporation System and method for multitenant-aware console for use in a multitenant application server environment
US10873627B2 (en) 2014-06-23 2020-12-22 Oracle International Corporation System and method for supporting use of an in-memory data grid with a multitenant application server environment
US9405530B2 (en) 2014-09-24 2016-08-02 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
US10318280B2 (en) 2014-09-24 2019-06-11 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
US10382537B2 (en) 2014-09-25 2019-08-13 Oracle International Corporation System and method for use of a global runtime in a multitenant application server environment
US10462068B2 (en) 2014-09-25 2019-10-29 Oracle International Corporation System and method for tenant onboarding in a multitenant application server environment
US10467061B2 (en) 2014-09-25 2019-11-05 Oracle International Corporation System and method for resource overriding in a multitenant application server environment
US10348565B2 (en) 2014-09-25 2019-07-09 Oracle International Corporation System and method for rule-based elasticity in a multitenant application server environment
US11057272B2 (en) 2014-09-26 2021-07-06 Oracle International Corporation System and method for transactions in a multitenant application server environment
US10091135B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for multi-tenancy enablement of enterprise java applications using resource proxies and application tenancy context
US10050903B2 (en) 2014-09-26 2018-08-14 Oracle International Corporation System and method for multi-tenancy enablement of enterprise JAVA (TM) applications using resource proxies and application tenancy context
WO2016049584A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US10250512B2 (en) 2015-01-21 2019-04-02 Oracle International Corporation System and method for traffic director support in a multitenant application server environment
CN106302623B (zh) * 2015-06-12 2020-03-03 微软技术许可有限责任公司 承租人控制的云更新
US10148752B2 (en) 2015-07-13 2018-12-04 CYBRIC Inc. Enterprise level security orchestration
US10277622B2 (en) 2015-07-13 2019-04-30 CYBRIC Inc. Enterprise level cybersecurity automatic remediation
US9900377B2 (en) 2015-08-07 2018-02-20 International Business Machines Corporation Dynamic healthchecking load balancing gateway
US20170115978A1 (en) * 2015-10-26 2017-04-27 Microsoft Technology Licensing, Llc Monitored upgrades using health information
US10671376B2 (en) * 2016-03-15 2020-06-02 Shenzhen Skyworth-Rgb Electronic Co., Ltd. Server program hot upgrading method and device
US10001983B2 (en) 2016-07-27 2018-06-19 Salesforce.Com, Inc. Rolling version update deployment utilizing dynamic node allocation
US10310841B2 (en) * 2016-09-16 2019-06-04 Oracle International Corporation System and method for handling lazy deserialization exceptions in an application server environment
US10872074B2 (en) 2016-09-30 2020-12-22 Microsoft Technology Licensing, Llc Distributed availability groups of databases for data centers
US10360242B2 (en) 2016-12-01 2019-07-23 Bank Of America Corporation Automated server analysis and patching for enabling relational database migration to a cloud network
CN106789249B (zh) * 2016-12-22 2019-12-10 北京五八信息技术有限公司 热更新方法、客户端及服务器
US10157053B2 (en) 2017-02-14 2018-12-18 Arris Enterprises Llc Modified federation architecture with reduced update time
CN108733533B (zh) * 2017-04-18 2021-07-13 微软技术许可有限责任公司 经计划的主机维护的可选的手动调度
US10318279B2 (en) * 2017-05-30 2019-06-11 Microsoft Technology Licensing, Llc Autonomous upgrade of deployed resources in a distributed computing environment
US10389603B2 (en) * 2017-06-02 2019-08-20 Microsoft Technology Licensing, Llc Fast provisioning of tenants on a hosted service
CN109086125B (zh) * 2017-06-14 2021-01-22 杭州海康威视数字技术股份有限公司 图片分析方法、装置及系统、计算机设备及存储介质
US10579357B2 (en) 2017-07-20 2020-03-03 International Business Machines Corporation Cognitive expected program code installation result assessment
CA3070593A1 (en) * 2017-07-21 2019-01-24 Zeronorth, Inc. Enterprise level cybersecurity automatic remediation
US11237814B2 (en) * 2017-08-17 2022-02-01 Oracle International Corporation System and method for supporting custom hooks during patching in an application server environment
US11075799B2 (en) 2017-08-24 2021-07-27 Oracle International Corporation System and method for provisioning in a multi-tenant application server environment
US11416235B2 (en) * 2017-09-28 2022-08-16 Oracle International Corporation System and method for managed server independence for deployment of software applications and libraries
US10540496B2 (en) 2017-09-29 2020-01-21 International Business Machines Corporation Dynamic re-composition of patch groups using stream clustering
US10721296B2 (en) 2017-12-04 2020-07-21 International Business Machines Corporation Optimized rolling restart of stateful services to minimize disruption
US11539748B2 (en) 2018-01-23 2022-12-27 Zeronorth, Inc. Monitoring and reporting enterprise level cybersecurity remediation
US11121872B2 (en) 2018-01-23 2021-09-14 Zeronorth, Inc. Trusted verification of cybersecurity remediation
US10379985B1 (en) * 2018-02-01 2019-08-13 EMC IP Holding Company LLC Automating and monitoring rolling cluster reboots
US10289403B1 (en) 2018-03-29 2019-05-14 Microsoft Technology Licensing, Llc Enhanced server farm patching system for enabling developers to override off-peak patching schedules
US10585659B2 (en) * 2018-03-29 2020-03-10 Microsoft Technology Licensing, Llc Enabling tenant administrators to initiate request driven peak-hour builds to override off-peak patching schedules
CN108874503A (zh) * 2018-06-05 2018-11-23 国云科技股份有限公司 一种云平台应用集群的配置代理更新方法
US11115344B2 (en) 2018-06-27 2021-09-07 Oracle International Corporation Computerized methods and systems for migrating cloud computer services
US10911367B2 (en) 2018-06-27 2021-02-02 Oracle International Corporation Computerized methods and systems for managing cloud computer services
US10785129B2 (en) 2018-06-27 2020-09-22 Oracle International Corporation Computerized methods and systems for maintaining and modifying cloud computer services
US11190599B2 (en) 2018-06-27 2021-11-30 Oracle International Corporation Method and system for cloud service pre-provisioning
US11089098B2 (en) * 2018-07-24 2021-08-10 Vmware, Inc. Migration as a service-based server and agent applications migration
US10579370B2 (en) * 2018-08-03 2020-03-03 EMC IP Company LLC Method to disintegrate a monolith service to microservices
CN109739532B (zh) * 2018-12-13 2022-05-27 北京计算机技术及应用研究所 一种国产Linux操作系统上的软件更新方法
US11119753B2 (en) * 2019-05-06 2021-09-14 Paypal, Inc. Distributed autonomous patching system
US11379434B2 (en) * 2019-05-13 2022-07-05 Jpmorgan Chase Bank, N.A. Efficient and automatic database patching using elevated privileges
US11907743B2 (en) 2019-05-21 2024-02-20 Oracle International Corporation System and method for relocating customer virtual machine instances in a multi-tenant cloud service
US11281522B2 (en) * 2019-08-30 2022-03-22 Microsoft Technology Licensing, Llc Automated detection and classification of dynamic service outages
US11467925B2 (en) 2020-01-30 2022-10-11 Rubrik, Inc. Exporting a database to a native database recovery environment
US11360860B2 (en) 2020-01-30 2022-06-14 Rubrik, Inc. Exporting a database from a foreign database recovery environment
US11604761B2 (en) * 2020-01-30 2023-03-14 Rubrik, Inc. Utilizing a tablespace to export from a foreign database recovery environment
US11609828B2 (en) 2020-01-30 2023-03-21 Rubrik, Inc. Utilizing a tablespace to export to a native database recovery environment
US11507392B2 (en) 2020-02-26 2022-11-22 Red Hat, Inc. Automatically configuring computing clusters
US11436004B2 (en) 2020-04-23 2022-09-06 Red Hat, Inc. Calculating a patch target on an application server
CN111580844B (zh) * 2020-05-09 2024-02-02 上海航天电子通讯设备研究所 支持在轨动态更新的软硬件协同的应用程序维护方法
US11886867B2 (en) 2020-11-12 2024-01-30 International Business Machines Corporation Workflow patching
CN112328331B (zh) * 2020-11-30 2023-03-24 中国航空工业集团公司西安航空计算技术研究所 一种分区更换应用的方法和装置
CN112698846B (zh) * 2020-12-30 2024-04-09 麒麟软件有限公司 一种Linux系统自动安装补丁的方法和系统
US11748087B2 (en) * 2021-06-28 2023-09-05 Okta, Inc. Software update distribution within a multi-tenant architecture
CN113342400B (zh) * 2021-06-29 2022-05-17 上海哔哩哔哩科技有限公司 离线包打包方法、装置及计算机设备
CN114461264B (zh) * 2021-07-22 2023-01-10 荣耀终端有限公司 打补丁方法、生成补丁的方法及相关设备
US20230044016A1 (en) * 2021-08-03 2023-02-09 Vertiv It Systems, Inc. System and method for service management and container orchestration within a host environment
CN113641386A (zh) * 2021-08-17 2021-11-12 西安酷赛科技有限公司 一种基于报错频次进行升级的方法及其系统
US11645066B2 (en) 2021-08-23 2023-05-09 International Business Machines Corporation Managing and distributing patches for multi-tenant applications
US11695655B1 (en) * 2023-01-20 2023-07-04 Citigroup Technology, Inc. Platform for automated management of servers
US12192081B2 (en) * 2023-01-31 2025-01-07 Salesforce, Inc. De-centralized high risk actions on coordinated computer systems
US20240289112A1 (en) * 2023-02-28 2024-08-29 Gm Cruise Holdings Llc Progressive delivery of cluster infrastructure updates

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0397030A (ja) * 1989-09-11 1991-04-23 Hitachi Ltd プログラム修正方式
JP2004102379A (ja) * 2002-09-05 2004-04-02 Hitachi Ltd パッチ適用管理プログラム、方法、およびシステム
JP2005092803A (ja) * 2003-09-19 2005-04-07 Fujitsu Ltd ソフトウェアに修正情報を適用する装置および方法
WO2006040810A1 (ja) * 2004-10-12 2006-04-20 Fujitsu Limited ソフトウェア更新プログラム、ソフトウェア更新装置およびソフトウェア更新方法
JP2011257847A (ja) * 2010-06-07 2011-12-22 Nippon Telegr & Teleph Corp <Ntt> 通信システムおよび通信システム更新方法
JP2012527027A (ja) * 2009-05-13 2012-11-01 インターナショナル・ビジネス・マシーンズ・コーポレーション ランタイム環境を構築するためのシステムおよび方法

Family Cites Families (239)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838910A (en) 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US6542926B2 (en) 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6247109B1 (en) 1998-06-10 2001-06-12 Compaq Computer Corp. Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space
EP1145519B1 (en) * 1999-06-10 2005-08-31 Alcatel Internetworking, Inc. System and method for policy-based network management of virtual private networks
US6845503B1 (en) 1999-08-13 2005-01-18 Sun Microsystems, Inc. System and method for enabling atomic class loading in an application server environment
US8234650B1 (en) 1999-08-23 2012-07-31 Oracle America, Inc. Approach for allocating resources to an apparatus
US6904593B1 (en) 2000-03-24 2005-06-07 Hewlett-Packard Development Company, L.P. Method of administering software components using asynchronous messaging in a multi-platform, multi-programming language environment
AU2001249475A1 (en) * 2000-03-27 2001-10-08 Vertical*I Inc. Business technology exchange and collaboration system
US6922685B2 (en) 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US20020002635A1 (en) 2000-06-30 2002-01-03 Arto Astala Presentation of an active window in a terminal and method of using same
US7370364B2 (en) 2000-07-31 2008-05-06 Ellacoya Networks, Inc. Managing content resources
US7150015B2 (en) 2000-09-01 2006-12-12 Pace Charles P Method and system for deploying an asset over a multi-tiered network
US7222268B2 (en) 2000-09-18 2007-05-22 Enterasys Networks, Inc. System resource availability manager
US7185364B2 (en) 2001-03-21 2007-02-27 Oracle International Corporation Access system interface
US7065755B2 (en) 2001-03-15 2006-06-20 Sun Microsystems, Inc. Method and apparatus for removing class initialization barriers from shared compiled methods
US6931638B2 (en) 2001-03-15 2005-08-16 Sun Microsystems, Inc Method and apparatus to facilitate sharing optimized instruction code in a multitasking virtual machine
US7003768B2 (en) 2001-03-15 2006-02-21 Sun Microsystems, Inc. Method and apparatus for class intialization barriers and access to class variables in multitasking virtual machines
US7165255B2 (en) 2001-03-15 2007-01-16 Sun Microsystems, Inc. Method and apparatus for managing surplus memory in multitasking system
US20020184312A1 (en) 2001-05-31 2002-12-05 International Business Machines Corproration Computer networks simultaneously sharing images and data with individual scan and reset by a plurality of users - systems, methods & program products
WO2002101510A2 (en) 2001-06-13 2002-12-19 Caminus Corporation System architecture and method for energy industry trading and transaction management
US7130897B2 (en) 2001-10-11 2006-10-31 International Business Machines Corporation Dynamic cluster versioning for a group
US6980980B1 (en) 2002-01-16 2005-12-27 Microsoft Corporation Summary-detail cube architecture using horizontal partitioning of dimensions
US7725590B2 (en) 2002-04-19 2010-05-25 Computer Associates Think, Inc. Web services broker
US6950825B2 (en) 2002-05-30 2005-09-27 International Business Machines Corporation Fine grained role-based access to system resources
US7225462B2 (en) 2002-06-26 2007-05-29 Bellsouth Intellectual Property Corporation Systems and methods for managing web user information
US6792460B2 (en) 2002-10-02 2004-09-14 Mercury Interactive Corporation System and methods for monitoring application server performance
JP3862652B2 (ja) 2002-12-10 2006-12-27 キヤノン株式会社 印刷制御方法及び情報処理装置
US7379998B2 (en) 2003-03-31 2008-05-27 Jp Morgan Chase Bank System and method for multi-platform queue queries
NO20032418D0 (no) 2003-05-27 2003-05-27 Ericsson Telefon Ab L M Aggregering av ikke blokkerende, varige tilstandsmaskiner på en "EnterpriseJava Bean" plattform
US7590984B2 (en) 2003-05-29 2009-09-15 International Business Machines Corporation System and method for balancing a computing load among computing resources in a distributed computing problem
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
WO2005036405A1 (en) 2003-10-08 2005-04-21 Unisys Corporation Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
GB2407658A (en) 2003-10-31 2005-05-04 Daniele Grazioli Computer network for processing received event data
US8166152B1 (en) 2003-12-30 2012-04-24 Sap Ag Architecture and method for monitoring system resources within an enterprise network
US7984442B2 (en) 2004-01-29 2011-07-19 Klingman Edwin E Intelligent memory device multilevel ASCII interpreter
US7703019B2 (en) 2004-03-26 2010-04-20 Sap Ag Visual administrator for specifying service references to support a service
US20050216585A1 (en) 2004-03-26 2005-09-29 Tsvetelina Todorova Monitor viewer for an enterprise network monitoring system
US7657892B2 (en) 2004-05-20 2010-02-02 Bea Systems, Inc. System and method for application server with self-tuned threading model
US7395458B2 (en) 2004-05-21 2008-07-01 Bea Systems, Inc. Diagnostic instrumentation
US20050283658A1 (en) 2004-05-21 2005-12-22 Clark Thomas K Method, apparatus and program storage device for providing failover for high availability in an N-way shared-nothing cluster system
US7752629B2 (en) 2004-05-21 2010-07-06 Bea Systems Inc. System and method for application server with overload protection
US7562341B2 (en) 2004-05-24 2009-07-14 Sap Ag Deploy callback system with bidirectional containers
US7606832B2 (en) 2004-11-12 2009-10-20 International Business Machines Corporation System and method for orchestrating composite web services in constrained data flow environments
US7657870B2 (en) 2005-02-25 2010-02-02 International Business Machines Corporation Method and apparatus for implementing dynamic function groups in a data processing system
US8387052B2 (en) 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US7454448B1 (en) 2005-04-14 2008-11-18 Sun Microsystems, Inc. Synchronizing object promotion in a multi-tasking virtual machine with generational garbage collection
US8140816B2 (en) 2005-05-12 2012-03-20 International Business Machines Corporation Utilizing partition resource requirements from workload estimation to automate partition software configuration and validation
US8402525B1 (en) 2005-07-01 2013-03-19 Verizon Services Corp. Web services security system and method
US20070022203A1 (en) 2005-07-19 2007-01-25 International Business Machines Corporation Method and apparatus for providing proxied JMX interfaces to highly available J2EE components
US7945677B2 (en) 2005-09-06 2011-05-17 Sap Ag Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions
US8429630B2 (en) 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US7765187B2 (en) 2005-11-29 2010-07-27 Emc Corporation Replication of a consistency group of data storage objects from servers in a data network
US7707553B2 (en) 2005-12-08 2010-04-27 International Business Machines Corporation Computer method and system for automatically creating tests for checking software
US7725446B2 (en) 2005-12-19 2010-05-25 International Business Machines Corporation Commitment of transactions in a distributed system
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8255455B2 (en) 2005-12-30 2012-08-28 Sap Ag Method and system for message oriented middleware virtual provider distribution
US7461231B2 (en) 2006-01-12 2008-12-02 International Business Machines Corporation Autonomically adjusting one or more computer program configuration settings when resources in a logical partition change
US9497247B2 (en) 2006-03-06 2016-11-15 Ca, Inc. Transferring session state information between two or more web-based applications of a server system
US8984534B2 (en) 2006-03-31 2015-03-17 British Telecommunications Public Limited Company Interfacing between a receiving component of a server application and a remote application
US8788569B2 (en) 2006-03-31 2014-07-22 British Telecommunications Public Limited Company Server computer system running versions of an application simultaneously
US8250559B2 (en) 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
US8924524B2 (en) 2009-07-27 2014-12-30 Vmware, Inc. Automated network configuration of virtual machines in a virtual lab data environment
US20080022380A1 (en) 2006-05-25 2008-01-24 Gemalto, Inc. Method of patching applications on small resource-constrained secure devices
US7962470B2 (en) 2006-06-01 2011-06-14 Sap Ag System and method for searching web services
US7706303B2 (en) 2006-06-26 2010-04-27 Cisco Technology, Inc. Port pooling
US20080071922A1 (en) 2006-09-19 2008-03-20 International Business Machines Corporation Methods, systems, and computer program products to transparently dispatch requests to remote resources in a multiple application server environment
US8331351B2 (en) 2007-01-05 2012-12-11 International Business Machines Corporation Communicating with session initiation protocol (SIP) application sessions using a message-oriented middleware system
US7870171B2 (en) 2007-02-12 2011-01-11 Oracle America, Inc. Method and system for garbage collection in a multitasking environment
US7627621B2 (en) 2007-02-12 2009-12-01 Sun Microsystems, Inc. Method and system for minor garbage collection
US8656386B1 (en) 2007-03-13 2014-02-18 Parallels IP Holdings GmbH Method to share identical files in a common area for virtual machines having the same operating system version and using a copy on write to place a copy of the shared identical file in a private area of the corresponding virtual machine when a virtual machine attempts to modify the shared identical file
US8078704B2 (en) 2007-04-12 2011-12-13 Hewlett-Packard Development Company, L.P. Provisioning of a service environment using web services
US8640146B2 (en) 2007-05-31 2014-01-28 Red Hat, Inc. Providing extensive ability for describing a management interface
US8099737B2 (en) 2007-06-05 2012-01-17 Oracle International Corporation Event processing finite state engine and language
US8782322B2 (en) 2007-06-21 2014-07-15 International Business Machines Corporation Ranking of target server partitions for virtual server mobility operations
KR20090006572A (ko) 2007-07-12 2009-01-15 삼성전자주식회사 쓰레드 풀 관리 장치 및 방법
US7975138B2 (en) 2007-07-18 2011-07-05 Oracle International Corporation Systems and methods for mutually authenticated transaction coordination messages over insecure connections
US7756912B2 (en) 2007-09-28 2010-07-13 Oracle America, Inc. Method and system for minor garbage collection in a multitasking environment
US20090094073A1 (en) 2007-10-03 2009-04-09 Yahoo! Inc. Real time click (rtc) system and methods
US8701103B1 (en) 2007-10-31 2014-04-15 Wal-Mart Stores, Inc. Method and system for minimizing or eliminating downtime when updating a website
US8424078B2 (en) 2007-11-06 2013-04-16 International Business Machines Corporation Methodology for secure application partitioning enablement
US7974204B2 (en) 2007-11-07 2011-07-05 The Boeing Company Quality of service management for message flows across multiple middleware environments
US9148488B2 (en) 2007-11-08 2015-09-29 Sap Ag Configuration domains for the configuration of web services and consumer proxies
US20090144720A1 (en) 2007-11-30 2009-06-04 Sun Microsystems, Inc. Cluster software upgrades
US8219687B2 (en) 2008-01-04 2012-07-10 International Business Machines Corporation Implementing browser based hypertext transfer protocol session storage
JP5256744B2 (ja) 2008-01-16 2013-08-07 日本電気株式会社 資源割当てシステム、資源割当て方法及びプログラム
US20090187899A1 (en) 2008-01-23 2009-07-23 International Business Machines Corporation Method for intelligent patch scheduling using historic averages of virtual i/o utilization and predictive modeling
US8671404B2 (en) 2008-02-12 2014-03-11 Red Hat, Inc. Distributing and managing virtual machines
US20100017794A1 (en) 2008-03-14 2010-01-21 Terix Computer Company, Inc. d/b/a Terix Computer Service Operating system patch metadata service and process for recommending system patches
JP4467624B2 (ja) 2008-03-24 2010-05-26 富士通株式会社 ソフトウェアアップデート管理プログラム、ソフトウェアアップデート管理装置、およびソフトウェアアップデート管理方法
US20090259999A1 (en) * 2008-04-11 2009-10-15 Oracle International Corporation Method and system for applying a patch during application execution
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8146091B2 (en) 2008-05-01 2012-03-27 International Business Machines Corporation Expansion and contraction of logical partitions on virtualized hardware
US8255972B2 (en) 2008-06-06 2012-08-28 International Business Machines Corporation Method to automatically map business function level policies to it management policies
US8869099B2 (en) 2008-07-28 2014-10-21 Infosys Limited System and method of enabling multi-tenancy for software as a service application
CN101639835A (zh) 2008-07-30 2010-02-03 国际商业机器公司 多租户场景中应用数据库分区的方法和装置
WO2010029602A1 (ja) * 2008-09-12 2010-03-18 富士通株式会社 ソフトウェアパッチ適用方法、プログラム及び装置
US10365935B1 (en) 2008-09-23 2019-07-30 Open Invention Network Llc Automated system and method to customize and install virtual machine configurations for hosting in a hosting environment
US8782204B2 (en) 2008-11-28 2014-07-15 Red Hat, Inc. Monitoring hardware resources in a software provisioning environment
US9229707B2 (en) 2008-12-18 2016-01-05 Sap Se Zero downtime mechanism for software upgrade of a distributed computer system
AU2010205834A1 (en) 2009-01-15 2011-08-04 Hcs Kablolama Sistemleri San. Ve. Tic. A.S. Improved cabling system and method for monitoring and managing physically connected devices over a data network
WO2010084126A1 (en) 2009-01-26 2010-07-29 International Business Machines Corporation Method and system for selection of a runtime stack for deployment of a web service
US8060792B2 (en) 2009-03-31 2011-11-15 Amazon Technologies, Inc. Monitoring and automated recovery of data instances
US9197417B2 (en) 2009-04-24 2015-11-24 Microsoft Technology Licensing, Llc Hosted application sandbox model
US20100325624A1 (en) 2009-06-22 2010-12-23 Stephen John Bartolo Method and System for Application Portability
US20110125979A1 (en) 2009-11-25 2011-05-26 International Business Machines Corporation Migrating Logical Partitions
US20110138374A1 (en) * 2009-12-09 2011-06-09 Suprio Pal Downtime reduction for enterprise manager patching
US8856747B2 (en) 2009-12-14 2014-10-07 Sap Ag Enterprise JavaBeans explorer
US8433802B2 (en) 2010-01-26 2013-04-30 International Business Machines Corporation System and method for fair and economical resource partitioning using virtual hypervisor
CN102170457A (zh) * 2010-02-26 2011-08-31 国际商业机器公司 向应用的多租户提供服务的方法和装置
US8898668B1 (en) 2010-03-31 2014-11-25 Netapp, Inc. Redeploying baseline virtual machine to update a child virtual machine by creating and swapping a virtual disk comprising a clone of the baseline virtual machine
US8209955B2 (en) 2010-04-07 2012-07-03 Ford Global Technologies, Llc Reduction of particulate, NOx, and ammonia emissions
US8572706B2 (en) 2010-04-26 2013-10-29 Vmware, Inc. Policy engine for cloud platform
US8935317B2 (en) 2010-06-23 2015-01-13 Microsoft Corporation Dynamic partitioning of applications between clients and servers
US8407689B2 (en) 2010-06-25 2013-03-26 Microsoft Corporation Updating nodes considering service model constraints
US8458346B2 (en) * 2010-07-30 2013-06-04 Sap Ag Multiplexer for multi-tenant architectures
US8812627B2 (en) 2010-08-20 2014-08-19 Adobe Systems Incorporated System and method for installation and management of cloud-independent multi-tenant applications
US11048492B2 (en) * 2010-08-24 2021-06-29 Oracle International Corporation Reducing downtime while patching binaries on a cluster
US9185054B2 (en) 2010-09-15 2015-11-10 Oracle International Corporation System and method for providing zero buffer copying in a middleware machine environment
US8856460B2 (en) * 2010-09-15 2014-10-07 Oracle International Corporation System and method for zero buffer copying in a middleware environment
US8775626B2 (en) 2010-09-17 2014-07-08 Microsoft Corporation Using templates to configure cloud resources
US8949939B2 (en) 2010-10-13 2015-02-03 Salesforce.Com, Inc. Methods and systems for provisioning access to customer organization data in a multi-tenant system
US20120102480A1 (en) * 2010-10-20 2012-04-26 Microsoft Corporation High availability of machines during patching
KR20120045586A (ko) 2010-10-29 2012-05-09 한국전자통신연구원 다중 테넌트용 SaaS 애플리케이션 설정 장치 및 방법
US8443365B2 (en) 2010-11-03 2013-05-14 Hewlett-Packard Development Company, L.P. Methods and systems to clone a virtual machine instance
US8751573B2 (en) 2010-11-23 2014-06-10 Sap Ag Cloud-processing management with a landscape directory
US20120144044A1 (en) 2010-12-06 2012-06-07 Verizon Patent And Licensing Inc. System for and method of dynamically deploying servers
US8699499B2 (en) 2010-12-08 2014-04-15 At&T Intellectual Property I, L.P. Methods and apparatus to provision cloud computing network elements
US8793286B2 (en) 2010-12-09 2014-07-29 International Business Machines Corporation Hierarchical multi-tenancy management of system resources in resource groups
US8577885B2 (en) 2010-12-09 2013-11-05 International Business Machines Corporation Partitioning management of system resources across multiple users
US8863138B2 (en) 2010-12-22 2014-10-14 Intel Corporation Application service performance in cloud computing
US8560699B1 (en) 2010-12-28 2013-10-15 Amazon Technologies, Inc. Enforceable launch configurations
US9460169B2 (en) 2011-01-12 2016-10-04 International Business Machines Corporation Multi-tenant audit awareness in support of cloud environments
US8843501B2 (en) 2011-02-18 2014-09-23 International Business Machines Corporation Typed relevance scores in an identity resolution system
US8769071B2 (en) 2011-02-25 2014-07-01 Red Hat, Inc. Dynamic mapping of identifiers in a multi-tenant computing system
WO2012135270A1 (en) 2011-03-30 2012-10-04 Sybase 365, Inc. System and method for dynamic throttling during bulk message delivery
US11099982B2 (en) 2011-03-31 2021-08-24 Oracle International Corporation NUMA-aware garbage collection
JP5691062B2 (ja) 2011-04-04 2015-04-01 株式会社日立製作所 仮想計算機の制御方法及び管理計算機
US9336060B2 (en) 2011-06-17 2016-05-10 Microsoft Technology Licensing, Llc Middleware services framework for on-premises and cloud deployment
JP5930847B2 (ja) 2011-06-29 2016-06-08 キヤノン株式会社 サーバーシステムおよび制御方法およびプログラム
US8954786B2 (en) 2011-07-28 2015-02-10 Oracle International Corporation Failover data replication to a preferred list of instances
US8826222B2 (en) 2011-08-02 2014-09-02 International Business Machines Corporation Pre-merge conflict avoidance
US8782762B2 (en) 2011-08-17 2014-07-15 International Business Machines Corporation Building data security in a networked computing environment
CN102333115A (zh) 2011-09-01 2012-01-25 杭州湾云计算技术有限公司 一种将已有Web应用转化为SaaS多租户应用的方法和装置
US8875157B2 (en) 2011-09-09 2014-10-28 Microsoft Corporation Deployment of pre-scheduled tasks in clusters
US9766986B2 (en) 2013-08-08 2017-09-19 Architecture Technology Corporation Fight-through nodes with disposable virtual machines and rollback of persistent state
US8635152B2 (en) 2011-09-14 2014-01-21 Microsoft Corporation Multi tenancy for single tenancy applications
US8589481B2 (en) 2011-09-14 2013-11-19 Microsoft Corporation Multi tenant access to applications
JP5840786B2 (ja) 2011-09-19 2016-01-06 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited センサーデータベースのアプリケーションおよびサービスの開発および配備のための演算プラットフォーム
US9442769B2 (en) 2011-09-30 2016-09-13 Red Hat, Inc. Generating cloud deployment targets based on predictive workload estimation
US8892601B2 (en) 2011-10-25 2014-11-18 Microsoft Corporation Creating web applications using cloud-based friction-free databases without requiring web hosting knowledge
US10114843B2 (en) 2011-11-09 2018-10-30 Sap Se Content migration framework
US9055065B2 (en) 2011-11-21 2015-06-09 Red Hat, lnc. Managing participant order in distributed transactions
CN102571916B (zh) 2011-12-02 2015-11-04 曙光信息产业(北京)有限公司 一种云存储空间的租赁软件的架构与操作方法
US8886781B2 (en) 2011-12-13 2014-11-11 Microsoft Corporation Load balancing in cluster storage systems
US9154366B1 (en) 2011-12-14 2015-10-06 Sprint Communications Company L.P. Server maintenance modeling in cloud computing
US10467058B2 (en) 2011-12-20 2019-11-05 Microsoft Technology Licensing, Llc Sandboxing for multi-tenancy
US9038083B2 (en) 2012-02-09 2015-05-19 Citrix Systems, Inc. Virtual machine provisioning based on tagged physical resources in a cloud computing environment
US9535764B2 (en) 2012-02-15 2017-01-03 Cisco Technology, Inc. Resource allocation mechanism
CN102609271B (zh) 2012-02-20 2014-09-10 山东大学 一种元数据驱动的SaaS应用的可视化定制方法及系统
CN102571821A (zh) 2012-02-22 2012-07-11 浪潮电子信息产业股份有限公司 一种云安全访问控制模型
US8756269B2 (en) 2012-02-28 2014-06-17 International Business Machines Corporation Monitoring a path of a transaction across a composite application
CN102638567B (zh) 2012-03-02 2015-05-20 深圳市朗科科技股份有限公司 多应用云存储平台和云存储终端
US9052961B2 (en) 2012-03-02 2015-06-09 Vmware, Inc. System to generate a deployment plan for a cloud infrastructure according to logical, multi-tier application blueprint
US9146944B2 (en) 2012-03-16 2015-09-29 Oracle International Corporation Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls
US8972963B2 (en) * 2012-03-28 2015-03-03 International Business Machines Corporation End-to-end patch automation and integration
US8959523B2 (en) 2012-03-30 2015-02-17 International Business Machines Corporation Automated virtual machine placement planning using different placement solutions at different hierarchical tree levels
US10282196B2 (en) 2012-04-06 2019-05-07 Oracle International Corporation System and method for moving enterprise software application components across environments
US8881149B2 (en) 2012-04-11 2014-11-04 International Business Machines Corporation Control of java resource runtime usage
US8924799B2 (en) 2012-04-16 2014-12-30 Yahoo! Inc. Method and system for providing a predefined content to a user
US8918448B2 (en) 2012-05-11 2014-12-23 International Business Machines Corporation Application component decomposition and deployment
US20130339400A1 (en) 2012-05-29 2013-12-19 Salesforce.Com, Inc. System and method for mobile multi-tenant database system management
US8904402B2 (en) 2012-05-30 2014-12-02 Red Hat, Inc. Controlling capacity in a multi-tenant platform-as-a-service environment in a cloud computing system
US8850432B2 (en) 2012-05-30 2014-09-30 Red Hat, Inc. Controlling utilization in a multi-tenant platform-as-a-service (PaaS) environment in a cloud computing system
CN103455512A (zh) 2012-05-31 2013-12-18 上海博腾信息科技有限公司 Saas平台多租户数据管理模型
US20130326494A1 (en) 2012-06-01 2013-12-05 Yonesy F. NUNEZ System and method for distributed patch management
US8953441B2 (en) 2012-06-06 2015-02-10 Juniper Networks, Inc. Re-routing network traffic after link failure
US8813225B1 (en) 2012-06-15 2014-08-19 Amazon Technologies, Inc. Provider-arbitrated mandatory access control policies in cloud computing environments
GB2503464A (en) 2012-06-27 2014-01-01 Ibm Allocating nodes in a service definition graph to resources in a resource catalogue according to node specific rules
WO2014007813A1 (en) 2012-07-03 2014-01-09 Hewlett-Packard Development Company, L.P. Managing a multitenant cloud service
US9158913B2 (en) 2012-07-09 2015-10-13 Ca, Inc. Managing virtual machines using owner digital signatures
US9325585B1 (en) 2012-07-10 2016-04-26 The Boeing Company Mission-driven autonomous and adaptive resource management
GB2504487A (en) 2012-07-30 2014-02-05 Ibm Automated network deployment of cloud services into a network by matching security requirements
US9509553B2 (en) 2012-08-13 2016-11-29 Intigua, Inc. System and methods for management virtualization
US8984240B2 (en) 2012-08-30 2015-03-17 International Business Machines Corporation Reducing page faults in host OS following a live partition mobility event
US9424024B2 (en) 2012-09-07 2016-08-23 Oracle International Corporation System and method for elasticity management of services with a cloud computing environment
US10225164B2 (en) 2012-09-07 2019-03-05 Oracle International Corporation System and method for providing a cloud computing environment
US9621435B2 (en) 2012-09-07 2017-04-11 Oracle International Corporation Declarative and extensible model for provisioning of cloud based services
US10122596B2 (en) 2012-09-07 2018-11-06 Oracle International Corporation System and method for providing a service management engine for use with a cloud computing environment
US9160749B2 (en) 2012-09-07 2015-10-13 Oracle International Corporation System and method for providing whitelist functionality for use with a cloud computing environment
WO2014039918A1 (en) 2012-09-07 2014-03-13 Oracle International Corporation Ldap-based multi-customer in-cloud identity management system
US9268605B2 (en) 2012-09-12 2016-02-23 Salesforce.Com, Inc. Mechanism for facilitating sliding window resource tracking in message queues for fair management of resources for application servers in an on-demand services environment
US20140082470A1 (en) 2012-09-19 2014-03-20 4Clicks Solutions, LLC Spreadtree hierarchy system for spreadsheets and related methods
US9092270B2 (en) 2012-09-25 2015-07-28 Oracle International Corporation Method of SOA performance tuning
US9280554B2 (en) 2012-09-28 2016-03-08 Oracle International Corporation Using confidence values for synchronizing file systems
CN102923405B (zh) 2012-10-24 2015-07-08 三一重工股份有限公司 一种粉罐及搅拌站
US9794337B2 (en) 2012-10-30 2017-10-17 International Business Machines Corporation Balancing storage node utilization of a dispersed storage network
US9319285B2 (en) 2012-11-09 2016-04-19 Unisys Corporation Optimizing partition placement in virtualized environments
US9015714B2 (en) 2012-11-27 2015-04-21 Citrix Systems, Inc. Diagnostic virtual machine created to monitor cluster of hypervisors based on user requesting assistance from cluster administrator
US9292330B2 (en) 2012-11-29 2016-03-22 International Business Machines Corporation Replacing virtual machine disks
US9479563B2 (en) 2012-12-13 2016-10-25 Salesforce.Com, Inc. Adaptive configuration management databases
US9483289B2 (en) 2012-12-17 2016-11-01 Unisys Corporation Operating system in a commodity-based computing system
US9632764B2 (en) 2012-12-31 2017-04-25 Oracle International Corporation Defining configurable characteristics of a product and associating configuration with enterprise resources
GB2510874B (en) * 2013-02-15 2020-09-16 Ncr Corp Server system supporting remotely managed IT services
US10706025B2 (en) 2013-02-28 2020-07-07 Amazon Technologies, Inc. Database system providing single-tenant and multi-tenant environments
US9843487B2 (en) 2013-03-12 2017-12-12 Oracle International Corporation System and method for provisioning cloud services using a hybrid service management engine plugin
US9690566B2 (en) * 2013-03-14 2017-06-27 Oracle International Corporation System and method for virtual assembly patching in a cloud environment
US20140278641A1 (en) 2013-03-15 2014-09-18 Fiserv, Inc. Systems and methods for incident queue assignment and prioritization
US9904533B2 (en) 2013-03-15 2018-02-27 Oracle International Corporation Circular buffer of software versions
US20140280595A1 (en) 2013-03-15 2014-09-18 Polycom, Inc. Cloud Based Elastic Load Allocation for Multi-media Conferencing
US9634958B2 (en) 2013-04-02 2017-04-25 Amazon Technologies, Inc. Burst capacity for user-defined pools
US9154488B2 (en) 2013-05-03 2015-10-06 Citrix Systems, Inc. Secured access to resources using a proxy
US9596297B2 (en) 2013-05-16 2017-03-14 Toshiba Global Commerce Solutions Holdings Corporation Managing communications in a multi-client, multi-server environment
US9648134B2 (en) 2013-05-20 2017-05-09 Empire Technology Development Llc Object migration between cloud environments
US9479449B2 (en) 2013-06-03 2016-10-25 Advanced Micro Devices, Inc. Workload partitioning among heterogeneous processing nodes
US9419930B2 (en) 2013-06-28 2016-08-16 International Business Machines Corporation Management of connections in a messaging environment
US20160020965A1 (en) 2013-08-07 2016-01-21 Hitachi, Ltd. Method and apparatus for dynamic monitoring condition control
US9396031B2 (en) 2013-09-27 2016-07-19 International Business Machines Corporation Distributed UIMA cluster computing (DUCC) facility
US9461969B2 (en) 2013-10-01 2016-10-04 Racemi, Inc. Migration of complex applications within a hybrid cloud environment
TWI502214B (zh) 2013-10-09 2015-10-01 Largan Precision Co Ltd 光學結像鏡頭組、取像裝置及可攜裝置
US10031761B2 (en) 2013-10-11 2018-07-24 International Business Machines Corporation Pluggable cloud enablement boot device and method
US10230580B2 (en) 2013-10-30 2019-03-12 Hewlett Packard Enterprise Development Lp Management of the lifecycle of a cloud service modeled as a topology
US10187454B2 (en) 2014-01-21 2019-01-22 Oracle International Corporation System and method for dynamic clustered JMS in an application server environment
KR102271265B1 (ko) 2014-01-21 2021-07-01 오라클 인터내셔날 코포레이션 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티 테넌시를 지원하기 위한 시스템 및 방법
US9928111B2 (en) 2014-06-23 2018-03-27 Oracle International Corporation System and method for configuration tagging in a multitenant application server environment
US9792099B2 (en) 2014-06-24 2017-10-17 Oracle International Corporation System and method for supporting deployment in a multitenant application server environment
US9729401B2 (en) 2014-08-22 2017-08-08 Vmware, Inc. Automatic remediation of poor-performing virtual machines for scalable applications
US9405530B2 (en) 2014-09-24 2016-08-02 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
US10467061B2 (en) 2014-09-25 2019-11-05 Oracle International Corporation System and method for resource overriding in a multitenant application server environment
US10382537B2 (en) 2014-09-25 2019-08-13 Oracle International Corporation System and method for use of a global runtime in a multitenant application server environment
US9971671B2 (en) 2014-09-26 2018-05-15 Oracle International Corporation System and method for dynamic debugging in a multitenant application server environment
US10523709B2 (en) 2014-09-26 2019-12-31 Oracle International Corporation System and method for dynamic security configuration in a multitenant application server environment
US10178184B2 (en) 2015-01-21 2019-01-08 Oracle International Corporation System and method for session handling in a multitenant application server environment
US9772837B2 (en) 2015-06-29 2017-09-26 Verizon Patent And Licensing Inc. Dynamic delivery of code and fixes
US20170142228A1 (en) 2015-11-12 2017-05-18 International Business Machines Corporation Server cluster patch tracking to facilitate code level matching of added servers
US9696985B1 (en) 2016-01-06 2017-07-04 International Business Machines Corporation Patching of virtual machines within sequential time windows
US10374930B2 (en) 2016-01-28 2019-08-06 Microsoft Technology Licensing, Llc Off-peak patching for enterprise stability
US10055219B1 (en) 2016-04-07 2018-08-21 Nutanix, Inc. Dynamically preparing server-specific installation images using a virtual media source node
US11128555B2 (en) 2016-07-22 2021-09-21 Intel Corporation Methods and apparatus for SDI support for automatic and transparent migration
US10268513B2 (en) 2016-12-23 2019-04-23 Nice Ltd. Computing resource allocation optimization

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0397030A (ja) * 1989-09-11 1991-04-23 Hitachi Ltd プログラム修正方式
JP2004102379A (ja) * 2002-09-05 2004-04-02 Hitachi Ltd パッチ適用管理プログラム、方法、およびシステム
JP2005092803A (ja) * 2003-09-19 2005-04-07 Fujitsu Ltd ソフトウェアに修正情報を適用する装置および方法
WO2006040810A1 (ja) * 2004-10-12 2006-04-20 Fujitsu Limited ソフトウェア更新プログラム、ソフトウェア更新装置およびソフトウェア更新方法
JP2012527027A (ja) * 2009-05-13 2012-11-01 インターナショナル・ビジネス・マシーンズ・コーポレーション ランタイム環境を構築するためのシステムおよび方法
JP2011257847A (ja) * 2010-06-07 2011-12-22 Nippon Telegr & Teleph Corp <Ntt> 通信システムおよび通信システム更新方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
佐瀬 力: "導入効果を最大限に発揮するRACシステム構築完全マニュアル", DB MAGAZINE 2005年8月号, vol. 第15巻 第4号, JPN6020008971, 1 August 2005 (2005-08-01), JP, pages 93 - 105, ISSN: 0004229766 *
島村 栄 他: "将来のクラウド基盤技術を支える研究開発", NEC技報, vol. 第63巻 第2号, JPN6019032168, 23 April 2010 (2010-04-23), pages 114 - 118, ISSN: 0004229765 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556330B2 (en) 2020-11-24 2023-01-17 Kyndryl, Inc. Analysis and implementation of security updates
JP2022170887A (ja) * 2021-04-30 2022-11-11 株式会社日立製作所 アップデート装置、アップデート方法、およびプログラム
JP7240439B2 (ja) 2021-04-30 2023-03-15 株式会社日立製作所 アップデート装置、アップデート方法、およびプログラム

Also Published As

Publication number Publication date
US20160231998A1 (en) 2016-08-11
EP3198431A1 (en) 2017-08-02
WO2016049376A1 (en) 2016-03-31
US10394550B2 (en) 2019-08-27
US9405530B2 (en) 2016-08-02
US20190347089A1 (en) 2019-11-14
CN106716360A (zh) 2017-05-24
KR102443172B1 (ko) 2022-09-14
JP6748638B2 (ja) 2020-09-02
US9916153B2 (en) 2018-03-13
US10853056B2 (en) 2020-12-01
US20160085543A1 (en) 2016-03-24
CN106716360B (zh) 2020-03-03
KR20170058955A (ko) 2017-05-29
US20180165087A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
US11880679B2 (en) System and method for supporting patching in a multitenant application server environment
US10853056B2 (en) System and method for supporting patching in a multitenant application server environment
US10178184B2 (en) System and method for session handling in a multitenant application server environment
US9311199B2 (en) Replaying jobs at a secondary location of a service
JP6615796B2 (ja) マルチテナントアプリケーションサーバ環境におけるパーティションマイグレーションのためのシステムおよび方法
JP5443614B2 (ja) 複製されたデータインスタンスのモニタリング
US7673023B1 (en) Method and apparatus for service processor updates
TW201306632A (zh) 用於服務之回復服務位置
EP2494444A1 (en) Failover and recovery for replicated data instances
US20180081673A1 (en) System and method for handling lazy deserialization exceptions in an application server environment
Shaw et al. Clusterware

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180724

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180724

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200528

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200807

R150 Certificate of patent or registration of utility model

Ref document number: 6748638

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250