Manualになっている場合のレプリカ・セット障害のシミュレート

TimesTenScaleoutオブジェクトの.spec.ttspec.replicaSetRecoveryデータ項目の値がManualである場合の、レプリカ・セット全体の障害シミュレートしましょう。

ノート:

この例は、デモンストレーションのためにのみ用意されています。この例を本番環境で試そうとしないでください。
TimesTenScaleoutオブジェクト定義を見てみましょう。
cat samplescaleout2.yaml
apiVersion: timesten.oracle.com/v1
kind: TimesTenScaleout
metadata:
  name: samplescaleout2
spec:
  ttspec:
    storageClassName: oci-bv
    storageSize: 250G
    image: container-registry.oracle.com/timesten/timesten:22.1.1.19.0
    imagePullSecret: sekret
    replicaSetRecovery: Manual
    dbConfigMap:
    - samplescaleout2
    k: 2
    nReplicaSets: 3
    nMgmt: 1
    nZookeeper: 3

オブジェクトの.spec.ttspec.replicaSetRecoveryデータ項目の値がManualであることに注目してください。これは、レプリカ・セット全体の障害が発生するとオペレータによってこのTimesTenScaleoutオブジェクトの高レベル状態がManualInterventionRequiredに設定されることを示しています。

このオブジェクトでレプリカ・セット全体の障害をシミュレートしましょう。始める前に、このオブジェクトの状態を簡単に確認しましょう。
kubectl get tts samplescaleout2
NAME              OVERALL   MGMT     CREATE    LOAD              OPEN   AGE
samplescaleout2   Normal    Normal   created   loaded-complete   open   11m

高レベル状態はNormal、管理の状態はNormal、データベースの状態はcreated,loaded-complete,openであることに注目してください。

この例では、3つのレプリカ・セットがあります。
kubectl get pods
NAME                                 READY   STATUS    RESTARTS   AGE
samplescaleout2-data-1-0             2/2     Running   0          12m
samplescaleout2-data-1-1             2/2     Running   0          12m
samplescaleout2-data-1-2             2/2     Running   0          12m
samplescaleout2-data-2-0             2/2     Running   0          12m
samplescaleout2-data-2-1             2/2     Running   0          12m
samplescaleout2-data-2-2             2/2     Running   0          12m
samplescaleout2-mgmt-0               2/2     Running   0          13m
samplescaleout2-zk-0                 1/1     Running   0          13m
samplescaleout2-zk-1                 1/1     Running   0          12m
samplescaleout2-zk-2                 1/1     Running   0          11m
timesten-operator-7677964df9-sp2zp   1/1     Running   0          7d6h

それらのレプリカ・セットのうちの1つに属しているsamplescaleout2-data-1-0ポッドとsamplescaleout2-data-2-0ポッドを削除しましょう。

  1. そのポッドを削除します。
    kubectl delete pod samplescaleout2-data-1-0;kubectl delete pod samplescaleout2-data-2-0
    pod "samplescaleout2-data-1-0" deleted
    pod "samplescaleout2-data-2-0" deleted
  2. kubectl getコマンドを使用して状態の遷移を確認します。
    kubectl get tts samplescaleout2
    NAME              OVERALL           MGMT     CREATE    LOAD                OPEN   AGE
    samplescaleout2   DatabasePartial   Normal   created   loaded-incomplete   open   18m

    高レベル状態は、データベースは稼働中であるが一部のデータを使用できないことを示す、DatabasePartialになっています。1つ以上のレプリカ・セットに全体的な障害が発生しました。データベースのloaded状態はloaded-incompleteであり、これは、ロードが正常に終了した要素がないレプリカ・セットが1つ以上あることを示しています。

    kubectl get tts samplescaleout2
    NAME              OVERALL                      MGMT     CREATE    LOAD                 OPEN   AGE
    samplescaleout2   ManualInterventionRequired   Normal   created   loading-incomplete   open   20m

    このオブジェクトの高レベル状態はManualInterventionRequiredに遷移しています。オペレータによってそれ以上の処理が行われてそのオブジェクトが修復されることはありません。データベースのloaded状態はloading-incompleteのままになっています。前述のように、.spec.ttspec.reexamineデータ項目を設定すると再びそのオブジェクトがオペレータの管理対象になります。詳細は、「reexamineデータ項目の設定」を参照してください。

レプリカ・セット全体の障害が発生しました。TimesTen Scaleoutオブジェクトの.spec.ttspec.replicaSetRecoveryデータ項目の値がManualであるため、オペレータによってこのオブジェクトがManualInterventionRequired状態に設定されます。この障害の修復方法の詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』ダウンしたレプリカ・セットからのリカバリを参照してください。次に、このドキュメント内の「reexamineデータ項目の設定」を参照して、オペレータに制御を戻します。