その他の構成オプション

この項では、その他の構成オプションについて説明します。これらは環境のオプションの構成です。

永続記憶域

TimesTenClassicオブジェクトを作成すると、オペレータはポッドごとに1つまたは2つの永続ボリューム要求(PVC)を自動的に作成します。これらのPVCにより、永続ボリューム(PV)がKubernetesによって割り当てられ、TimesTenポッドにアタッチされます。TimesTenは、PVを使用してTimesTenインスタンスおよびTimesTenデータベースを保持します。2つのPVCを指定した場合、1つのPVにインスタンスおよびチェックポイント・ファイルが保持され、もう1つのPVにはトランザクション・ログ・ファイルが保持されます。

TimesTenScaleoutオブジェクトを作成した場合、同じメカニズムを使用して、データ・インスタンス、管理インスタンスおよびZooKeeperインスタンスの永続記憶域がプロビジョニングされます。
  • データ・インスタンスの場合: オペレータは、ポッドごとに1つまたは2つのPVCを作成します。TimesTenは、PVを使用してTimesTenインスタンスおよびTimesTenデータベースを保持します。2つのPVCを指定した場合、1つのPVにインスタンスおよびチェックポイント・ファイルが保持され、もう1つのPVにはトランザクション・ログ・ファイルが保持されます。

  • 管理インスタンスの場合: オペレータは、管理インスタンスを含むポッド用に1つのPVCを作成します。PVには、TimesTen管理インスタンスおよびグリッド・データベースが保持されます。

  • ZooKeeperインスタンスの場合: オペレータは、ZooKeeperインスタンスを実行するポッドごとに1つのPVCを作成します。PVにはZooKeeperの永続データが保持されます。

TimesTenClassicオブジェクトの作成時には、storageClassNameを指定する必要があり、storageSizeを指定できます。これらの属性によって、永続ボリュームの特性が決まります。storageClassNameは、Kubernetes環境で提供されるものである必要があります。たとえば、Oracle Kubernetes環境(OKE)では、oci-bvを使用できます。

デフォルトの記憶域は、50Giです。別のサイズを要求するには、storageSize属性を使用します。デモ用の場合は50Giの記憶域サイズで十分ですが、本番環境ではより大きな記憶域を検討する必要があります。

TimesTenによって、TimesTenインストール、インスタンスおよびデータベースがこの記憶域に配置されます。それは、各ポッドの各コンテナに/ttとしてマウントされます。TimesTenインスタンスは/tt/home/timesten/instances/instance1にあります。

TimesTenScaleoutオブジェクトを作成すると、次の属性がサポートされます。
  • 記憶域クラス名:

    • dataStorageClassName: グリッド内のTimesTenデータベースの要素の永続ボリュームをリクエストするために使用される記憶域クラスの名前。指定しない場合、デフォルトはstorageClassNameの値です。

    • mgmtStorageClassName: 管理インスタンスのデータベースの永続ボリュームをリクエストするために使用される記憶域クラスの名前。指定しない場合、デフォルトはstorageClassNameの値です。

    • zookeeperStorageClassName: ZooKeeperの永続データの永続ボリュームをリクエストするために使用される記憶域クラスの名前。指定しない場合、デフォルトはstorageClassNameの値です。

    • storageClassName: データ記憶域クラス名、管理記憶域クラス名およびzookeeper記憶域クラス名が同じ場合は、storageClassNameを指定するだけです。

  • 記憶域サイズ:

    • dataStorageSize: グリッド内のTimesTenデータベースの要素ごとにプロビジョニングされる記憶域の量。デフォルトは50Giです。

    • mgmtStorageSize: 管理インスタンスのデータベースにプロビジョニングされる記憶域の量。デフォルトは50Giです。

    • zookeeperStorageSize: ZooKeeperの永続データにプロビジョニングされる記憶域の量。デフォルトは50Giです。

    • storageSize: データ記憶域サイズ、管理記憶域サイズおよびzookeeper記憶域サイズが同じ場合は、storageSizeを指定するだけです。たとえば、dataStorageSize75GimgmtStorageSize75GiおよびzookeeperStorageSize75Giの場合、storageSizeの値を75Giに指定できます。dataStorageSizemgmtStorageSizeおよびzookeeperStorageSizeの値は、storageSizeの値に設定されます。

TimesTenデータベース(TimesTen Classicを使用)およびTimesTenデータベース(TimesTen Scaleoutを使用)の場合:
  • TimesTenのベスト・プラクティスでは、TimesTenデータベースに関連付けられたトランザクション・ログ・ファイルを、データベースのチェックポイント・ファイルとは異なる記憶域ボリュームに配置することをお薦めします。これにより、チェックポイントとトランザクション・ログ操作に記憶域への個別のパスが提供されます。たとえば、トランザクション・ログ・ファイルをパフォーマンスの高い記憶域に格納し、チェックポイント・ファイルを低速の記憶域に格納できます。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』個別の物理デバイスへのチェックポイントおよびトランザクション・ログ・ファイルの配置を参照してください。

  • チェックポイント・ファイルとトランザクション・ログ・ファイルを別の記憶域パスに配置するには、トランザクション・ログ・ファイルのみに使用される、2番目の永続記憶域の値を指定します。このためにはlogStorageSize属性を使用し、logStorageClassName属性を使用してその配置を制御します。これにより、各ポッドに対して2番目のPVCが作成され、/ttlogの各コンテナで使用可能になります。(この2番目の記憶域ボリュームには/ttlogマウント・ポイントがあります。)

    TimesTenClassicオブジェクトの例を次に示します。TimesTenScaleoutオブジェクトにも同じ例を使用できます。

    apiVersion: timesten.oracle.com/v3
    kind: TimesTenClassic
    metadata:
      name: sample
    spec:
      ttspec:
        storageClassName: slower
        storageSize: 750Gi
        logStorageClassName: faster
        logStorageSize: 200G

追加のリソースの指定

Kubernetesは、アプリケーションがKubernetesクラスタ内の配置を制御できるようにするアフィニティおよびアンチアフィニティの設定をサポートしています。これらの設定を使用して、すべてのレプリカが単一の物理ホスト上に存在しないようにできます。

TimesTenポッドおよびTimesTenオペレータによって作成されるこれらのポッド内のコンテナには、アフィニティ設定、ノード・セレクタ、追加のコンテナ、許容範囲、リソース要件およびその他のKubernetes属性を指定できます。

TimesTenClassicデプロイメントでは、TimesTenClassicオブジェクトの.spec.templateデータ項目でこれらのリソース指定を指定します。TimesTenオペレータは、このtemplateをStatefulSetに渡します。たとえば、TimesTenClassicオブジェクトをデプロイすると、オペレータは、高可用性を提供するTimesTenデータベースのレプリケート・ペアを構成します。ただし、オペレータはポッドの配置を制御しないため、TimesTenポッドの配置を制御することで、さらに高いレベルの高可用性を実現できます。TimesTenポッドは、様々な可用性ゾーンで使用することも、異なるKubernetesノード上に存在することもできます。これを行うには、TimesTenClassicオブジェクトの.spec.templateデータ項目にaffinityオプションを指定します。

TimesTenClassicデプロイメントと同様に、TimesTenScaleoutオブジェクトに同じリソース指定を指定できます。TimesTenScaleoutオブジェクトは、.spec.mgmtTemplate.spec.dataTemplateおよび.spec.zookeeperTemplate属性をサポートしています。これらの属性を使用して、アフィニティやその他の設定をKubernetesに渡すことができます。これらは、PodTemplateSpecタイプです。
  • mgmtTemplate: TimesTen Scaleout管理インスタンスを含むポッドに適用されます。単一のPodTemplateSpecで構成されます。

  • dataTemplate: TimesTen Scaleoutデータ・インスタンスを含むポッドに適用されます。PodTemplateSpecの配列で構成されます。指定した場合、グリッド内のデータ領域ごとに配列内に1つのエントリが存在する必要があります(配列内のkエントリ)。これにより、データ領域ごとに異なる配置を指定できます。たとえば、データ領域1を可用性ゾーン1に配置し、データ領域2を可用性ゾーン2に配置できます。

  • zookeeperTemplate: Scaleoutで使用されるZooKeeperインスタンスを含むポッドに適用されます。単一のPodTemplateSpecで構成されます。

PodTemplateSpecの詳細は、https://kubernetes.io/docs/reference/kubernetes-api/を参照してください

TimesTenClassicオブジェクトのaffinity設定を指定する例を次に示します。

apiVersion: timesten.oracle.com/v3
kind: TimesTenClassic
metadata:
  name: sample
spec:
  …
  template:
    affinity:
      podAntiAffinity:
        preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            podAffinityTerm:
             labelSelector:
              matchExpressions: 
               - key: "app"
                 operator: In
                 values:
                  - ds1
             topologyKey: "kubernetes.io/hostname"