グリッドのデプロイについて

この項の情報は、Kubernetes環境でのグリッドの構成およびデプロイに関する基礎知識を提供します。

グリッドの計画について

TimesTenオペレータの機能の1つは、TimesTen ScaleoutグリッドとそのデータベースをKubernetesクラスタにプロビジョニングする機能です。他のTimesTen Scaleout環境と同様に、グリッドの計画を実行する必要があります。

次に、いくつかの考慮事項を示します。
  • K-Safety (kで表されます): TimesTenデータベースのコピーの数。K-Safetyファクタは、グリッド内のデータ領域の数を決定します。たとえば、k2に設定した場合、データベースのコピーは2つ存在します。1つのコピーはデータ領域1に存在し、もう1つのコピーはデータ領域2に存在します。

  • レプリカ・セット: グリッド内のレプリカ・セットの数。レプリカ・セットにはk要素が含まれ、レプリカ・セット内の各要素は、レプリカ・セット内の他の要素の正確なコピーになります。kの値は、レプリカ・セットの数と組み合せて、グリッド内のデータ・インスタンスの数を決定します。たとえば、k2に設定し、レプリカ・セットを3に設定した場合、グリッド内には6つのデータ・インスタンスが存在します。
  • ZooKeeperインスタンス: グリッドのZooKeeperインスタンスの数。

  • データベース定義ファイル(DbDef): グリッドのデータベースにはどのようなデータ・ストア属性と初期接続属性が必要ですか。
  • 直接接続可能オブジェクト: 直接アクセスを使用する場合、データベースにはどのような一般接続属性が必要ですか。
  • クライアント/サーバー接続可能オブジェクト: クライアント/サーバー・アクセスを使用する場合、データベースにはどのような一般接続属性が必要ですか。

構成を定義したら、その情報をTimesTenオペレータに提供します。オペレータはそこから引き継ぎます。グリッドとデータベースのプロビジョニングとデプロイメントが自動的に実行されます。

グリッドの構成について

TimesTenオペレータには、TimesTen Scaleoutグリッドおよびデータベースを定義してデプロイできるように、TimesTenScaleoutオブジェクト・タイプおよび構成メタデータが用意されています。TimesTenScaleoutオブジェクト・タイプは、グリッドを構成するための構文を提供します。構成メタデータでは、データベースの接続属性を定義できます。つまり、オペレータには、グリッドおよびデータベースをKubernetesクラスタにプロビジョニングするために必要な情報があります。

「グリッドの計画について」の計画された構成に基づいて、その構成を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インスタンスの数を決定します。たとえば、nZookeeper3の値を指定した場合、オペレータは3つのレプリカを持つ1つのStatefulSetを作成します。これらのZooKeeperインスタンスの基礎となるポッドも作成されます。ZooKeeperインスタンスごとに1つのポッドがあります。

  • 追加のStatefulSet。この数は、TimesTenScaleoutオブジェクト定義のkフィールドに指定した値によって決まります。たとえば、k2の値を指定した場合、オペレータは2つのStatefulSetを作成します。これらのStatefulSetは、グリッドのデータ・インスタンスを提供します。k個のStatefulSetはそれぞれ、結果のグリッドに単一のデータ領域を実装するためのポッドを提供します。StatefulSetにはM個のレプリカがあります。その数は、TimesTenScaleoutオブジェクト定義のnReplicaSetsフィールドに指定した値によって決まります。たとえば、nReplicaSets3に設定した場合、各StatefulSetには3つのレプリカがあります。このレプリカの数によって、結果のグリッド内のレプリカ・セットの数が決まります。

    前述の例では、1つのStatefulSetに3つのレプリカがあります。この1つのStatefulSetには、データ領域1の3つのデータ・インスタンスが含まれます。ポッドはデータ・インスタンスごとに作成されるため、3つのポッドが作成されます。2番目のStatefulSetには、データ領域2の3つのデータ・インスタンスが含まれます。ポッドはデータ・インスタンスごとに作成されるため、3つのポッドが作成されます。6つのデータ・インスタンスに対して合計6つのポッドが作成されます。

さらに、オペレータは次のKubernetes headlessサービスを作成します。
  • 管理インスタンスおよびデータ・インスタンスを含むポッドのDNS名を提供する1つのheadlessサービス。このサービスにより、TimesTenクライアント/サーバー・ポート6625を使用して、ポッドへのクライアント/サーバー・アクセスが可能になります。

  • ZooKeeperインスタンスを含むポッドのDNS名を提供する1つのheadlessサービス。このサービスにより、ZooKeeperの内部ポート28883888、および外部ポート2181にアクセスできます。

これらのStatefulSetsおよびheadlessサービスの例は、「基礎となるオブジェクトの確認」にあります。

オペレータは、ポッドの永続ボリューム要求(PVC)も作成します。これらのPVCにより、永続ボリュームがKubernetesによって割り当てられ、TimesTenポッドおよびZooKeeperポッドにアタッチされます。「永続記憶域」を参照してください。

ZooKeeperを実行するポッドは、zookeeperという単一のコンテナで構成されます。TimesTenを実行している各ポッドは、2つ以上のコンテナで構成されています。ttコンテナは、TimesTenエージェントおよびTimesTenを実行します。daemonlogコンテナは、TimesTenデーモン・ログをstdoutに書き込みます。

TimesTenポッド内の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エージェントに、グリッド内のデータ・インスタンスのグリッド・モデル内にホスト、インストールおよびインスタンスを作成するように指示します。

DbDefdb.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オブジェクトの高レベル状態の監視」にあります。