アクティブ・スタンバイ・ペアのデプロイメントの進捗状況の監視

様々なkubectlコマンドを使用して、アクティブ・スタンバイ・ペアのデプロイメントの進行状況を監視できます。デプロイメントが完了して成功したら、データベースに接続して操作を実行し、正常に動作していることを確認できます。

TimesTenClassicオブジェクトの状態の監視

kubectl getコマンドとkubectl describeコマンドを使用して、プロビジョニング時にアクティブ・スタンバイ・ペアの進捗状況を監視します。

ノート:

kubectl get timestenclassicコマンドとkubectl describe timestenclassicの場合、かわりにkubectl get ttckubectl describe ttcをそれぞれ指定できます。timestenclassicttcは、これらのコマンドで使用される場合同義であり、同じ結果を返します。この章の最初のkubectl getおよび最初のkubectl describeの例では、timestenclassicを使用しています。このマニュアルの残りの例では、簡略化のためにttcを使用しています。

  1. kubectl getコマンドを使用して、STATEフィールドを確認します。値がInitializingであることを確認します。アクティブ・スタンバイ・ペアのプロビジョニングが開始しましたが、まだ完了していません。
    % kubectl get timestenclassic sample
    NAME     STATE          ACTIVE   AGE
    sample   Initializing   None     11s
    
  2. kubectl describeコマンドを使用して、初期プロビジョニングを詳細に表示します。
    % kubectl describe timestenclassic sample
    Name:         sample
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
    API Version:  timesten.oracle.com/v1
    Kind:         TimesTenClassic
    Metadata:
      Creation Timestamp:  2023-04-30T15:35:12Z
      Generation:          1
      Resource Version:    20231755
      Self Link: 
    /apis/timesten.oracle.com/v1/namespaces/mynamespace/timestenclassics/sample
      UID:                 517a8646-a354-11ea-a9fb-0a580aed5e4a
    Spec:
      Ttspec:
        Db Config Map:
          sample
        Image:               container-registry.oracle.com/timesten/timesten:22.1.1.19.0
        Image Pull Policy:   Always
        Image Pull Secret:   sekret
        Storage Class Name:  oci-bv
        Storage Size:        250Gi
    Status:
      Active Pods:       None
      High Level State:  Initializing
      Last Event:        3
      Pod Status:
        Cache Status:
          Cache Agent:        Down
          Cache UID Pwd Set:  false
          N Cache Groups:     0
        Db Status:
          Db:            Unknown
          Db Id:         0
          Db Updatable:  Unknown
        Initialized:     true
        Pod Status:
          Agent:                Down
          Last Time Reachable:  0
          Pod IP:
          Pod Phase:            Pending
        Replication Status:
          Last Time Rep State Changed:  0
          Rep Agent:                    Down
          Rep Peer P State:             Unknown
          Rep Scheme:                   Unknown
          Rep State:                    Unknown
        Times Ten Status:
          Daemon:          Down
          Instance:        Unknown
          Release:         Unknown
        Admin User File:   false
        Cache User File:   false
        Cg File:           false
        High Level State:  Down
        Intended State:    Active
        Name:              sample-0
        Schema File:       false
        Cache Status:
          Cache Agent:        Down
          Cache UID Pwd Set:  false
          N Cache Groups:     0
        Db Status:
          Db:            Unknown
          Db Id:         0
          Db Updatable:  Unknown
        Initialized:     true
        Pod Status:
          Agent:                Down
          Last Time Reachable:  0
          Pod IP:
          Pod Phase:            Pending
        Replication Status:
          Last Time Rep State Changed:  0
          Rep Agent:                    Down
          Rep Peer P State:             Unknown
          Rep Scheme:                   Unknown
          Rep State:                    Unknown
        Times Ten Status:
          Daemon:            Down
          Instance:          Unknown
          Release:           Unknown
        Admin User File:     false
        Cache User File:     false
        Cg File:             false
        High Level State:    Unknown
        Intended State:      Standby
        Name:                sample-1
        Schema File:         false
      Rep Create Statement:  create active standby pair "sample" on 
     "sample-0.sample.mynamespace.svc.cluster.local", "sample" on 
     "sample-1.sample.mynamespace.svc.cluster.local" NO RETURN store "sample" on 
     "sample-0.sample.mynamespace.svc.cluster.local" PORT 4444 FAILTHRESHOLD 0 
     store "sample" on "sample-1.sample.mynamespace.svc.cluster.local" PORT 4444 FAILTHRESHOLD  0
      Rep Port:              4444
      Status Version:        1.0
    Events:
      Type  Reason  Age   From       Message
      ----  ------  ----  ----       -------
      -     Create  50s   ttclassic  Secret tt517a8646-a354-11ea-a9fb-0a580aed5e4a created
      -     Create  50s   ttclassic  Service sample created
      -     Create  50s   ttclassic  StatefulSet sample created
    
  3. kubectl getコマンドを再度使用して、STATEフィールドの値が変更されているかどうかを確認します。この例では、この値はNormalで、データベースのアクティブ・スタンバイ・ペアがプロビジョニングされ、プロセスが完了したことを示しています。
    % kubectl get ttc sample
    NAME     STATE    ACTIVE     AGE
    sample   Normal   sample-0   3m5s
    
  4. kubectl describeコマンドを再度使用して、アクティブ・スタンバイ・ペアのプロビジョニングを詳細に表示します。

    ノート: この例では、now Normal行が独立した行に表示されています。実際の出力では、この行は独立した行として表示されるのではなく、前のStateChangeの行の最後に表示されます。

    % kubectl describe ttc sample
    Name:         sample
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
    API Version:  timesten.oracle.com/v1
    Kind:         TimesTenClassic
    Metadata:
      Creation Timestamp:  2023-04-30T15:35:12Z
      Generation:          1
      Resource Version:    20232668
      Self Link:
    /apis/timesten.oracle.com/v1/namespaces/mynamespace/timestenclassics/sample 
      UID:                 517a8646-a354-11ea-a9fb-0a580aed5e4a
    Spec:
      Ttspec:
        Db Config Map:
          sample
        Image:               container-registry.oracle.com/timesten/timesten:22.1.1.19.0
        Image Pull Policy:   Always
        Image Pull Secret:   sekret
        Storage Class Name:  oci-bv
        Storage Size:        250Gi
    Status:
      Active Pods:       sample-0
      High Level State:  Normal
      Last Event:        35
      Pod Status:
        Cache Status:
          Cache Agent:        Not Running
          Cache UID Pwd Set:  true
          N Cache Groups:     0
        Db Status:
          Db:            Loaded
          Db Id:         26
          Db Updatable:  Yes
        Initialized:     true
        Pod Status:
          Agent:                Up
          Last Time Reachable:  1590939597
          Pod IP:               192.0.2.1
          Pod Phase:            Running
        Replication Status:
          Last Time Rep State Changed:  0
          Rep Agent:                    Running
          Rep Peer P State:             start
          Rep Scheme:                   Exists
          Rep State:                    ACTIVE
        Times Ten Status:
          Daemon:          Up
          Instance:        Exists
          Release:         22.1.1.19.0
        Admin User File:   true
        Cache User File:   false
        Cg File:           false
        High Level State:  Healthy
        Intended State:    Active
        Name:              sample-0
        Schema File:       true
        Cache Status:
          Cache Agent:        Not Running
          Cache UID Pwd Set:  true
          N Cache Groups:     0
        Db Status:
          Db:            Loaded
          Db Id:         26
          Db Updatable:  No
        Initialized:     true
        Pod Status:
          Agent:                Up
          Last Time Reachable:  1590939597
          Pod IP:               192.0.2.2
          Pod Phase:            Running
        Replication Status:
          Last Time Rep State Changed:  1590939496
          Rep Agent:                    Running
          Rep Peer P State:             start
          Rep Scheme:                   Exists
          Rep State:                    STANDBY
        Times Ten Status:
          Daemon:            Up
          Instance:          Exists
          Release:           22.1.1.19.0
        Admin User File:     true
        Cache User File:     false
        Cg File:             false
        High Level State:    Healthy
        Intended State:      Standby
        Name:                sample-1
        Schema File:         true
      Rep Create Statement:  create active standby pair "sample" on 
    "sample-0.sample.mynamespace.svc.cluster.local", "sample" on 
    "sample-1.sample.mynamespace.svc.cluster.local" NO RETURN store "sample" on 
    "sample-0.sample.mynamespace.svc.cluster.local" PORT 4444 FAILTHRESHOLD 0 
    store "sample" on "sample-1.sample.mynamespace.svc.cluster.local" PORT 4444 FAILTHRESHOLD 0
      Rep Port:              4444
      Status Version:        1.0
    Events:
      Type  Reason       Age    From       Message
      ----  ------       ----   ----       -------
      -     Create       4m43s  ttclassic  Secret tt517a8646-a354-11ea-a9fb-0a580aed5e4a created
      -     Create       4m43s  ttclassic  Service sample created
      -     Create       4m43s  ttclassic  StatefulSet sample created
      -     StateChange  3m47s  ttclassic  Pod sample-0 Daemon Unknown
      -     StateChange  3m47s  ttclassic  Pod sample-0 CacheAgent Unknown
      -     StateChange  3m47s  ttclassic  Pod sample-0 RepAgent Unknown
      -     StateChange  3m47s  ttclassic  Pod sample-1 Daemon Unknown
      -     StateChange  3m47s  ttclassic  Pod sample-1 CacheAgent Unknown
      -     StateChange  3m47s  ttclassic  Pod sample-1 RepAgent Unknown
      -     StateChange  3m26s  ttclassic  Pod sample-0 Agent Up
      -     StateChange  3m26s  ttclassic  Pod sample-0 Release 22.1.1.19.0
      -     StateChange  3m26s  ttclassic  Pod sample-0 Daemon Down
      -     StateChange  3m26s  ttclassic  Pod sample-1 Agent Up
      -     StateChange  3m26s  ttclassic  Pod sample-1 Release 22.1.1.19.0
      -     StateChange  3m26s  ttclassic  Pod sample-1 Daemon Down
      -     StateChange  3m26s  ttclassic  Pod sample-0 Daemon Up
      -     StateChange  3m25s  ttclassic  Pod sample-1 Daemon Up
      -     StateChange  2m13s  ttclassic  Pod sample-0 RepState IDLE
      -     StateChange  2m13s  ttclassic  Pod sample-0 Database Updatable
      -     StateChange  2m13s  ttclassic  Pod sample-0 CacheAgent Not Running
      -     StateChange  2m13s  ttclassic  Pod sample-0 RepAgent Not Running
      -     StateChange  2m13s  ttclassic  Pod sample-0 RepScheme None
      -     StateChange  2m13s  ttclassic  Pod sample-0 Database Loaded
      -     StateChange  2m11s  ttclassic  Pod sample-0 RepAgent Running
      -     StateChange  2m10s  ttclassic  Pod sample-0 RepScheme Exists
      -     StateChange  2m10s  ttclassic  Pod sample-0 RepState ACTIVE
      -     StateChange  113s   ttclassic  Pod sample-1 Database Loaded
      -     StateChange  113s   ttclassic  Pod sample-1 Database Not Updatable
      -     StateChange  113s   ttclassic  Pod sample-1 CacheAgent Not Running
      -     StateChange  113s   ttclassic  Pod sample-1 RepAgent Not Running
      -     StateChange  113s   ttclassic  Pod sample-1 RepScheme Exists
      -     StateChange  113s   ttclassic  Pod sample-1 RepState IDLE
      -     StateChange  106s   ttclassic  Pod sample-1 RepAgent Running
      -     StateChange  101s   ttclassic  Pod sample-1 RepState STANDBY
      -     StateChange  101s   ttclassic  TimesTenClassic was Initializing, now Normal
    

TimesTenデータベースのアクティブ・スタンバイ・ペアが(Normalで示されているように)正常にデプロイされました。アクティブ・スタンバイ・ペアとして構成された2つのTimesTenデータベースがあります。1つのデータベースがアクティブです。(この例では、Rep State ACTIVEで示されているように、sample-0がアクティブ・データベースです。)もう1つのデータベースはスタンバイです。(この例では、Rep State STANDBYで示されているように、sample-1はスタンバイ・データベースです。)アクティブ・データベースは、変更および問合せできます。アクティブ・データベースで行われた変更は、スタンバイ・データベースにレプリケートされます。アクティブ・データベースで障害が発生した場合、オペレータは自動的にスタンバイ・データベースをアクティブに昇格させます。以前のアクティブ・データベースは修復または置換され、スタンバイになります。

基礎となるオブジェクトが存在するかどうかの確認

オペレータは、その他の基礎となるオブジェクトを自動的に作成します。これらのオブジェクトが作成されていることを確認します。

  1. StatefulSet:
    % kubectl get statefulset sample
    NAME     READY   AGE
    sample   2/2     8m21s
    
  2. Service:
    % kubectl get service sample
    NAME     TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
    sample   ClusterIP   None         <none>        6625/TCP   9m28s
    
  3. Pods:
    % kubectl get pods
    NAME                                        READY   STATUS    RESTARTS   AGE
    sample-0                                    2/2     Running   0          10m
    sample-1                                    2/2     Running   0          10m
    timesten-operator-5d7dcc7948-8mnz4          1/1     Running   0          11h
    
  4. PersistentVolumeClaims (PVC):
    % kubectl get pvc
    NAME                         STATUS   VOLUME 
    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    tt-persistent-sample-0       Bound
    ocid1.volume.oc1.phx.abyhqljrbxcgzyixa4pmmcwiqxgqclc7gxvdnoty367w2qn26tij6kfpx
    6qq
    250Gi       RWO            oci-bv         10m
    tt-persistent-sample-1       Bound
    ocid1.volume.oc1.phx.abyhqljtt4qxxoj5jqiskriskh66hakaw326rbza4uigmuaezdnu53qhh
    oaa
    250Gi       RWO            oci-bv         10m
    

アクティブ・データベースへの接続の確認

kubectl execコマンドを実行して、ポッドのシェルを起動し、それらのポッドで実行されているTimesTenを制御できます。デフォルトでは、TimesTenは、ポッドでtimestenユーザーとして実行されます。ポッドにシェルを設定したら、sampleデータベースに接続できること、およびメタデータ・ファイルの情報が正しいことを確認します。オプションで、データベースまたは他の操作に対して問合せを実行できます。

  1. ポッドにシェルを設定します。
    % kubectl exec -it sample-0 -c tt -- /bin/bash
    
  2. sampleデータベースに接続します。メタデータ・ファイルの情報がデータベースに正しく存在していることを確認します。たとえば、sampleuserユーザーとしてデータベースへの接続を試みます。200PermSize値が正しいことを確認します。sampleuser.emp表が存在することを確認します。
     % ttIsql sample
     
    Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
     
     
     
    connect "DSN=sample";
    Connection successful:
    DSN=sample;UID=timesten;DataStore=/tt/home/timesten/datastore/sample;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=200;
    DDLReplicationLevel=3;
    (Default setting AutoCommit=1)
    
    Command> connect adding "uid=sampleuser;pwd=samplepw" as sampleuser;
    Connection successful:
    DSN=sample;UID=sampleuser;DataStore=/tt/home/timesten/datastore/sample;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=200;
    DDLReplicationLevel=3;
    (Default setting AutoCommit=1)
    sampleuser: Command> tables;
      SAMPLEUSER.EMP
    1 table found.