その他の構成オプション

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

永続記憶域

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

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

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

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

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

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

    次に例を示します。

    apiVersion: timesten.oracle.com/v5
    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オプションを指定します。

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

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

apiVersion: timesten.oracle.com/v5
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"