23 エンタープライズ・デプロイメントの共通の構成および管理タスク

構成タスクには、サイジング情報の確認やバックアップとリカバリの実行など、すべてのエンタープライズ・デプロイメントに共通するいくつかの手順が含まれます。エンタープライズ・デプロイメントへのパッチ適用およびコンポーネントのクロス・ワイヤリングは、その他の共通タスクです。

この章の内容は次のとおりです。

すべてのエンタープライズ・デプロイメントの構成および管理タスク

Oracle Fusion Middlewareエンタープライズ・デプロイメントに適用されるこれらの共通の構成タスクを完了します。これらのタスクには、デプロイメントのサイジング要件の確認、Webサービス用のJDBC永続ストアの使用、およびデプロイメントのバックアップの取得が含まれます。

コアDNS割当て

ノート:

このステップは、corednsを使用するすべてのKubernetesシステムに適用されます。
少なくとも2つのcorednsポッドをコントロール・プレーンに配置し(可能な場合)、別の2つのポッドをワーカー・ノードに配置します。corednsフットプリントは低くなっています。
 VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

146268  41684  29088 S   0.3  0.1  25:44.04 coredns
CoreDNSのドキュメントによると、CoreDNSインスタンスに必要なメモリー量は、次の式で(デフォルト設定を使用して)見積もることができます:
MB required (default settings) = (Pods + Services) / 1000 + 54
したがって、まず、コントロール・プレーンとワーカー・プレーンの両方でノードにラベルを付けます。
$ kubectl label nodes K8ControlPlane1 area=dnsarea
$ kubectl label nodes K8ControlPlane2 area=dnsarea
$ kubectl label nodes K8ControlPlane3 area=dnsarea
$ kubectl label nodes k8worker1 area=dnsarea
$ kubectl label nodes k8worker2 area=dnsarea
$ kubectl label nodes k8worker3 area=dnsarea
次に、トポロジ分散制約を使用するようにcorednsデプロイメントを更新します。

ノート:

トポロジ分散制約は、Kubernetes v1.18で開始されるベータ版です。

最初に、kube-apiサーバーおよびkube-schedulerで機能ゲートを有効にします。次に、ワーカーおよびコントロール・プレーン・ノードにポッドが適切に分散されるように、corednsデプロイメントを変更します。

corednsトポロジ分散構成の詳細は次のとおりです:

次に、corednsデプロイメントのyamlファイルのサンプルを示します:

CorednsデプロイメントのYAML
  $ kubectl get deployment coredns -n kube-system -o yaml
  apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      deployment.kubernetes.io/revision: "7"
    creationTimestamp: "2021-01-15T13:15:05Z"
    generation: 8
    labels:
      area: dnsarea
      k8s-app: kube-dns
    managedFields:
    - apiVersion: apps/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:labels:
            .: {}
            f:k8s-app: {}
        f:spec:
          f:progressDeadlineSeconds: {}
          f:revisionHistoryLimit: {}
          f:selector:
            f:matchLabels:
              .: {}
              f:k8s-app: {}
          f:strategy:
            f:rollingUpdate:
              .: {}
              f:maxSurge: {}
              f:maxUnavailable: {}
            f:type: {}
          f:template:
            f:metadata:
              f:labels:
                .: {}
                f:k8s-app: {}
            f:spec:
              f:containers:
                k:{"name":"coredns"}:
                  .: {}
                  f:args: {}
                  f:image: {}
                  f:imagePullPolicy: {}
                  f:livenessProbe:
                    .: {}
                    f:failureThreshold: {}
                    f:httpGet:
                      .: {}
                      f:path: {}
                      f:port: {}
                      f:scheme: {}
                    f:initialDelaySeconds: {}
                    f:periodSeconds: {}
                    f:successThreshold: {}
                    f:timeoutSeconds: {}
                  f:name: {}
                  f:ports:
                    .: {}
                    k:{"containerPort":53,"protocol":"TCP"}:
                      .: {}
                      f:containerPort: {}
                      f:name: {}
                      f:protocol: {}
                    k:{"containerPort":53,"protocol":"UDP"}:
                      .: {}
                      f:containerPort: {}
                      f:name: {}
                      f:protocol: {}
                    k:{"containerPort":9153,"protocol":"TCP"}:
                      .: {}
                      f:containerPort: {}
                      f:name: {}
                      f:protocol: {}
                  f:readinessProbe:
                    .: {}
                    f:failureThreshold: {}
                    f:httpGet:
                      .: {}
                      f:path: {}
                      f:port: {}
                      f:scheme: {}
                    f:periodSeconds: {}
                    f:successThreshold: {}
                    f:timeoutSeconds: {}
                  f:resources:
                    .: {}
                    f:limits:
                      .: {}
                      f:memory: {}
                    f:requests:
                      .: {}
                      f:cpu: {}
                      f:memory: {}
                  f:securityContext:
                    .: {}
                    f:allowPrivilegeEscalation: {}
                    f:capabilities:
                      .: {}
                      f:add: {}
                      f:drop: {}
                    f:readOnlyRootFilesystem: {}
                  f:terminationMessagePath: {}
                  f:terminationMessagePolicy: {}
                  f:volumeMounts:
                    .: {}
                    k:{"mountPath":"/etc/coredns"}:
                      .: {}
                      f:mountPath: {}
                      f:name: {}
                      f:readOnly: {}
              f:dnsPolicy: {}
              f:nodeSelector:
                .: {}
                f:kubernetes.io/os: {}
              f:priorityClassName: {}
              f:restartPolicy: {}
              f:schedulerName: {}
              f:securityContext: {}
              f:serviceAccount: {}
              f:serviceAccountName: {}
              f:terminationGracePeriodSeconds: {}
              f:tolerations: {}
              f:volumes:
                .: {}
                k:{"name":"config-volume"}:
                  .: {}
                  f:configMap:
                    .: {}
                    f:defaultMode: {}
                    f:items: {}
                    f:name: {}
                  f:name: {}
      manager: kubeadm
      operation: Update
      time: "2021-01-15T13:15:05Z"
    - apiVersion: apps/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:labels:
            f:area: {}
        f:spec:
          f:replicas: {}
          f:template:
            f:metadata:
              f:annotations:
                .: {}
                f:kubectl.kubernetes.io/restartedAt: {}
              f:labels:
                f:foo: {}
            f:spec:
              f:topologySpreadConstraints:
                .: {}
                k:{"topologyKey":"area","whenUnsatisfiable":"DoNotSchedule"}:
                  .: {}
                  f:labelSelector:
                    .: {}
                    f:matchLabels:
                      .: {}
                      f:foo: {}
                  f:maxSkew: {}
                  f:topologyKey: {}
                  f:whenUnsatisfiable: {}
      manager: kubectl
      operation: Update
      time: "2021-01-28T16:00:21Z"
    - apiVersion: apps/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:annotations:
            .: {}
            f:deployment.kubernetes.io/revision: {}
        f:status:
          f:availableReplicas: {}
          f:conditions:
            .: {}
            k:{"type":"Available"}:
              .: {}
              f:lastTransitionTime: {}
              f:lastUpdateTime: {}
              f:message: {}
              f:reason: {}
              f:status: {}
              f:type: {}
            k:{"type":"Progressing"}:
              .: {}
              f:lastTransitionTime: {}
              f:lastUpdateTime: {}
              f:message: {}
              f:reason: {}
              f:status: {}
              f:type: {}
          f:observedGeneration: {}
          f:readyReplicas: {}
          f:replicas: {}
          f:updatedReplicas: {}
      manager: kube-controller-manager
      operation: Update
      time: "2021-01-28T16:00:39Z"
    name: coredns
    namespace: kube-system
    resourceVersion: "2520507"
    selfLink: /apis/apps/v1/namespaces/kube-system/deployments/coredns
    uid: 79d24e61-98f4-434f-b682-132625b04c49
  spec:
    progressDeadlineSeconds: 600
    replicas: 4
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        k8s-app: kube-dns
    strategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 1
      type: RollingUpdate
    template:
      metadata:
        annotations:
          kubectl.kubernetes.io/restartedAt: "2021-01-28T15:29:48Z"
        creationTimestamp: null
        labels:
          foo: bar
          k8s-app: kube-dns
      spec:
        containers:
        - args:
          - -conf
          - /etc/coredns/Corefile
          image: k8s.gcr.io/coredns:1.6.7
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 5
            httpGet:
              path: /health
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 60
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 5
          name: coredns
          ports:
          - containerPort: 53
            name: dns
            protocol: UDP
          - containerPort: 53
            name: dns-tcp
            protocol: TCP
          - containerPort: 9153
            name: metrics
            protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /ready
              port: 8181
              scheme: HTTP
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources:
            limits:
              memory: 170Mi
            requests:
              cpu: 100m
              memory: 70Mi
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              add:
              - NET_BIND_SERVICE
              drop:
              - all
            readOnlyRootFilesystem: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/coredns
            name: config-volume
            readOnly: true
        dnsPolicy: Default
        nodeSelector:
          kubernetes.io/os: linux
        priorityClassName: system-cluster-critical
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        serviceAccount: coredns
        serviceAccountName: coredns
        terminationGracePeriodSeconds: 30
        tolerations:
        - key: CriticalAddonsOnly
          operator: Exists
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
        topologySpreadConstraints:
        - labelSelector:
            matchLabels:
              foo: bar
          maxSkew: 1
          topologyKey: area
          whenUnsatisfiable: DoNotSchedule
        volumes:
        - configMap:
            defaultMode: 420
            items:
            - key: Corefile
              path: Corefile
            name: coredns
          name: config-volume
  status:
    availableReplicas: 4
    conditions:
    - lastTransitionTime: "2021-01-21T19:08:12Z"
      lastUpdateTime: "2021-01-21T19:08:12Z"
      message: Deployment has minimum availability.
      reason: MinimumReplicasAvailable
      status: "True"
      type: Available
    - lastTransitionTime: "2021-01-28T15:29:48Z"
      lastUpdateTime: "2021-01-28T16:00:39Z"
      message: ReplicaSet "coredns-84b49c57fd" has successfully progressed.
      reason: NewReplicaSetAvailable
      status: "True"
      type: Progressing
    observedGeneration: 8
    readyReplicas: 4
    replicas: 4
    updatedReplicas: 4
ラベルおよび分散トポロジの変更は次のとおりです:
  labels:
        foo: bar
        k8s-app: kube-dns
  topologySpreadConstraints:
  - labelSelector:
      matchLabels:
        foo: bar
    maxSkew: 1
    topologyKey: area
    whenUnsatisfiable: DoNotSchedule

これにより、マスター・ノードとワーカー・ノード間での均等配分が保証されます。したがって、コントロール・プレーンがリストアされると、ワーカー・ポッドは問題なく続行され、その逆も同様になります。

結果のcoredns分散のサンプル:
kubectl get pods -A -o wide | grep coredns
kube-system   coredns-84b49c57fd-4fz4g                         1/1     Running     0          166m    10.244.1.20   K8ControlPlane2   <none>           <none>
kube-system   coredns-84b49c57fd-5mrkw                         1/1     Running     0          165m    10.244.4.76   K8Worker2         <none>           <none>
kube-system   coredns-84b49c57fd-5zm88                         1/1     Running     0          165m    10.244.2.17   K8ControlPlane3   <none>           <none>
kube-system   coredns-84b49c57fd-nqlwb                         1/1     Running     0          166m    10.244.4.75   K8Worker2         <none>           <none>

WLSSchemaDataSourceの適切なサイズ変更および構成の確認

WLSSchemaDataSourceは、JMS JDBCストア、JTA JDBCストアおよびリース・サービスのFMWコンポーネントで使用するために予約されている共通のデータ・ソースです。WLSSchemaDataSourceは、クリティカルなWLSインフラストラクチャ・サービスで競合を回避し、デッドロックに備えるために使用されます。

WLSSchemaDataSourceの接続使用量を削減するには、JMS JDBCおよびTLOG JDBCストア接続キャッシュ・ポリシーを、各接続キャッシュ・ポリシー設定を使用して「デフォルト」から「最小」に変更します。バックエンド・データベース・システム内の接続数を削減する必要がある場合、キャッシュ・ポリシーを「最小」に設定することをお薦めします。キャッシュ・ポリシー「なし」を使用するとパフォーマンスが低下する可能性があるため、このポリシーは使用しないでください。JDBCストアで使用される接続についての詳細な推奨事項については、『WebLogic永続ストアの管理』で、JDBCストア接続キャッシュ・ポリシーの構成に関する項を参照してください。

WLSSchemaDataSource接続プールのデフォルト・サイズは75です(GridLinkデータ・ソースの場合はサイズが2倍になります)。FMWの各クラスタのサイズと、移行に構成する候補に応じて、このサイズは高い値にチューニングすることができます。たとえば、ストア当たりのワーカー・スレッドがデフォルト値である一般的なSOA EDGデプロイメントを考えてみます。25個を超えるJDBCストアまたはTLOG-in-DBインスタンス(あるいはその両方)が同じWebLogicサーバーにフェイルオーバーでき、「接続キャッシュ・ポリシー」が「デフォルト」から「最小」に変更されていない場合は、接続の競合問題が発生する可能性があります。このような場合は、デフォルトのWLSSchemaDataSourceプール・サイズ(最大容量)を増やす必要があります(各JMSストアは、最小で2つの接続を使用し、リースとJTAが追加されてもプールの競合が発生します)。

WebサービスのJDBC永続ストアについて

デフォルトでは、Webサービスの永続性にはWebLogic Serverデフォルト永続ストアが使用されます。このストアはWebサービスに対して高パフォーマンスの記憶域ソリューションを提供します。

デフォルトWebサービス永続ストアは、次の拡張機能で使用されます。
  • 信頼できるメッセージング

  • 接続

  • セキュア通信

  • メッセージ・バッファリング

デフォルト・ストアではなく、JDBC永続ストアをWebLogic ServerのWebサービスで使用することもできます。Webサービスの永続性の詳細は、Webサービスの永続性の管理を参照してください。

自動スケーリングの有効化

Kubernetesでは、ポッドが自動スケーリングされます。実行中のポッドが2つあり、リソースがメモリーなどのしきい値を超えると、新しいポッドが自動的に起動されます。

たとえば、使用可能なメモリーの75%に達すると、別のワーカー・ノードで新しいポッドが起動されます。

自動スケーリングを行うには、まず自動スケーリングするポッド・タイプごとにリソース要件を定義する必要があります。詳細は、関連する製品のインストールと構成の章を参照してください。

Kubernetesメトリック・サーバーのデプロイ
自動スケーリングをデプロイする前に、Kubernetesメトリック・サーバーをデプロイする必要があります。
  1. このサーバーをデプロイするには、次のコマンドを実行します:
    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  2. 次のコマンドを使用して、メトリック・サーバーが実行中であることを確認します:
    kubectl get pods -n kube-system
Kubernetes HorizontalPodAutoscalerリソースのデプロイ

次の例では、メモリーおよびCPU使用率に基づいて、WebLogicクラスタを自動的にスケーリングする方法を示しています。

OAMクラスタをoamnsネームスペースで実行している場合は、次のコマンドを使用して、クラスタ・リソース(accessdomain-oam-cluster)をターゲットにしたHorizontalPodAutoscaler (HPA)リソースを作成すると、Oracle WebLogic Serverインスタンスが、最小2つのクラスタ・メンバーから5つのクラスタ・メンバーに自動スケーリングされます。スケール・アップまたはスケール・ダウンは、平均CPU使用率が常に70%を超えている場合に行われます。

  1. 次の内容で、oam_scaler.yamlというファイルを作成します:
    #
    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: accessdomain-oam-cluster-hpa
      namespace: oamns
    spec:
      scaleTargetRef:
        apiVersion: weblogic.oracle/v1
        kind: Cluster
        name: accessdomain-oam-cluster
      behavior:
        scaleDown:
          stabilizationWindowSeconds: 60
        scaleUp:
          stabilizationWindowSeconds: 60
      minReplicas: 2
      maxReplicas: 5
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 70

    実行内容は同じでも、トリガーにメモリー消費を使用する場合、前述のファイルのメトリックは次のようになります:

    metrics:
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 70

    ノート:

    maxReplicasは、ドメインに指定されたconfiguredManagedServerCountの値を超えないようにしてください。
  2. 次の製品のscaleTargetRefを更新します:
    たとえば、Oracle Unified Directory (OUD)の場合は、次のようになります:
    scaleTargetRef:
      apiVersion: apps/v1
      kind: StatefulSet
      name: <DEPLOYMENT>

    次の表に、他の製品のname変数の値を示します:

    製品 デプロイメント
    Oracle Identity Role Intelligence (OIRI) oiri
    OIRI DING spark-history-server
    Oracle Advanced Authentication (OAA)
    OAADEPLOYMENT_NAME: 次のいずれかの値にします:
    • edg-email
    • edg-fido
    • edg-oaa
    • edg-oaa-admin-ui
    • edg-oaa-kba
    • edg-oaa-policy
    • edg-push
    • edg-risk
    • edg-risk-cc
    • edg-sms
    • edg-spui
    • edg-totp
    • edg-yotp
  3. 次のコマンドを使用して、ファイルを実行します:
    kubectl apply -f oam_scaler.yaml
  4. HPAリソースを調べて、自動スケーラのステータスと動作を確認します。
    $ kubectl get hpa -n oamns

エンタープライズ・デプロイメントのバックアップとリカバリの実行

Oracle Identity and Access Managementエンタープライズ・デプロイメントに必要なディレクトリと構成データを確実にバックアップするために、次に示すガイドラインに従うことをお薦めします。

ノート:

この項で示す静的なランタイム・アーティファクトの一部は、Network Attached Storage (NAS)からホストされています。可能な場合は、これらのボリュームをアプリケーション・サーバーではなく直接NASファイラからバックアップおよびリカバリします。

Oracle Fusion Middleware製品のバックアップとリカバリの一般情報は、『Oracle Fusion Middlewareの管理』の次の項を参照してください。

表23-1は、一般的なOracle Identity and Access Managementエンタープライズ・デプロイメントのバックアップ対象である静的アーティファクトを示しています。

表23-1 Oracle Identity and Access Managementエンタープライズ・デプロイメントでバックアップする静的アーティファクト

タイプ ホスト

データベースOracleホーム

DBHOST1およびDBHOST2

データ層

Oracle Fusion Middleware Oracleホーム

WEBHOST1およびWEBHOST2

Web層

Oracle Fusion Middleware Oracleホーム

OIMHOST1およびOIMHOST2 (またはNASファイラ)

アプリケーション層

インストール関連ファイル

WEBHOST1、WEHOST2および共有記憶域

該当なし

表23-2は、一般的なOracle Identity and Access Managementエンタープライズ・デプロイメントのバックアップ対象であるランタイム・アーティファクトを示しています。

表23-2 Oracle Identity and Access Managementエンタープライズ・デプロイメントでバックアップするランタイム・アーティファクト

タイプ ホスト

管理サーバーのドメイン・ホーム(ASERVER_HOME)

OIMHOST1 (またはNASファイラ)

アプリケーション層

アプリケーション・ホーム(APPLICATION_HOME)

OIMHOST1 (またはNASファイラ)

アプリケーション層

Oracle RACデータベース

DBHOST1およびDBHOST2

データ層

スクリプトとカスタマイズ

ホスト単位

アプリケーション層

デプロイメント・プラン・ホーム(DEPLOY_PLAN_HOME)

OIMHOST1 (またはNASファイラ)

アプリケーション層

OHS構成ディレクトリ

WEBHOST1およびWEBHOST2

Web層

コンポーネントの起動と停止

様々なコンポーネント(WebLogicコンポーネント、ドメイン全体、WebLogicクラスタなど)は、デプロイ後に起動および停止できます。

次の手順を使用して、様々なコンポーネントを起動および停止します:

Oracle Unified Directoryの起動と停止

Oracle Unified Directory (OUD)は、helmコマンドを使用して停止および起動されます。

OUDを停止するには、次のコマンドを実行します:
helm upgrade -n <OUDNS> --set replicaCount=0 <OUD_PREFIX> /home/opc/workdir/OUD/samples/kubernetes/helm/oud-ds-rs --reuse-values
たとえば:
helm upgrade -n oudns --set replicaCount=0 edg /workdir/OUD/samples/kubernetes/helm/oud-ds-rs --reuse-values
OUDを起動するには、次のコマンドを実行します:
helm upgrade -n <OUDNS> --set replicaCount=<NO_SERVERS> <OUD_PREFIX> /home/opc/workdir/OUD/samples/kubernetes/helm/oud-ds-rs --reuse-values
たとえば:
helm upgrade -n oudns --set replicaCount=2 edg /workdir/OUD/samples/kubernetes/helm/oud-ds-rs --reuse-values

OAMおよびOIGの起動と停止

WebLogicクラスタを使用してWebLogicコンポーネントを起動および停止することはできません。次の手順を使用する必要があります:

ノート:

操作を開始および停止するサンプル・スクリプトに付属しているシェル・スクリプトがあります。これらのスクリプトは、ダウンロード・ディレクトリにあります。
fmw-kubernetes/<PRODUCT>/kubernetes/domain-lifecycle/
ドメイン全体の起動と停止
次のコマンドを使用して、ドメインを起動および停止します:
startDomain.sh -d <DOMAIN_NAME> -n <NAMESPACE>
stopDomain.sh -d <DOMAIN_NAME> -n <NAMESPACE> 
WebLogicクラスタの起動と停止
WebLogicクラスタを起動および停止するには、次のコマンドを使用します:
startCluster.sh -d <DOMAIN_NAME> -n <NAMESPACE> -c <CLUSTER_NAME>
stopCluster.sh -d <DOMAIN_NAME> -n <NAMESPACE> -c <CLUSTER_NAME>
次のコマンドを使用して、クラスタのローリング再起動を実行することもできます:
./rollCluster.sh -d <DOMAIN_NAME> -n <NAMESPACE> -c <CLUSTER_NAME>
管理対象サーバーおよび管理サーバーの起動と停止
管理サーバーと管理対象サーバーを起動および停止するには、次のコマンドを使用します:
startServer.sh -d <DOMAIN_NAME> -n <NAMESPACE> -s <SERVER_NAME> -k <REPLICAS>
stopServer.sh -d <DOMAIN_NAME> -n <NAMESPACE> -s <SERVER_NAME> -k <REPLICAS>
次のコマンドを使用して、サーバーを再起動することもできます:
restartServer.sh d <DOMAIN_NAME> -n <NAMESPACE> -s <SERVER_NAME>

エンタープライズ・デプロイメントへのパッチ適用

パッチがリリースされるたびに、バンドル・パッチでOracle Identity Governance Kubernetesクラスタを更新する必要があります。

Helmベースのデプロイメントへのバンドル・パッチの適用

Oracle Unified DirectoryやOracle Unified Directory Services Managerなど、ヘルムに基づくデプロイメントの場合は、次のコマンドを使用してデプロイメントにパッチを適用できます:
helm upgrade --reuse-values --set image.tag=<NEW_IMAGE> --namespace <NAMESPACE> --wait <DEPLOYMENT> <CHART>

たとえば:

WebLogic Operatorをアップグレードするには:
helm upgrade \
  --reuse-values \
  --set image.tag=3.3.0 \
  --namespace opns \
  --wait \
  weblogic-operator \
  /workdir/samples/charts/weblogic-operator/
Oracle Unified Directoryをアップグレードするには:
helm upgrade --reuse-values --set image.tag=12.2.1.4.0-8-ol7-211013.1053 --namespace oudns edg ../workdir/OUD/samples/kubernetes/helm/oud-ds-rs

このコマンドは、完全なイメージ名ではなくタグを更新します。

ノート:

これらのコマンドは、ポッドを自動的に再起動しません。次のコマンドを使用して、ポッドをローリング方式で再起動できます:
kubectl get pod <podname> -n <namespace> -o yaml | kubectl replace --force -f -

次に進む前に、必ず各ポッドを再起動してください。

ポッドが使用しているイメージを確認するには、次のコマンドを実行します:
kubectl describe pod <podname> -n <namespace>

WebLogicドメインへのバンドル・パッチの適用

バンドル・パッチがリリースされるたびに、新しいコンテナ・イメージがリリースされます。WebLogicドメインのコンテナ・イメージをアップグレードするには、最初に各Kubernetesワーカー・ノードでイメージをステージングするか(イメージをローカルにステージングする場合)、コンテナ・レジストリを使用する必要があります。各ノードでイメージが使用可能になったら、次のステップを実行してドメインにパッチを適用します:
  • kubectl edit domainコマンドを実行します。
  • kubectl patch domainコマンドを実行します。
ヘルパー・ポッドの再起動

実行中のヘルパー・ポッドがある場合は、そのポッドを削除し、パッチ適用先のイメージを使用して再起動します。

kubectl edit domainコマンドの使用
kubectl edit domainコマンドを実行するには:
  1. 次のコマンドを実行します。
    $ kubectl edit domain <domainname> -n <namespace>

    たとえば:

    $ kubectl edit domain governancedomain -n oigns
  2. 新しいイメージを指し示すようにimageタグを更新します。
    たとえば:
    domainHomeInImage: false
    image: oracle/oig:12.2.1.4.0-new
    imagePullPolicy: IfNotPresent
  3. ファイルを保存して終了します(:wq!)。
kubectl patch domainコマンドの使用
kubectl patch domainコマンドでドメインを更新するには、次を実行します:
$ kubectl patch domain <domain> -n <namespace> --type merge  -p '{"spec":{"image":"newimage:tag"}}'
たとえば:
$ kubectl patch domain governancedomain -n oigns --type merge -p '{"spec":{"image":"oracle/oig:12.2.1.4.0-8-ol7-210525.2125"}}'
出力が次のように表示されます。
domain.weblogic.oracle/oimcluster patched

Oracle Identity Governanceへのパッチ適用

OIGドメインのパッチ適用スクリプトは、新しいOIGコンテナ・イメージで、OIG Kubernetesクラスタを自動的に更新します。このスクリプトでは、次のステップが順に実行されます:
  • 指定されたネームスペースにヘルパー・ポッドが存在するかどうかを確認します。存在する場合は、ヘルパー・ポッドが削除されます。
  • 新しいイメージにより、新しいヘルパー・ポッドが表示されます。
  • ドメイン定義のyamlファイルでNEVERに設定されたserverStartPolicyにより、管理サーバー、SOAサーバーおよびOIMサーバーが停止されます。
  • すべてのサーバーの停止を待機します(デフォルトのタイムアウトは2000秒です)。
  • ジョブ構成マップからの資格証明を含むDBプロパティのイントロスペクションが行われます。
  • ヘルパー・ポッドからDBスキーマの変更が行われます。
  • serverStartPolicyIF_NEEDEDに、イメージが新しいイメージ・タグに設定され、管理サーバー、SOAサーバーおよびOIMサーバーが起動されます。
  • すべてのサーバーの準備が整うまで待機します(デフォルトのタイムアウトは2000秒です)。

ターゲット・ポッドのカウントに達する前に構成可能なタイムアウトに達した場合、スクリプトは、ドメイン構成に応じて、ゼロ以外で終了します。また、DBスキーマおよびドメインのパッチ適用中に障害が発生した場合も、ゼロ以外で終了します。

ノート:

スクリプトの実行により、OIGデプロイメントおよびデータベース・スキーマへのパッチ適用中に停止時間が発生します。
パッチ適用前の前提条件
パッチ適用プロセスを開始する前に、次の前提条件を満たしていることを確認してください:
  • ドメインの管理に関するドキュメントを確認すること。
  • クラスタ内に実行中のOIGデプロイメントがあること。
  • 実行中のデータベースがあること。
パッチ・ドメイン・スクリプトの実行

パッチ・ドメイン・スクリプトを実行するには、スクリプトに必要な入力内容を指定します。

$ cd $WORKDIR/samples/domain-lifecycle
$ ./patch_oig_domain.sh -h
$ ./patch_oig_domain.sh -i <target_image_tag> -n <OIGNS>
たとえば:
$ cd /workdir/OIG/samples/domain-lifecycle
$ ./patch_oig_domain.sh -h
$ ./patch_oig_domain.sh -i 12.2.1.4.0-8-ol7-210721.0748 -n oigns
出力が次のように表示されます。
[INFO] Found domain name: governancedomain
[INFO] Image Registry: container-registry.oracle.com/middleware/oig_cpu
[INFO] Domain governancedomain is currently running with image: container-registry.oracle.com/middleware/oig_cpu:12.2.1.4-jdk8-ol7-220120.1359
current no of pods under governancedomain are 3
[INFO] The pod helper already exists in namespace oigns.
[INFO] Deleting pod helper
pod "helper" deleted
[INFO] Fetched Image Pull Secret: orclcred
[INFO] Creating new helper pod with image: container-registry.oracle.com/middleware/oig_cpu:12.2.1.4-jdk8-ol7-220223.2107
pod/helper created
Checking helper  Running
[INFO] Stopping Admin, SOA and OIM servers in domain governancedomain. This may take some time, monitor log /scratch/oig_post_patch/log/oim_patch_log-2022-09-06_09-43-15/stop_servers.log for details
[INFO] All servers are now stopped successfully. Proceeding with DB Schema changes
[INFO] Patching OIM schemas...
[INFO] DB schema update successful. Check log /scratch/oig_post_patch/log/oim_patch_log-2022-09-06_09-43-15/patch_oim_wls.log for details
[INFO] Starting Admin, SOA and OIM servers with new image container-registry.oracle.com/middleware/oig_cpu:12.2.1.4-jdk8-ol7-220223.2107
[INFO] Waiting for weblogic pods to be ready..This may take several minutes, do not close the window. Check log /scratch/oig_post_patch/log/oim_patch_log-2022-09-06_09-43-15/monitor_weblogic_pods.log for progress
[SUCCESS] All servers under governancedomain are now in ready state with new image: container-registry.oracle.com/middleware/oig_cpu:12.2.1.4-jdk8-ol7-220223.2107

デフォルトでは、ログは$WORKDIR/samples/domain-lifecycleにあります。スクリプトにカスタム・ログの場所を指定することもできます。

パッチ・ドメイン・スクリプトの作成に失敗した場合は、「ドメインへのパッチ適用の失敗」を参照してください。

Oracle Identity Role Intelligenceへのパッチ適用

Oracle Identity Role Intelligenceにパッチを適用するには:
  • 新しいイメージを使用して、Oracle Identity Role Intelligence (OIRI) CLIを再起動します。
  • 新しいイメージを使用して、Data Ingester CLIを再起動します。
  • 新しいCLIを使用して、OIRIデプロイメントを新しいイメージにアップグレードします。

    次のステップを開始する前に、コンテナ・レジストリに最新のコンテナ・イメージがあること、または各ワーカー・ノードでローカルに使用可能であることを確認してください。

管理CLIの起動に使用したファイルを使用して、新しいイメージでOIRI CLIを再起動します。「管理CLIの起動」を参照してください。
  1. 次のコマンドでCLIを削除します:
    kubectl delete -f oiri-cli.yaml
  2. oiri-cli.yamlファイルを編集し、イメージの値が新しいイメージ・タグになるように変更します。
    kubectl delete -f oiri-cli.yaml
  3. 次のコマンドでCLIを再作成します:
    kubectl create -f oiri-cli.yaml
    次のコマンドを使用すると、作成したCLIを確認できます:
    kubectl get pods -n <OIRINS>
DING CLIの起動に使用したファイルを使用して、新しいイメージでDING CLIを再起動します。「DING CLIの起動」を参照してください。
  1. 次のコマンドでDING CLIを削除します:
    kubectl delete -f ding-cli.yaml
  2. dingi-cli.yamlを編集し、イメージの値が新しいイメージ・タグになるように変更します。
  3. 次のコマンドでDING CLIを再作成します:
    kubectl create -f ding-cli.yaml
    次のコマンドを使用すると、作成したCLIを確認できます:
    kubectl get pods -n <DINGNS>
OIRI-CLIから次のコマンドを実行し、Oracle Identity Role Intelligenceアプリケーションにパッチを適用します:
kubectl exec -n <OIRINS> -ti oiri-cli
/updateValuesYaml.sh \
  --oiriapiimage oiri:<NEW_IMAGE_VER> \
  --oiriuiimage oiri-ui:<NEW_IMAGE_VER> \
  --dingimage oiri-ding:<NEW_IMAGE_VER>
./updateConfig.sh \
  --dingimage oiri-ding:<NEW_IMAGE_VER>
helm upgrade oiri /helm/oiri -f /app/k8s/values.yaml -n <OIRINS>

Oracle Advanced Authenticationへのパッチ適用

Oracle Advanced Authenticationにパッチを適用するには、次のステップを実行します:

  1. ファイルoaa-mgmt.yamlを編集し、次のように値を更新して、新しいイメージでOracle Advanced Authentication管理コンテナ(oaa-mgmt)を再起動します:
    
    - name: oaamgmt
    image: <OAA_MGT_REPOSITORY>:<OAAMGT_VER>
  2. コマンドを使用して、管理コンテナを再起動します:
    kubectl delete -f oaa-mgmt.yaml
    kubectl create -f oaa-mgmt.yaml
  3. 次のコマンドを使用してOAAデプロイメントをアップグレードするには、新しいoaa-mgmtコンテナを使用します:
    OAA.sh -f installOAA.properties

    次のステップを開始する前に、コンテナ・レジストリに最新のコンテナ・イメージがあること、または各ワーカー・ノードでローカルに使用可能であることを確認してください。

個別パッチの適用

個別パッチを適用する必要がある場合は、それらのパッチが適用された独自のイメージを作成する必要があります。この項では、WebLogic Image Toolを使用してOIGイメージをビルドする手順について説明します。

OIGイメージのビルドの前提条件

WebLogic Image Toolを使用してOIGイメージをビルドする前に、次の前提条件が必要です:

  • Docker 18.03.1以降の動作可能なインストール。
  • Bashバージョン4.0以上(コマンドの完全な機能を有効にするため)。
  • JAVA_HOME環境変数をJDKの場所に設定。たとえば、/u01/oracle/products/jdkです。
WebLogic Image Toolのダウンロードと設定

リリース・ページから最新バージョンのWebLogic Image Toolをダウンロードして、次のステップを実行します:

  1. リリースZIPファイルを目的の<work directory>に解凍します。例: /scratch
    $ unzip imagetool.zip -d <work directory>
    Archive:  imagetool.zip
       creating: imagetool/
       creating: imagetool/bin/
      inflating: imagetool/bin/setup.sh
      inflating: imagetool/bin/logging.properties
      inflating: imagetool/bin/imagetool.cmd
      inflating: imagetool/bin/imagetool.sh
       creating: imagetool/lib/
      inflating: imagetool/lib/imagetool_completion.sh
      inflating: imagetool/lib/imagetool.jar
      inflating: imagetool/lib/fluent-hc-4.5.6.jar
      inflating: imagetool/lib/httpclient-4.5.6.jar
      inflating: imagetool/lib/httpcore-4.4.10.jar
      inflating: imagetool/lib/commons-logging-1.2.jar
      inflating: imagetool/lib/commons-codec-1.10.jar
      inflating: imagetool/lib/httpmime-4.5.6.jar
      inflating: imagetool/lib/picocli-4.1.4.jar
      inflating: imagetool/lib/json-20180813.jar
      inflating: imagetool/lib/compiler-0.9.6.jar
    $
  2. 次のコマンドを実行して、イメージ・ツールを設定します:
    $ cd <work directory>/imagetool/bin
    $ source setup.sh
  3. 次のコマンドを実行して、WebLogic Image Toolを検証します:
    $ ./imagetool.sh --version
    imagetool:1.9.3

    コマンドラインでimagetoolと入力してから[Tab]を押すと、imagetoolで使用可能なサブコマンドが表示されます:

    $ ./imagetool.sh <TAB>
    cache   create  help    rebase  update
  4. イメージ・ツールは、実行されるたびに、wlsimgbuilder_tempという接頭辞が付いた一時的なDockerコンテキスト・ディレクトリを作成します。通常の状況では、このコンテキスト・ディレクトリは削除されます。ただし、プロセスが中断された場合や、ツールがディレクトリを削除できない場合は、手動で削除できます。デフォルトでは、イメージ・ツールは、ユーザーのホーム・ディレクトリの下にDockerコンテキスト・ディレクトリを作成します。一時コンテキストに別のディレクトリを使用する場合は、環境変数WLSIMG_BLDDIRを設定します。
    $ export WLSIMG_BLDDIR="/path/to/dir"
  5. イメージ・ツールは、ローカル・ファイル・キャッシュ・ストアを保持しています。このストアは、Java、WebLogic ServerインストーラおよびWebLogic Serverパッチが存在するローカル・ファイル・システム内の場所を参照するために使用されます。デフォルトでは、キャッシュ・ストアはユーザーの$HOME/cacheディレクトリにあります。このディレクトリでは、参照情報は.metadataファイルに格納されます。自動的にダウンロードされたすべてのパッチもこのディレクトリにあります。デフォルトのキャッシュ・ストアの場所を変更するには、環境変数WLSIMG_CACHEDIRを設定します。
    $ export WLSIMG_CACHEDIR="/path/to/cachedir"
パッケージ/インストーラおよびパッチのダウンロード

必要なインストーラをOracle Software Delivery Cloudからダウンロードし、任意のディレクトリに保存します。例: <work directory>/stage:

  • Oracle IdentityおよびAccess Management 12.2.1.4.0
  • Oracle Fusion Middleware 12c Infrastructure 12.2.1.4.0
  • Oracle SOA Suite 12.2.1.4.0
  • Oracle Service Bus 12.2.1.4.0
  • Oracle JDK

ノート:

イメージにパッチを含める必要がある場合は、My Oracle Supportからパッチをダウンロードし、<work directory>/stageにコピーします。
必要なビルド・ファイルのダウンロード

OIGイメージには、OIGドメインを作成し、WebLogic Serverを起動するための追加ファイルが必要です。

  1. FMWリポジトリから必要なファイルをダウンロードします。
    たとえば:
    $ cd <work directory>
    $ git clone https://github.com/oracle/docker-images

    これにより、<work directory>/docker-imagesの下に必要なディレクトリおよびファイルが作成されます。

  2. <work directory>/docker-images/OracleIdentityGovernance/imagetool/12.2.1.4.0/buildArgsファイルを編集し、%DOCKER_REPO%%JDK_VERSION%および%BUILDTAG%を適切に変更します。
    たとえば:
    create
    --jdkVersion=8u261
    --type oig
    --version=12.2.1.4.0
    --tag=oig-with-patch:12.2.1.4.0
    --pull
    --installerResponseFile /scratch/docker-images/OracleFMWInfrastructure/dockerfiles/12.2.1.4.0/install.file,/scratch/docker-images/OracleSOASuite/dockerfiles/12.2.1.4.0/install/soasuite.response,/scratch/docker-images/OracleSOASuite/dockerfiles/12.2.1.4.0/install/osb.response,/scratch/docker-images/OracleIdentityGovernance/dockerfiles/12.2.1.4.0/idmqs.response
    --additionalBuildCommands /scratch/docker-images/OracleIdentityGovernance/imagetool/12.2.1.4.0/additionalBuildCmds.txt
    --additionalBuildFiles /scratch/docker-images/OracleIdentityGovernance/dockerfiles/12.2.1.4.0/container-scripts
イメージの作成

imagetool/binディレクトリに移動し、次のコマンドを実行します。次の例では、適切なファイルが存在するディレクトリを<work directory>/stageに置き換えます。

  1. ImagetoolキャッシュにJDKパッケージを追加します。
    $ imagetool cache add Installer --type JD --version 8u241 --path <work directory>/stage/jdk-8u241-linux-x64.tar.gz
  2. Imagetoolキャッシュにインストーラを追加します。

    イメージにパッチを含める場合は、ダウンロードしたパッチをImagetoolキャッシュに追加します。

    $ imagetool cache add Installer --type few --version 12.2.1.4.0 --path <work directory>/stage/fmw_12.2.1.4.0_infrastructure.jar
    $ imagetool cache add Installer --type spa --version 12.2.1.4.0 --path <work directory>/stage/fmw_12.2.1.4.0_soa.jar
    $ imagetool cache add Installer --type sob --version 12.2.1.4.0 --path <work directory>/stage/fmw_12.2.1.4.0_osb.jar
    $ imagetool cache add Installer --type dim --version 12.2.1.4.0 --path <work directory>/stage/fmw_12.2.1.4.0_idm.jar
  3. Imagetoolキャッシュにパッチを追加します。
    $ imagetool cache add Entry --key 28186730_13.9.4.2.2 --path <work directory>/stage/p28186730_139422_Generic.zip
    $ imagetool cache add Entry --key 31537019_12.2.1.4.0 --path <work directory>/stage/p31537019_122140_Generic.zip
    $ imagetool cache add Entry --key 31544353_12.2.1.4.0 --path <work directory>/stage/p31544353_122140_Linux-x86-64.zip
    $ imagetool cache add Entry --key 31470730_12.2.1.4.0 --path <work directory>/stage/p31470730_122140_Generic.zip
    $ imagetool cache add Entry --key 31488215_12.2.1.4.0 --path <work directory>/stage/p31488215_122140_Generic.zip
    $ imagetool cache add Entry --key 31403376_12.2.1.4.0 --path <work directory>/stage/p31403376_122140_Generic.zip
    $ imagetool cache add Entry --key 31396632_12.2.1.4.0 --path <work directory>/stage/p31396632_122140_Generic.zip
    $ imagetool cache add Entry --key 31287540_12.2.1.4.0 --path <work directory>/stage/p31287540_122140_Generic.zip
    $ imagetool cache add Entry --key 30779352_12.2.1.4.0 --path <work directory>/stage/p30779352_122140_Generic.zip
    $ imagetool cache add Entry --key 30680769_12.2.1.4.0 --path <work directory>/stage/p30680769_122140_Generic.zip
    $ imagetool cache add Entry --key 31537918_12.2.1.4.0 --path <work directory>/stage/p31537918_122140_Generic.zip
    $ imagetool cache add Entry --key 31497461_12.2.1.4.20.06.24 --path <work directory>/stage/p31497461_12214200624_Generic.zip
  4. buildingsファイルにパッチを追加します。

    buildingsファイルを編集し、パッチを追加します:

    --patches 31537019_12.2.1.4.0,31544353_12.2.1.4.0,31470730_12.2.1.4.0,31488215_12.2.1.4.0,31403376_12.2.1.4.0,31396632_12.2.1.4.0,31287540_12.2.1.4.0,30779352_12.2.1.4.0,30680769_12.2.1.4.0,31537918_12.2.1.4.0,31497461_12.2.1.4.20.06.24
    --numberplate=28186730_13.9.4.2.2

    buildingsファイルのサンプルは次のようになります:

    create
    --diversion=8u261
    --type pig
    --version=12.2.1.4.0
    --tag=pig-with-patch:12.2.1.4.0
    --pull
    --irresponsibility /scratch/docker-images/Infrastructure/docker files/12.2.1.4.0/installable,/scratch/docker-images/Ecclesiastes/docker files/12.2.1.4.0/install/presupposition,/scratch/docker-images/Ecclesiastes/docker files/12.2.1.4.0/install/response,/scratch/docker-images/Intergovernmental/docker files/12.2.1.4.0/response
    --discombobulation /scratch/docker-images/Intergovernmental/imagetool/12.2.1.4.0/additionalBuildCmds.txt
    --traditionalists /scratch/docker-images/Intergovernmental/docker files/12.2.1.4.0/container-scripts
    --patches 31537019_12.2.1.4.0,31544353_12.2.1.4.0,31470730_12.2.1.4.0,31488215_12.2.1.4.0,31403376_12.2.1.4.0,31396632_12.2.1.4.0,31287540_12.2.1.4.0,30779352_12.2.1.4.0,30680769_12.2.1.4.0,31537918_12.2.1.4.0,31497461_12.2.1.4.20.06.24
    --numberplate=28186730_13.9.4.2.2
  5. OIGイメージを作成します。

    たとえば:

    $ CD <work directory>/imagetool/bin
    $ ./imagetool.sh @<work directory>/docker-images/Intergovernmental/imagetool/12.2.1.4.0/buildings
  6. イメージを表示します。

    docker imagesコマンドを実行して、新しいOIGイメージがリポジトリにロードされるようにします:

    $ docker images
    REPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE
    pig-with-patch                            12.2.1.4.0          d4cccfcd67c4        3 minutes ago      5.01GB
    coralline                               7-slim              153f8d73287e        2 weeks ago         131MB
サンプルDockerfileの生成

imagetoolで作成されたサンプルdockerfileを確認するには、--dryRunオプションを指定してimagetoolコマンドを使用します:

./imagetool.sh @<work directory/build/buildArgs --dryRun

バックアップおよびリストア操作の実行

クラスタに問題がある場合でも使用できるように、バックアップをKubernetesクラスタの外部に保持します。

Kubernetesデプロイメントは、次の4つの部分で構成されます:

Kubernetesオブジェクト

Kubernetesオブジェクトをバックアップおよびリストアする最も簡単な方法は、Kubernetesスナップショット・ツールを使用することです。このツールは、すべてのKubernetesオブジェクトを一連のファイルとしてネームスペースにアンロードし、必要に応じて別のクラスタにロードできます。

Kubernetesスナップショット・ツールを使用する手順は、「Kubernetesオブジェクトのバック・アップとリストア」を参照してください。

コンテナ・イメージ

コンテナ・イメージがコンテナ・レジストリに格納されている場合、使用するクラスタは、必要なイメージに簡単にアクセスして使用できます。ただし、イメージを新しいKubernetesワーカー・ノードにリストアする場合は、必要なKubernetesイメージがそのワーカー・ノードで使用可能であることを確認してください。

永続ボリューム

永続ボリュームは基本的にディスク上のディレクトリであり、通常はNFSストレージに格納されます。永続ボリュームのバックアップを取得するには、まず、ストレージにアクセスできるホストにディレクトリをマウントしてから、優先バックアップ・ツールを使用してバックアップします。ハードウェア・スナップショット、tar、rsyncの使用など、データのバックアップにはいくつかの方法があります。使用することを選択したバックアップ・ツールの使用方法については、関連するドキュメントを参照してください。

データベース

Oracleデータベースは、データ保護(「バックアップ/リストア・ジョブの作成」を参照)であるか、ディスク、テープまたはバックアップ・アプライアンスに対して実行されるデータベース・バックアップのいずれかになります。Oracleでは、データベース・バックアップにRMANを使用することをお薦めします。RMANコマンドの詳細は、Oracle Databaseリリース21cのドキュメント『バックアップおよびリカバリ・リファレンス』を参照してください。

Kubernetesワーカー・ノードでのメンテナンスの実行

メンテナンス/パッチ適用のためにKubernetesワーカー・ノードを停止する必要がある場合、または単にリフレッシュする必要がある場合は、まずそのワーカー・ノードで実行中のKubernetesサービスを正常に移動する必要があります。

実行中のサービスを移動するには、次のコマンドを使用し、ワーカー・ノードを停止する前に完了するようにします:
kubectl drain <node name>
ノードでポッドの実行を再度開始する準備ができたら、メンテナンスの終了後に次のコマンドを使用します:
kubectl uncordon <node name>

ドレインの詳細は、Safely Drain a Nodeを参照してください。

サーバー・ポッドの有効性プローブの調整

有効性プローブは、デフォルトでは、45秒ごとに有効性をチェックするよう構成されています。停止している場合は、この構成が原因で、使用できなくなっているバックエンドのポッドにリクエストがルーティングされることがあります。ハード・ノードの障害時にポッドが迅速に停止とマークされるよう、有効性プローブの値を調整することをお薦めします。

プローブをより頻繁に実行するよう構成するには、ドメインを編集して、serverPods.livenessProbeの値を次のように変更します:

livenessProbe:
   failureThreshold: 1
   initialDelaySeconds: 30
   periodSeconds: 5
   successThreshold: 1
   timeoutSeconds: 3
たとえば、OAMサーバーの有効性プローブを設定するために、domain.yamlファイルには次のようなエントリがあります:
  - clusterName: oam_cluster
    serverPod:
     livenessProbe:
        failureThreshold: 1
        initialDelaySeconds: 30
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 3

クロス・コンポーネント・ワイヤリングについての考慮事項

クロス・コンポーネント・ワイヤリング(CCW)を利用すると、FMWコンポーネントは、特定のAPIを使用することによってWLSドメインで使用可能なサービスの一部をパブリッシュし、それにバインドすることができます。

CCWがワイヤリング情報のバインドを実行するのは、構成ウィザードのセッション中のみ、またはWLSドメイン管理者によって手動で強制実行されたときだけです。クラスタにWeblogic Serverを追加するとき(静的または動的クラスタでのスケール・アウトおよびスケール・アップ操作で)、新しいサーバーはサービスを公開しますが、そのサービスを使用するクライアントのすべてが自動的に更新されて、新しいサービス・プロバイダにバインドされるわけではありません。CCW表にすでにバインドされている既存のサーバーは、クラスタに新しいメンバーが追加されたことを自動的に認識しないため、更新は実行されません。これは、ESSおよびWSMPMがSOAにサービスを提供する場合と同じです(両者はサービスをサービス表に動的に公開しますが、SOAサーバーはバインドが再び強制されないかぎり、これらの更新を認識しません)。

ノート:

OHS構成によって使用されるのと似た、追加のクロス・コンポーネント・ワイヤリング情報があります。これはプロキシ・プラグインの動作のため、このワイヤリングによって影響されません。詳細は、次の項を参照してください。

WSMPMおよびESS用のクロス・コンポーネント・ワイヤリング

クロス・コンポーネント・ワイヤリングのt3情報は、JNDI呼出しURLで使用されるサーバーのリスト取得する際に、WSMPMとESSによって使用されます。

CCWのt3情報は、動的更新が欠落していてもその影響を制限します。呼出しが完了すると、JNDI URLを使用してRMIスタブとクラスタのメンバーのリストが取得されます。JNDI URLが、サーバーのリスト全体を含んでいる必要はありません。RMIスタブには常にクラスタ内のすべてのサーバーのリストが含まれており、それら全体でのリクエストのロード・バランスに使用されます。そのため、バインドなしに、クラスタに追加されたサーバーが(バインドURLに存在していなくても)使用されます。唯一の欠点は、クラスタの拡張または縮小時にシステムを動作させ続けるために、最初のCCWバインドで指定される元のサーバーのうち少なくとも1つが稼働している必要があるという点です。この問題を回避するために、メンバーの静的リストを使用するかわりにサービス表でクラスタ名構文を使用できます。

クラスタ名構文は、次のとおりです。
cluster:t3://cluster_name

cluster:t3://cluster_nameを使用すると、CCW呼出しによって常にクラスタ内のすべてのメンバーのリストがフェッチされるため、初期サーバーに依存することなく、そのとき存在するすべてのメンバーが対象になります。

WSMPMでのcluster_name構文の使用

この手順では、WSMPMでt3構文を使用することにより、WSMPMクラスタでサーバーを追加または削除する場合にCCW情報を再更新することを不要にします。

CCW t3情報は、デフォルトでクラスタ構文を使用するように構成されています。クラスタ構文が使用されていることを確認し、必要があれば編集するだけです。

  1. 管理者のアカウントを使用してFusion Middleware Controlにサインインします。たとえば、weblogic_iamです。
  2. 「WebLogicドメイン」ドロップダウン・メニューから、「クロス・コンポーネント・ワイヤリング」-「サービス表」を選択します。
  3. 「OWSMポリシー・マネージャ」のurn:oracle:fmw.owsm-pm:t3行を選択します。
  4. クラスタ構文が使用されていることを確認します。そうでない場合、「編集」をクリックして、クラスタ名構文を使用してt3およびt3sの値を更新します。
  5. 「OK」をクリックします。
  6. 「WebLogicドメイン」ドロップダウン・メニューから、「クロス・コンポーネント・ワイヤリング」-「コンポーネント」を選択します。
  7. 「OWSMエージェント」を選択します。
  8. 「クライアント構成」セクションで、owsm-pm-connection-t3行を選択して「バインド」をクリックします。
  9. 「OK」をクリックします。

ノート:

ワイヤリング表は、クラスタのスケール・アウトまたはスケール・アップのたびに更新されますが、手動の再バインドを使用しないかぎり、クラスタ構文を置き換えはしません。したがって、クラスタのライフサイクルのあらゆる更新(追加、削除)の影響を受けません。