機械翻訳について

ランタイムの更新

目次

概要

実行中のModel in ImageドメインにWebLogicドメイン・ホーム構成を更新し、更新をWebLogic Serverポッドの再起動のままにする場合は、既存のモデルを変更し、WebLogic Kubernetes Operatorに変更を伝播するように指示する必要があります。

かわりに、WebLogic Server管理コンソールまたはWLSTスクリプトを使用してModel in Imageドメインの直接実行時のWebLogic構成更新を行うと、更新は一時的になります。 これは、ポッド再起動のたびにモデルからModel in Imageドメイン・ホームが再生成されるためです。

最初にドメインを停止せずに、実行中のModel in Imageドメインにモデル更新を伝播するには、次の2つの方法があります:

  • オフライン更新: オフライン更新は、モデルを更新してからドメイン・ロールを開始することでWebLogicポッドに伝播され、新しいドメイン構成が生成され、更新された構成でドメインのWebLogic Server管理サーバーを再起動してから、実行中の他のサーバーを再起動します。

  • オンライン更新: モデル変更が完全に動的構成MBean属性になるように構成されている場合は、オプションで、オンライン更新を使用してロールなしでWebLogicポッドに変更を伝播できます。 オンライン更新リクエストに、オフライン更新のみを使用して達成できる非動的モデル更新が含まれている場合、結果の動作はドメイン・リソースのYAML domain.spec.configuration.model.onlineUpdate.onNonDynamicChanges属性によって制御されます。この属性の詳細は、「非動的WebLogic構成変更のオンライン更新処理」を参照してください。

オペレータは、ドメインがまだ実行されている間、すべてのタイプのWebLogic構成変更をサポートしません。 オンラインまたはオフラインの更新で変更がサポートされていない場合、変更を伝播するには、ドメインを完全にシャットダウンし、変更を適用して、最後にドメインを再起動する必要があります。 ドメインの完全再起動については、「ドメイン全体の再起動」を参照してください。

ノート: サポートされている変更とサポートされていない変更については、これらのセクションで説明: サポートされる更新およびサポートされない更新 更新の正しいアプローチを開始するために、ドメイン・リソースに必要な変更を行うことは管理者責任です。

「構成のオーバーライド」で説明されているように、ドメイン・リソースYAMLファイルconfiguration.overridesConfigMapを使用して指定されたWebLogic構成のオーバーライドであるカスタム構成のオーバーライドは、Model in Imageと組み合せてサポートされ「ません」 カスタム・オーバーライドが指定されている場合、Model in Imageはエラーを生成します。 モデル・ファイル、シークレットまたはモデル・イメージの更新は、カスタム構成のオーバーライドの更新よりも単純で柔軟性が高いため、これは考慮しないでください。 構成のオーバーライドとは異なり、モデル・ファイルの更新の構文は、モデル・ファイルを最初に指定するための構文と完全に一致します。

既存のモデルの更新

実行中のModel in Imageドメインに対して提案されたモデルの更新が、「サポートされる更新」および「サポートされない更新」を参照することでサポートされている場合は、次の方法を使用できます。

オンラインまたはオフライン更新の場合:

  • モデル・ファイルを含む新しいまたは変更されたWDT ConfigMapを指定し、ドメイン・リソースYAMLファイルconfiguration.model.configMapフィールドを使用してマップを参照します。 ConfigMapのモデル・ファイルは、イメージ内のモデル・ファイルとマージされます。 ConfigMapがドメインと同じネームスペースにデプロイされていることを確認します。

  • モデル・ファイルのマクロによって参照されるシークレットを変更、追加または削除し、ドメイン・リソースYAMLファイルconfiguration.secretsフィールドを使用してシークレットを参照します。 シークレットがドメインと同じネームスペースにデプロイされていることを確認します。

オフライン更新の場合のみ、次の2つの追加オプションがあります:

  • 新規または変更されたモデル・ファイルで新しいイメージを指定します。

    • ドメイン・リソースYAMLファイルspec.imageで指定されたイメージにファイルが配置されている場合は、このフィールドを変更してイメージを参照します。
    • 「補助イメージ」を使用してイメージ内のモデル・ファイルを提供する場合は、対応するserverPod.auxiliaryImages.imageフィールド値を変更して新しいイメージを参照するか、新しいイメージ用の新しいserverPod.auxiliaryImagesマウントを追加します。
  • モデル・ファイルのマクロによって参照される環境変数を変更、追加または削除します。 環境変数は、ドメイン・リソースYAMLファイルspec.serverPod.envまたはspec.serverPod.adminServer.env属性で指定されます。

最後の2つの変更オプション、または同様のドメイン・リソースYAMLファイルが「サーバーの再起動の原因となるフィールド」に変更され、他のすべての変更の準備が完了するまで遅延することをお薦めします。 これは、そのような変更が自動的かつ即時にイントロスペクタ・ジョブの再実行となり、ジョブが成功した場合、ドメインのロールとオフライン更新(モデルに伴う変更がある場合)が発生するためです。

モデル更新には、追加、変更および削除を含めることができます。 モデル変更の生成に役立ちます:

モデル更新の準備が完了したら、「オフライン更新」または「オンライン更新」のステップに従って、変更したモデルを実行中のドメインに伝播するようにオペレータに指示できます。

オフライン更新

次のステップを使用して、モデルに対するオフライン構成の更新を開始します:

  1. 「サポート対象」および「サポートされていません」の更新をチェックして、更新がサポートされていることを確認します。
  2. 「既存のモデルの更新」に従って、モデル・リソースを変更、追加または削除します。
  3. ドメイン・リソースYAMLファイルを変更します:
    1. イメージを更新した場合:
      • ドメイン・リソースYAMLファイルspec.imageで指定されたイメージにファイルが配置されている場合は、このフィールドを変更してイメージを参照します。
      • 「補助イメージ」を使用してイメージ内のモデル・ファイルを提供する場合は、対応するserverPod.auxiliaryImages.imageフィールド値を変更して新しいイメージを参照するか、新しいイメージ用の新しいserverPod.auxiliaryImagesマウントを追加します。
    2. 環境変数を更新する場合は、それに応じてdomain.spec.serverPod.envまたはdomain.spec.adminServer.serverPod.envを変更します。
    3. WDT ConfigMapを指定する場合は、domain.spec.configuration.model.configMapをConfigMapの名前に設定します。
    4. 変更の一部としてシークレットを追加または削除する場合は、domain.spec.configuration.secrets配列に現在のすべてのシークレットが反映されていることを確認します。
    5. イメージまたは環境変数を変更した場合は、ドメイン・リソースYAMLファイルの変更は必要ありません。変更しない場合は、オペレータにドメインをロールするように指示する属性を変更します。 たとえば、「ドメインspec.restartVersionの変更」を参照するか、他のドメイン・リソースYAML 「サーバーの再起動の原因となるフィールド」を変更します。

オペレータは、後でドメインのイントロスペクタ・ジョブを再実行します。 このジョブは、すべてのシークレットおよび環境変数をリロードし、すべてのモデル・ファイルをマージして、新しいドメイン・ホームを生成します。

ジョブが成功すると、オペレータはDOMAIN_UID-weblogic-domain-introspect-cmという名前のConfigMapを使用して、更新されたドメイン・ホームをポッドで使用できるようにし、その後、オペレータはドメイン内でWebLogic Serverポッドを実行しているそれぞれをロール(再起動)して、新しい構成をロードできるようにします。 ドメイン・ロールは、ドメインの管理サーバーの再起動から始まり、ドメイン内の各管理対象サーバーの再起動に進みます。

ジョブで失敗が報告された場合は、「デバッグ」を参照してください。

オフライン更新のサンプル

データ・ソースを追加するオフライン更新サンプルについては、Model in Imageサンプルの「1つのユース・ケースを更新」を参照してください。

オンライン更新

次のステップを使用して、モデルに対するオンライン構成の更新を開始します:

  1. 「サポート対象」および「サポートされていません」の更新をチェックして、更新がサポートされていることを確認します。
  2. 「既存のモデルの更新」に従って、モデル・シークレットまたはWDT ConfigMapを変更、追加または削除します。
  3. ドメイン・リソースYAMLファイルを変更します:
    1. domain.spec.imagedomain.spec.serverPod.env、またはその他のドメイン・リソースYAML 「サーバーの再起動の原因となるフィールド」を変更「しないでください」。これにより、自動的にすぐにイントロスペクタ・ジョブの再実行、ジョブが成功した場合のロール、および付随するモデル変更がある場合のオフライン更新が行われます。

    2. WDT ConfigMapを指定する場合は、domain.spec.configuration.model.configMapをConfigMapの名前に設定します。

    3. 変更の一部としてシークレットを追加または削除する場合は、domain.spec.configuration.secrets配列に現在のすべてのシークレットが反映されていることを確認します。

    4. domain.spec.configuration.model.onlineUpdate.enabledtrueに設定します(デフォルトはfalseです)。

    5. domain.spec.configuration.model.onlineUpdate.onNonDynamicChangesCommitUpdateOnly (デフォルト)およびCommitUpdateAndRollのいずれかに設定します。 詳細は、「非動的WebLogic構成変更のオンライン更新処理」を参照してください。

    6. オプションで、domain.spec.configuration.model.onlineUpdate.wdtTimeoutsのWDTタイムアウトを調整します。

      • これは、イントロスペクタ・ジョブのWDTオンライン更新コマンドのタイムアウトによってイントロスペクタ・ジョブ・ログまたはオペレータ・ログにエラーが発生した場合にのみ必要です。
      • すべてのタイムアウトはミリ秒で指定され、デフォルトは2分または3分です。
      • タイムアウトの完全なリストについては、kubectl explain domain.spec.configuration.model.onlineUpdate.wdtTimeoutsを呼び出すことができます。
    7. domain.spec.introspectVersionを別の値に変更します。 例については、「ドメインspec.introspectVersionの変更」を参照してください。

これらのステップを完了した後、オペレータは、新しいマージ済モデルを生成するイントロスペクタ・ジョブを実行し、新しいマージ済モデルを以前にデプロイしたマージ済モデルと比較し、WebLogic Deploy Toolingを実行して差異を処理します:

  • イントロスペクタ・ジョブWDTで差異が完全に動的なWebLogic構成MBean変更に限定されていると判断された場合、オペレータは、実行中のWebLogicポッドにデルタ・オンライン更新を送信します。

  • WDTで非動的WebLogic構成MBeanの変更が検出された場合、domain.spec.configuration.model.onlineUpdate.onNonDynamicChangesCommitUpdateOnly (デフォルト)に構成したか、またはCommitUpdateAndRollに構成したかに応じて、オペレータは更新を無視するか、オンライン更新のみを許可するか、オフライン更新(ロール)を開始できます。 詳細は、「非動的WebLogic構成変更のオンライン更新処理」を参照してください。

イントロスペクタ・ジョブで失敗またはその他の失敗が発生したことが報告された場合、アドバイスについては「デバッグ」を参照してください。 失敗から回復する場合は、次の点に注意してください:

  • オペレータは、ユーザー制御下にあるリソースの変更を自動的に元に戻すことはできません(オフライン更新の場合と同様)。 たとえば、問題の変更をイメージ、configMap、シークレットおよびドメイン・リソースのYAMLファイルに戻すことは、管理者の責任です。

  • オンライン更新中に失敗が発生した場合、実行中のドメインに対するWebLogic構成変更は行われず、イントロスペクタ・ジョブは、domain.spec.failureRetryLimitMinutesで指定された失敗再試行時間制限まで再試行します。 問題を修正するには、モデル・リソース(ConfigMapまたはシークレット(あるいはその両方)を変更および再適用し、さらにイントロスペクタ・ジョブが再試行を停止した場合は、ドメイン・リソースdomain.spec.introspectVersionも再度変更する必要があります。 詳細は、「ドメイン失敗再試行処理」を参照してください。

オンライン更新用のサンプル・ドメイン・リソースYAMLファイル:

...
kind: Domain
metadata:
  name: sample-domain1
  namespace: sample-domain1-ns
...
spec:
  ...
  introspectVersion: 5
  configuration:
    ...
    model:
      domainType: "WLS"
      configMap: sample-domain1-wdt-config-map
      runtimeEncryptionSecret: sample-domain1-runtime-encryption-secret
      onlineUpdate:
        enabled: true
        onNonDynamicChanges: "CommitUpdateAndRoll"
    secrets:
    - sample-domain1-datasource-secret
    - sample-domain1-another-secret

オンライン更新シナリオ

  1. 動的なWebLogic MBean変更のみを含むオンライン更新に成功しました。

    • 動的WebLogic MBeanの変更例:
      • データ・ソース接続プールの容量、パスワードおよびターゲットの変更。
      • アプリケーション・ターゲットの変更。
      • データソースの削除または追加。
      • アプリケーションの削除または追加。
      • MBeanの変更は、実行中のドメインでコミットされ、即時に有効になります。
    • イントロスペクタ・ジョブの完了後に予想される結果:
      • ドメインCompleted条件ステータスがTrueに設定されます。 詳細は、「ドメイン条件」を参照してください。
      • すべてのポッドのweblogic.introspectVersionラベルは、domain.spec.introspectVersionと一致するように設定されます。
    • 必要なアクション:
      • なし。
  2. domain.spec.configuration.model.onlineUpdate.onNonDynamicChangesCommitUpdateOnly (デフォルト)のときに、動的でないWebLogic MBean属性を含むオンライン更新に成功しました。

    • 非動的WebLogic MBean変更の例:
      • データ・ソース・ドライバのパラメータ・プロパティの変更(usernameなど)。
    • イントロスペクタ・ジョブの完了後に予想される結果:
      • 動的WebLogic構成の変更は、実行中のドメインでコミットされ、即時に有効になります。
      • 非動的WebLogic構成の変更は、管理者が後でポッドをロールするまで、すでに実行中のWebLogic Serverポッドでは有効になりません。
      • ドメイン・ステータスAvailable条件は、StatusTrueになります。
      • ドメイン・ステータスConfigChangesPendingRestart条件は、管理者がすでに実行されているすべてのWebLogic Serverポッドをロールするまで、TrueStatusになります。
      • 各WebLogic Serverポッドのweblogic.introspectVersionラベルは、domain.spec.introspectVersionと一致します。
      • すでに実行されている各WebLogic Serverポッドには、管理者が後でポッドをロールするまでweblogic.configChangesPendingRestart=trueラベルが付けられます。
    • 必要なアクション:
  3. domain.spec.configuration.model.onlineUpdate.onNonDynamicChangesCommitUpdateAndRollの場合、動的でないWebLogic MBean属性を含むオンライン更新に成功しました。

    • イントロスペクタ・ジョブの完了後に予想される結果:
      • 動的WebLogic構成の変更は、実行中のドメインでコミットされ、即時に有効になります。
      • オペレータはドメイン・ロールを開始します。
      • ポッドがロールされると、動的でないWebLogic構成の変更が各ポッドに有効になります。
      • 各WebLogic Serverポッドのweblogic.introspectVersionラベルは、ロールされた後、domain.spec.introspectVersionと一致します。
      • ロールの完了後、ドメイン・ステータスAvailable条件のStatusTrueになります。
    • 必要なアクション:
  4. domain.spec.introspectVersion, spec.configuration.secrets, spec.configuration.model.onlineUpdateまたはspec.configuration.model.configMapに加えて、ドメイン・リソース「サーバーの再起動の原因となるフィールド」を変更します。

    • イントロスペクタ・ジョブの完了後に予想される結果:
      • イントロスペクタ・ジョブによってオンライン更新が試行されませんでした。
      • すべてのモデル変更は、オフライン更新と同様に処理されます(これにより、ジョブ成功後に再起動/ロールバックが発生する可能性があります)。
    • 必要なアクション:
      • なし。
  5. 「サポート対象外」のモデル属性を変更します。

    • 期待される結果:
      • 通常、予期される動作は未定義ですが、場合によってはイントロスペクタ・ジョブ、イベントまたはドメイン・ステータスに有用なエラーが発生し、エラーが修正されるか、その最大エラー数を超えたまでジョブが定期的に再試行されます。
    • 必要なアクション:
      • オフライン更新がサポートされている場合はオフライン更新を使用します。そうでない場合は、ドメイン全体をシャットダウンして再起動します。
      • 「デバッグ」を参照してください。
  6. モデルのエラー(構文エラーなど)。

    • イントロスペクタ・ジョブの完了後に予想される結果:
      • イントロスペクタ・ジョブのポッド・ログ、ドメイン・イベントおよびドメイン・ステータスでエラーが発生しました。
      • ドメイン・ステータスFailed条件は、StatusTrueになります。
      • 定期ジョブは、エラーを修正するか、最大エラー数を超えるまで再試行します。
    • 必要なアクション:
      • モデルを修正します。
      • 再試行が停止した場合は、spec.introspectVersionを変更します。
  7. ドメインの更新中に他のエラーが発生しました。

    • 期待される結果:
      • イントロスペクタ・ジョブ、ドメイン・イベントまたはドメイン・ステータス(あるいはその両方)でエラーが発生しました。
      • ドメイン・ステータスFailed条件は、StatusTrueになります。
      • 失敗したイントロスペクタ・ジョブがある場合、エラーを修正するか、その最大エラー数を超えるまで、ジョブは定期的に再試行されます。 その他のタイプのエラーでも、通常、定期的な再試行が行われます。
    • 必要なアクション:
      • 「デバッグ」を参照してください。
      • ドメイン・リソースまたはモデル(あるいはその両方)を修正します。
      • 再試行が停止した場合は、spec.introspectVersionを変更します。

オンライン更新ステータスとラベル

オンライン更新時に、オペレータはイントロスペクタ・ジョブを再実行します。このジョブは、実行中のドメインに対するWebLogic構成のオンライン変更を試行します。 ドメイン・リソースのステータス条件およびそのWebLogic Serverポッド・ラベルを使用して、更新のステータスをモニターできます。

たとえば、ドメイン・ステータスの場合は、kubectl -n MY_NAMESPACE get domain MY_DOMAINUID -o yamlを使用してドメイン・リソースdomain.statusスタンザをチェックし、WebLogicポッド・ラベルの場合は、kubectl -n MY_NAMESPACE get pods --show-labelsに加えてオプションで--watchを追加して、時間の経過とともにポッドが変化したときにポッドを監視できます。

domain.statusConfigChangesPendingRestart条件には、オンライン更新の進行状況に関する情報が含まれます。 詳細は、「ConfigChangesPendingRestart条件」を参照してください。

オンライン更新成功後の予想されるWebLogicポッド・ラベルの一部を次に示します:

  1. 各WebLogic Serverポッドのweblogic.introspectVersionラベル値は、最終的に定義したdomain.spec.introspectVersion値と一致します。

    • ドメイン・リソース属性domain.spec.configuration.model.onlineUpdate.onNonDynamicChangesCommitUpdateOnly (デフォルト)の場合、イントロスペクション・ジョブが正常に完了すると、すべてのポッドのイントロスペクト・バージョン・ラベルが即時に更新されます。
    • ドメイン・リソース属性domain.spec.configuration.model.onlineUpdate.onNonDynamicChangesCommitUpdateAndRollで、モデルに対する非動的構成の変更がない場合、イントロスペクション・ジョブが正常に完了すると、すべてのポッドのイントロスペクト・バージョン・ラベルが即時に更新されます。
    • ドメイン・リソース属性domain.spec.configuration.model.onlineUpdate.onNonDynamicChangesCommitUpdateAndRollで、モデルに対する動的でないク・ラベル構成変更がある場合、ポッドのロール後に各ポッドのイントロスペクト・バージョン・ラベルが更新されます。
  2. 次のすべてに該当する場合、管理者によってポッドが再起動(ロール)されるまで、各WebLogic Serverポッドにweblogic.configChangesPendingRestart=trueラベルが表示されます:

    • ドメイン・リソースのdomain.spec.configuration.model.onlineUpdate.onNonDynamicChanges属性はCommitUpdateOnly (デフォルト)です。
    • 非動的WebLogic構成の変更は、オンライン・モデルの正常な更新に含まれていました。

非動的WebLogic構成変更のオンライン更新処理

ドメイン・リソースYAML domain.spec.configuration.model.onlineUpdate.onNonDynamicChanges属性は、オンライン更新イントロスペクタ・ジョブ中に非動的WebLogic構成の変更が検出された場合の動作を制御します。 非動的変更とは、ドメインの再起動を有効にする必要がある変更です。 有効な値は、CommitUpdateOnly (デフォルト)またはCommitUpdateAndRollです:

  • CommitUpdateOnly (デフォルト)に設定され、非動的変更が検出されると、すべての変更がコミットされ、動的変更が即時に有効になり、ドメインは自動的に再起動(ロール)されず、ポッドが後で再起動された場合にのみ、非動的変更がポッドで有効になります。

  • CommitUpdateAndRollに設定し、非動的変更が検出されると、すべての変更がコミットされ、動的変更が即時に有効になり、ドメインは自動的に再起動(ロール)、非動的変更がポッドの再起動後に各ポッドに対して有効になります。

  When updating a domain with non-dynamic MBean changes with
  `domain.spec.configuration.model.onlineUpdate.onNonDynamicChanges=CommitUpdateOnly` (the default),
  the non-dynamic changes are not effective on a WebLogic pod until the pod is restarted.
  However, if you scale up a cluster or otherwise start any new servers in the domain,
  then the new servers will start with the new non-dynamic changes
  and the domain will then be running in an inconsistent state until its older servers are restarted.

オンライン更新削除処理

オンライン更新の主なユース・ケースは、小さな追加、単一リソースの削除、依存関係のないMBeans、または非動的MBean属性の変更を行うことです。

次の2つのケースで、オンライン更新で削除が問題になる場合があります:

  • 相互依存関係を持つ複数のリソースを削除します。
  • MBean階層の親タイプ・セクションの削除。

通常、これらの問題を回避するには、複雑な削除をオフライン更新で処理する必要があります。

ノート: モデルの親タイプのセクションを暗黙的に削除すると、そのセクションのタイプに応じて動作することがあります。 たとえば、model.configMapappDeployments:の下のモデルにアプリケーションがあり、その後、オンライン更新を使用してConfigMapを更新し、appDeploymentセクションを含まないようにすると、オンライン更新によってドメインからアプリケーションが削除されます。

MBeanタイプ・セクションの削除

MBeanの削除の例として、次で始まるWDT ConfigMapを考えてみます:

      resources:
        SelfTuning:
          WorkManager:
            wm1:
              Target: 'cluster-1'
            wm2:
              Target: 'cluster-1'
        JDBCSystemResource:
          ...

work-managersを使用せずに新しいモデルにオンライン更新する場合は、ConfigMapを次のように変更します:

      resources:
        SelfTuning:
          WorkManager:
        JDBCSystemResource:
          ...

または、追加のConfigMapを指定します:

      resources:
        SelfTuning:
          WorkManager:
            '!wm1':
            '!wm2':

ConfigMapを省略したSelfTuningセクションに置換しようとすると、オンライン更新は失敗します:

      resources:
        JDBCSystemResource:
          ...

これは、MBean型SelfTuningおよびWorkManagerを暗黙的に削除するため失敗します。

相互参照MBeansの削除

クロス・リファレンスを持つMBeansのサポートされていないオンライン更新削除の例は、ワーク・マネージャ全体を削除する制約を使用して構成されたワーク・マネージャの場合を考えてみます:

      resources:
        SelfTuning:
          WorkManager:
            newWM:
              Target: 'cluster-1'
              MinThreadsConstraint: 'SampleMinThreads'
              MaxThreadsConstraint: 'SampleMaxThreads'
          MinThreadsConstraint:
            SampleMinThreads:
              Count: 1
          MaxThreadsConstraint:
            SampleMaxThreads:
              Count: 10

ConfigMapで更新したモデルを次のように指定しようとした場合:

      resources:
          SelfTuning:
              WorkManager:
              MinThreadsConstraint:
              MaxThreadsConstraint:

次に、オペレータはこのデルタを使用してドメインのオンライン更新を試みます:

      resources:
          SelfTuning:
              MaxThreadsConstraint:
                  '!SampleMaxThreads':
              WorkManager:
                  '!newWM':
              MinThreadsConstraint:
                  '!SampleMinThreads':

オンライン更新では、WorkManagerを削除する前に参照されているすべてのConstraintsを削除しない可能性があるため、これは失敗します。

クロス依存関係を持つオブジェクトに対するオンライン更新に関する問題を回避するには、一連のオンライン更新を使用して段階的に変更できます。 たとえば、前のワーク・マネージャの例を続け、最初にオンライン更新を実行してワーク・マネージャを省略し、制約は省略します:

      resources:
        SelfTuning:
          WorkManager:
          MinThreadsConstraint:
            SampleMinThreads:
              Count: 1
          MaxThreadsConstraint:
            SampleMaxThreads:
              Count: 10

更新が完了したら、別のオンライン更新を実行します:

      resources:
          SelfTuning:
              WorkManager:
              MinThreadsConstraint:
              MaxThreadsConstraint:

オンライン更新サンプル

データ・ソースおよびワーク・マネージャを変更するオンライン更新サンプルについては、Model in Imageサンプルの「4つのユース・ケースを更新」を参照してください。

付録

追加の重要な情報については、次の付録を確認してください。

サポートされる更新

次の更新は、オフライン更新またはオンライン更新のsupportedです。ただし、サポート対象外として特にドキュメント化されている領域を参照する場合を除きます:

  • 新しいWebLogicクラスタまたはスタンドアロン・サーバーを追加できます。

  • 動的WebLogicクラスタのサイズを増やすことができます。

  • 対応するモデルYAMLファイル・スニペットを親Bean階層とともに指定することで、新しいMBeansまたはリソースを追加できます。 たとえば、データ・ソースを追加できます。

  • YAMLファイル・スニペットと、既存のMBeanおよび属性を参照する親Bean階層を指定することで、MBean属性を変更または追加できます。 たとえば、mynewdatasourceという名前のデータ・ソースの最大容量を追加または変更するには:

    resources:
      JDBCSystemResource:
        mynewdatasource:
          JdbcResource:
            JDBCConnectionPoolParams:
              MaxCapacity: 5
    

    詳細は、WebLogic Deploy Toolingドキュメントの「複数のモデルの使用」に関する項を参照してください。

  • モデル・マクロが参照するシークレット(@@SECRET:secretname:secretkey@@構文を使用するマクロ)を変更または追加できます。 たとえば、データベースのパスワード・シークレットを変更できます。

  • オフライン更新の場合のみ、モデル・マクロが参照する環境変数を変更または追加できます(@@ENV:myenvvar@@構文を使用するマクロ)。

  • イメージ・モデル・ファイルおよびWDT構成マップでMBean、アプリケーション・デプロイメントまたはリソースへの参照を省略することで、MBean、アプリケーション・デプロイメントまたはリソースを削除できます。 名前付きのMBean、アプリケーション・デプロイメントまたはリソースを削除することもできます。削除するには、名前の直前に感嘆符(!)を追加して、元の名前付き構成を含む元のモデル・ファイルの後に新しいモデル・ファイルがロードされるようにします。 たとえば、モデルにmynewdatasourceという名前のデータ・ソースが定義されている場合、データ・ソースを定義するモデル・ファイルの後にロードする小さいモデル・ファイルを指定することで削除できます。この場合、小さいモデル・ファイルは次のようになります:

    resources:
      JDBCSystemResource:
        !mynewdatasource:
    

    「オンライン更新の例外」があります。

    詳細は、WebLogic Deploying Toolingのドキュメントの「削除する名前付きMBeansの宣言」に関する項を参照してください。

サポートされない更新

サポートされていないモデル更新を実行中のドメインに適用しないようにすることが重要です。 サポートされていない更新を使用しようとすると、常にクリア・エラー・メッセージになるとは限りません。予期される動作は未定義である可能性があります。 サポートされていない更新を行う必要があり、回避策がドキュメント化されていない場合は、変更を行う前にドメインを完全に停止します。 「ドメイン全体の再起動」を参照してください。

次に、回避方法または代替方法が記載されていないかぎり、Model in Imageでサポートされていない実行時更新構成のタイプをまとめます:

  • クラスタ・サイズの変更:
    • 既存のWebLogicクラスタのメンバーシップを変更する機能は制限されています。
    • 具体的には、次のものには実行時更新を適用しないでください:
      • 構成済クラスタにWebLogic Serversを追加しています。 別の方法として、構成されたクラスタではなく動的クラスタを使用することを検討してください。
      • 構成されたクラスタからWebLogic Serversを削除します。 別の方法として、クラスタのドメイン・リソースYAML replicas属性を減らすことができます。
      • 動的クラスタのサイズを減らします。 別の方法として、クラスタのドメイン・リソースYAML replicas属性を減らすことができます。
  • 既存のクラスタまたはサーバーのネットワーク・リスニング・アドレス、ポート、プロトコルおよび有効な構成を実行時に変更、追加または削除することはできません。
    • 具体的には、次のものには実行時更新を適用しないでください:
      • デフォルト、SSL、管理チャネルEnabled、リスニング・アドレスまたはポート。
      • ネットワーク・アクセス・ポイント(カスタム・チャネル)Enabled、リスニング・アドレス、プロトコルまたはポート。
      • ネットワーク・アクセス・ポイントのpublicまたはexternalのアドレスとポートをオーバーライドできます。 JMX (MBean)またはオンラインWLSTへの外部アクセスでは、ネットワーク・アクセス・ポイントの内部ポートと外部ポートが一致している必要があります(JMS、RMIまたはEJBへの外部T3またはHTTPトンネリング・アクセスでは、ポートの一致は必要ありません)。

セキュリティ上の考慮事項により、T3またはRMIプロトコルをクラスタの外部に公開しないことを強くお薦めします。

  • ノード・マネージャ関連の構成。
  • ログ関連の設定。 これは、spec.logHomespec.logHomeEnabledまたはspec.httpAccessLogInLogHome属性を使用して同じMBeansをオーバーライドするようにドメイン・リソースが構成されている場合に、実行時にMBeanのサーバーおよびドメイン・ログ関連の設定を変更、追加または削除するために適用されます。
  • ドメイン名の変更。 ドメイン名は実行時に変更できません。
  • MBean属性の削除:
    • モデル・ファイルですでに指定されている属性をMBeanから直接削除する方法はありません。
    • 回避策は、2つのモデル・ファイルを使用してこれを実行することです:
      • 「サポートされる更新」の説明に従って、!構文を使用して、削除する属性の親である名前付きbean/リソースを削除するモデル・ファイルを追加します。
      • 最初のモデルの後にロードされる別のモデル・ファイルを追加します。このファイルは、名前付きbean/リソースを完全に定義しますが、削除する属性はありません。
  • 既存のMBean名の変更:
    • 属性のMBean名を直接変更する方法はありません。
    • かわりに、「サポートされる更新」の説明に従って、!構文を使用して名前付きMBeanを削除できます。
    • 次に、新しいものを置換として追加します。
  • 組込みLDAPエントリ:
    • 「ユーザー、グループ、ロール」および「資格証明マッピング」の組込みLDAPセキュリティ・エントリ。 たとえば、デフォルト・セキュリティ・レルムにユーザーを追加することはできません。
    • この領域のオンライン更新の試行はイントロスペクタ・ジョブ中に失敗し、オフライン更新の試行は、オフライン更新のローリング・サイクル中に一貫性のないセキュリティ・チェックになる可能性があります。
    • このような更新が必要な場合は、変更する前にドメインを完全にシャットダウンするか、「外部セキュリティ・プロバイダ」に切り替えます。
  • モデルYAML topology:スタンザの変更:
    • たとえば、ConsoleEnabled, RootDirectory, AdminServerNameなどです。
    • 完全なリストの場合は、/u01/wdt/weblogic-deploy/bin/modelHelp.sh -oracle_home $ORACLE_HOME topologyを実行します(これは、/u01/wdt/weblogic-deployディレクトリにWDTをインストールしていることを前提としています)。
  • オンライン更新との依存関係の削除。
  • タイプ別のモデル・エントリの削除:
    • たとえば、オンライン更新でスタンザを省略するか、オフライン更新またはオンライン更新で!SelfTuningを使用して追加のモデルを指定することによって、SelfTuning型のスタンザ全体を削除することはできません。
    • かわりに、MBean自体を省略してSelfTuningの親をそのままにするか、!構文を使用して特定のMBean名と組み合せて追加のモデルを指定することで、特定のMBeanを削除できます。
    • 詳細は、「オンライン更新削除処理」を参照してください。
  • オンライン更新と組み合わせて相互参照を持つ複数のリソースを削除する場合:
    • たとえば、永続ストアと、永続ストアによって参照されるデータ・ソースを同時に削除します。
    • このタイプの失敗の場合、イントロスペクション・ジョブは失敗し、失敗した参照を説明するエラーが記録され、ジョブは最大再試行回数まで自動的に再試行されます。
    • 詳細は、「オンライン更新削除処理」を参照してください。
  • セキュリティ関連の変更とオンライン更新の組み合わせ:
    • このような変更には、domainInfo.Admin*, domainInfo.RCUDbinfo.*, topology.Security.*およびtopology.SecurityConfiguration.*でのセキュリティ変更が含まれます。
    • これらのセクションでオンライン更新を行うと、失敗が発生します。

WDT Discover DomainツールとCompare Modelツールの使用

オプションで、WDT Discoverドメインおよび比較ドメイン・ツールを使用して、モデル・ファイルの更新を生成できます。 WebLogic Deploy Tooling 「ドメインの検出ツール」は既存のドメイン・ホームからモデル・ファイルを生成し、その「モデルの比較ツール」は2つのドメイン・モデルを比較して、最初のドメインを2つ目のドメインに更新するためのYAMLファイルを生成します。

たとえば、WDTを/u01/wdt/weblogic-deployにインストールし、ドメイン・タイプがWLSであるとします:

  1. 既存のドメイン・ホームの検出を実行します。

    $ /u01/wdt/weblogic-deploy/bin/discoverDomain.sh \
      -oracle_home $ORACLE_HOME \
      -domain_home $DOMAIN_HOME \
      -domain_type WLS \
      -archive_file old.zip \
      -model_file old.yaml \
      -variable_file old.properties
    
  2. 次に、コンソールまたはWLSTを使用して、WebLogic構成の変更を行います。

  3. 変更したドメイン・ホームに対してdiscoverを実行します。

    $ /u01/wdt/weblogic-deploy/bin/discoverDomain.sh \
      -oracle_home $ORACLE_HOME \
      -domain_home $DOMAIN_HOME \
      -domain_type WLS \
      -archive_file new.zip \
      -model_file new.yaml \
      -variable_file new.properties
    
  4. diffを使用して、古いYAMLと新しいYAMLを比較します。

    $ diff new.yaml old.yaml
    
  5. compareDomainを使用して古いYAMLと新しいYAMLを比較し、古いYAMLから新しいYAMLへの変換に使用できるYAML更新ファイルを生成します。

    $ /u01/wdt/weblogic-deploy/bin/compareModel.sh \
      -oracle_home $ORACLE_HOME \
      -output_dir /tmp \
      -variable_file old.properties \
      old.yaml \
      new.yaml
    
  6. compareModelは、次のファイルを生成します:

    #      /tmp/diffed_model.json
    #      /tmp/diffed_model.yaml, and
    #      /tmp/compare_model_stdout
    

ドメインrestartVersionまたはintrospectVersionの変更

「オフライン更新」で説明したように、オフライン構成の変更を実行中のドメインに適用するようにオペレータに指示する1つの方法は、ドメインspec.restartVersionを変更することです。 同様に、「オンライン更新」は、ドメインspec.introspectVersionを変更して開始します。 次のいずれかのフィールドを変更する一般的な方法があります:

  • kubectl edit -n MY_NAMESPACE domain MY_DOMAINUIDを使用して、restartVersionまたはintrospectVersionを対話的に変更できます。

  • ドメインのリソース・ファイルがある場合は、このファイルを変更して、ファイルに対してkubectl apply -fをコールできます。

  • Kubernetesのgetおよびpatchコマンドを使用できます。

    restartVersionのサンプル自動化スクリプトで、1番目のパラメータ(デフォルトのsample-domain1-ns)としてネームスペースを取得し、2番目のパラメータ(デフォルトのsample-domain1)としてdomainUIDを取得します:

    #!/bin/bash
    NAMESPACE=${1:-sample-domain1-ns}
    DOMAINUID=${2:-sample-domain1}
    currentRV=$(kubectl -n ${NAMESPACE} get domain ${DOMAINUID} -o=jsonpath='{.spec.restartVersion}')
    if [ $? = 0 ]; then
      # we enter here only if the previous command succeeded
    
      nextRV=$((currentRV + 1))
    
      echo "@@ Info: Rolling domain '${DOMAINUID}' in namespace '${NAMESPACE}' from restartVersion='${currentRV}' to restartVersion='${nextRV}'."
    
      kubectl -n ${NAMESPACE} patch domain ${DOMAINUID} --type='json' \
        -p='[{"op": "replace", "path": "/spec/restartVersion", "value": "'${nextRV}'" }]'
    fi
    

    introspectVersionの同様のサンプル・スクリプトを次に示します:

    #!/bin/bash
    NAMESPACE=${1:-sample-domain1-ns}
    DOMAINUID=${2:-sample-domain1}
    currentIV=$(kubectl -n ${NAMESPACE} get domain ${DOMAINUID} -o=jsonpath='{.spec.introspectVersion}')
    if [ $? = 0 ]; then
      # we enter here only if the previous command succeeded
    
      nextIV=$((currentIV + 1))
    
      echo "@@ Info: Rolling domain '${DOMAINUID}' in namespace '${NAMESPACE}' from introspectVersion='${currentIV}' to introspectVersion='${nextIV}'."
    
      kubectl -n ${NAMESPACE} patch domain ${DOMAINUID} --type='json' \
        -p='[{"op": "replace", "path": "/spec/introspectVersion", "value": "'${nextIV}'" }]'
    fi
    
  • 前の箇条書きアイテムで説明した同じコマンドを呼び出すWebLogic Kubernetes Operatorサンプル・スクリプトを使用できます。