グリッドのデプロイについて
この項の情報は、Kubernetes環境でのグリッドの構成およびデプロイに関する基礎知識を提供します。
グリッドの計画について
TimesTenオペレータの機能の1つは、TimesTen ScaleoutグリッドとそのデータベースをKubernetesクラスタにプロビジョニングする機能です。他のTimesTen Scaleout環境と同様に、グリッドの計画を実行する必要があります。
-
K-Safety (
k
で表されます): TimesTenデータベースのコピーの数。K-Safetyファクタは、グリッド内のデータ領域の数を決定します。たとえば、k
を2
に設定した場合、データベースのコピーは2つ存在します。1つのコピーはデータ領域1に存在し、もう1つのコピーはデータ領域2に存在します。 - レプリカ・セット: グリッド内のレプリカ・セットの数。レプリカ・セットには
k
要素が含まれ、レプリカ・セット内の各要素は、レプリカ・セット内の他の要素の正確なコピーになります。k
の値は、レプリカ・セットの数と組み合せて、グリッド内のデータ・インスタンスの数を決定します。たとえば、k
を2
に設定し、レプリカ・セットを3
に設定した場合、グリッド内には6つのデータ・インスタンスが存在します。 -
ZooKeeperインスタンス: グリッドのZooKeeperインスタンスの数。
- データベース定義ファイル(
DbDef
): グリッドのデータベースにはどのようなデータ・ストア属性と初期接続属性が必要ですか。 - 直接接続可能オブジェクト: 直接アクセスを使用する場合、データベースにはどのような一般接続属性が必要ですか。
- クライアント/サーバー接続可能オブジェクト: クライアント/サーバー・アクセスを使用する場合、データベースにはどのような一般接続属性が必要ですか。
構成を定義したら、その情報をTimesTenオペレータに提供します。オペレータはそこから引き継ぎます。グリッドとデータベースのプロビジョニングとデプロイメントが自動的に実行されます。
グリッドの構成について
TimesTenオペレータには、TimesTen Scaleoutグリッドおよびデータベースを定義してデプロイできるように、TimesTenScaleoutオブジェクト・タイプおよび構成メタデータが用意されています。TimesTenScaleoutオブジェクト・タイプは、グリッドを構成するための構文を提供します。構成メタデータでは、データベースの接続属性を定義できます。つまり、オペレータには、グリッドおよびデータベースをKubernetesクラスタにプロビジョニングするために必要な情報があります。
-
K-Safety (
k
): オペレータは、TimesTenScaleoutオブジェクト・タイプの構文の一部として.spec.ttspec.k
要素を提供します。TimesTenScaleoutオブジェクトのYAMLマニフェスト・ファイルでk
を指定します。 -
レプリカ・セット: オペレータは、TimesTenScaleoutオブジェクト・タイプの構文の一部として
.spec.ttspec.nReplicaSets
要素を提供します。TimesTenScaleoutオブジェクトのYAMLマニフェスト・ファイルでnReplicaSets
を指定します。 -
ZooKeeperインスタンス: オペレータは、TimesTenScaleoutオブジェクト・タイプの構文の一部として
.spec.ttspec.nZookeeper
要素を提供します。TimesTenScaleoutオブジェクトのYAMLマニフェスト・ファイルでnZookeeper
を指定します。 -
データベース定義ファイル(
DbDef
): オペレータは、db.ini
メタデータ・ファイルの内容からDbDef
を作成します。このメタデータ・ファイルを作成し、Kubernetes機能(またはその他の手段)を使用して、このファイルをtt
コンテナの/ttconfig
ディレクトリに配置します。 -
1つ以上の直接接続可能オブジェクト: オペレータは、
*.connect
メタデータ・ファイルの内容から1つ以上の直接接続可能オブジェクトを作成します。これらの*.connect
ファイルを1つ以上作成し、Kubernetes機能(またはその他の手段)を使用して、tt
コンテナの/ttconfig
ディレクトリにファイルを配置します。 -
1つ以上のクライアント/サーバー接続可能オブジェクト: オペレータは、
*.csconnect
メタデータ・ファイルの内容から1つ以上のクライアント/サーバー接続可能オブジェクトを作成します。これらの*.csconnect
ファイルを1つ以上作成し、Kubernetes機能(またはその他の手段)を使用して、tt
コンテナの/ttconfig
ディレクトリにファイルを配置します。
TimesTenScaleoutSpecSpec、「構成メタデータのリスト」および「/ttconfigディレクトリの移入」を参照してください。
メタデータ・ファイルがtt
コンテナの/ttconfig
ディレクトリに配置され、TimesTenScaleoutオブジェクトを構成してKubernetesクラスタにデプロイすると、KubernetesはTimesTenScaleoutオブジェクトが作成されたことをオペレータに通知します。オペレータは、グリッドを実装するために追加のKubernetesオブジェクトを作成するプロセスを開始します。
グリッドのプロビジョニングについて
TimesTenオペレータは、TimesTenScaleoutオブジェクトから情報を収集し、TimesTen Scaleoutグリッドおよびデータベースのインスタンス化を開始します。次のStatefulSetが作成されます。
-
グリッドの管理インスタンスを提供する1つのStatefulSet。オペレータは1つの管理インスタンスをサポートします。この管理インスタンスの基礎となるポッドも作成されます。
-
1つ以上のZooKeeperインスタンスを提供する1つのStatefulSet。オペレータは、TimesTenScaleoutオブジェクト定義の
nZookeeper
フィールドに指定した値によって、ZooKeeperインスタンスの数を決定します。たとえば、nZookeeper
に3
の値を指定した場合、オペレータは3つのレプリカを持つ1つのStatefulSetを作成します。これらのZooKeeperインスタンスの基礎となるポッドも作成されます。ZooKeeperインスタンスごとに1つのポッドがあります。 -
追加のStatefulSet。この数は、TimesTenScaleoutオブジェクト定義の
k
フィールドに指定した値によって決まります。たとえば、k
に2
の値を指定した場合、オペレータは2つのStatefulSetを作成します。これらのStatefulSetは、グリッドのデータ・インスタンスを提供します。k
個のStatefulSetはそれぞれ、結果のグリッドに単一のデータ領域を実装するためのポッドを提供します。StatefulSetにはM
個のレプリカがあります。その数は、TimesTenScaleoutオブジェクト定義のnReplicaSets
フィールドに指定した値によって決まります。たとえば、nReplicaSets
を3
に設定した場合、各StatefulSetには3つのレプリカがあります。このレプリカの数によって、結果のグリッド内のレプリカ・セットの数が決まります。前述の例では、1つのStatefulSetに3つのレプリカがあります。この1つのStatefulSetには、データ領域1の3つのデータ・インスタンスが含まれます。ポッドはデータ・インスタンスごとに作成されるため、3つのポッドが作成されます。2番目のStatefulSetには、データ領域2の3つのデータ・インスタンスが含まれます。ポッドはデータ・インスタンスごとに作成されるため、3つのポッドが作成されます。6つのデータ・インスタンスに対して合計6つのポッドが作成されます。
-
管理インスタンスおよびデータ・インスタンスを含むポッドのDNS名を提供する1つのheadlessサービス。このサービスにより、TimesTenクライアント/サーバー・ポート
6625
を使用して、ポッドへのクライアント/サーバー・アクセスが可能になります。 - ZooKeeperインスタンスを含むポッドのDNS名を提供する1つのheadlessサービス。このサービスにより、ZooKeeperの内部ポート
2888
と3888
、および外部ポート2181
にアクセスできます。
これらのStatefulSetsおよびheadlessサービスの例は、「基礎となるオブジェクトの確認」にあります。
オペレータは、ポッドの永続ボリューム要求(PVC)も作成します。これらのPVCにより、永続ボリュームがKubernetesによって割り当てられ、TimesTenポッドおよびZooKeeperポッドにアタッチされます。「永続記憶域」を参照してください。
ZooKeeperを実行するポッドは、zookeeper
という単一のコンテナで構成されます。TimesTenを実行している各ポッドは、2つ以上のコンテナで構成されています。tt
コンテナは、TimesTenエージェントおよびTimesTenを実行します。daemonlog
コンテナは、TimesTenデーモン・ログをstdoutに書き込みます。
tt
コンテナが起動すると、オペレータはそれらを作業グリッドにアセンブルします。グリッドのモデルは、次のような複数のオブジェクトで構成されます。
-
各データ領域グループのデータ・インスタンスのホスト
- TimesTenのインストールで構成された各ホスト
- 単一のTimesTenインスタンスで構成された各ホスト
DbDef
(db.ini
ファイルの内容)- ダイレクト・モード接続可能オブジェクト(存在する場合) (
*.connect
ファイルの内容) - クライアント/サーバー接続可能オブジェクト(存在する場合) (
*.csconnect
ファイルの内容)
sshについて
TimesTen Scaleoutグリッドは、グリッドのインスタンス間でパスワードなしのsshに依存しています。TimesTenオペレータは、Kubernetes環境のグリッド内のtt
コンテナ間でパスワードなしのsshを自動的に構成します。実行する必要がある操作はありません。
グリッドの作成について
グリッドを作成するとき、TimeTenオペレータは様々な高レベルの状態間を遷移します。次に、これらの状態について説明します。
KubernetesクラスタにTimesTenScaleoutオブジェクトを作成すると、TimesTenオペレータは、TimesTenScaleoutグリッドおよびデータベースのデプロイに必要なStatefulSetおよびサービスを作成します。オペレータは、Initializing
の高レベル状態をTimesTenScaleoutオブジェクトに割り当てます。
オペレータは、StatefulSetのオブジェクトとその基礎となるポッドのステータスを定期的にポーリングします。ZooKeeperポッドの準備が完了すると、TimesTenScaleoutオブジェクトはInitializing
状態からZooKeeperReady
状態に遷移します。
管理ポッドのTimesTenエージェントが起動すると、オペレータはエージェントにTimesTenインスタンスおよびグリッドを作成するように指示します。TimesTenScaleoutオブジェクトは、GridCreated
状態に遷移します。
オペレータは、すべてのポッド内のすべてのTimesTenエージェントが起動するまで待機します。すべてが起動すると、オペレータは管理インスタンスのTimesTenエージェントに、グリッド内のデータ・インスタンスのグリッド・モデル内にホスト、インストールおよびインスタンスを作成するように指示します。
DbDef
がdb.ini
ファイルの内容から作成されます。直接接続可能オブジェクトは、*.connect
ファイルの内容から作成されます。クライアント/サーバー接続可能オブジェクトは、*.csconnect
ファイルの内容から作成されます。
モデルが適用され、グリッドのデータ・インスタンスが作成されます。TimesTenScaleoutオブジェクトは、InstanceCreated
状態に遷移します。
オペレータは次に管理インスタンスに、(TimesTen ttGridAdmin
ユーティリティをdbCreate
オプションとともに使用して)データベースを作成し、(TimesTen ttGridAdmin
ユーティリティをdbDistribute
-add
all
-apply
オプションとともに使用して)初期分散マップを作成するように指示します。その後、TimesTenScaleoutオブジェクトはDbCreated
状態に遷移します。
オペレータは次に1つのデータ・インスタンスのTimesTenエージェントに、TimesTen ttIsql
ユーティリティを実行してadminUser
ファイルにユーザーを作成し、schema.sql
ファイルを実行するように指示します(これらのファイルを指定した場合)。TimesTenScaleoutオブジェクトは、Normal
状態に遷移します。
グリッドおよびデータベースが作成されます。その後、TimesTenエージェントは、接続のためにデータベースを開きます。
TimesTenScaleoutオブジェクトがKubernetesクラスタ内にデプロイされた後は、オペレータによってそれらのオブジェクトが管理および監視されます。また、オペレータによって、グリッドおよび関連するデータベースにおける障害が検出、修復およびリカバリされます。「TimesTen Scaleoutの管理」を参照してください。
オペレータのこれらの高レベル状態間の遷移を示す例は、「TimesTenScaleoutオブジェクトの高レベル状態の監視」にあります。