その他の構成オプション
この項では、その他の構成オプションについて説明します。これらは環境のオプションの構成です。
永続記憶域
TimesTenClassicオブジェクトを作成すると、オペレータはポッドごとに1つまたは2つの永続ボリューム要求(PVC)を自動的に作成します。これらのPVCにより、永続ボリューム(PV)がKubernetesによって割り当てられ、TimesTenポッドにアタッチされます。TimesTenは、PVを使用してTimesTenインスタンスおよびTimesTenデータベースを保持します。2つのPVCを指定した場合、1つのPVにインスタンスおよびチェックポイント・ファイルが保持され、もう1つのPVにはトランザクション・ログ・ファイルが保持されます。
-
データ・インスタンスの場合: オペレータは、ポッドごとに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
にあります。
-
記憶域クラス名:
-
dataStorageClassName
: グリッド内のTimesTenデータベースの要素の永続ボリュームをリクエストするために使用される記憶域クラスの名前。指定しない場合、デフォルトはstorageClassName
の値です。 -
mgmtStorageClassName
: 管理インスタンスのデータベースの永続ボリュームをリクエストするために使用される記憶域クラスの名前。指定しない場合、デフォルトはstorageClassName
の値です。 -
zookeeperStorageClassName
: ZooKeeperの永続データの永続ボリュームをリクエストするために使用される記憶域クラスの名前。指定しない場合、デフォルトはstorageClassName
の値です。 -
storageClassName
: データ記憶域クラス名、管理記憶域クラス名およびzookeeper記憶域クラス名が同じ場合は、storageClassName
を指定するだけです。
-
-
記憶域サイズ:
-
dataStorageSize
: グリッド内のTimesTenデータベースの要素ごとにプロビジョニングされる記憶域の量。デフォルトは50Gi
です。 -
mgmtStorageSize
: 管理インスタンスのデータベースにプロビジョニングされる記憶域の量。デフォルトは50Gi
です。 -
zookeeperStorageSize
: ZooKeeperの永続データにプロビジョニングされる記憶域の量。デフォルトは50Gi
です。 -
storageSize
: データ記憶域サイズ、管理記憶域サイズおよびzookeeper記憶域サイズが同じ場合は、storageSize
を指定するだけです。たとえば、dataStorageSize
が75Gi
、mgmtStorageSize
が75Gi
およびzookeeperStorageSize
が75Gi
の場合、storageSize
の値を75Gi
に指定できます。dataStorageSize
、mgmtStorageSize
およびzookeeperStorageSize
の値は、storageSize
の値に設定されます。
-
-
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
オプションを指定します。
.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"