プライマリ・コンテンツに移動
Oracle® TimesTen In-Memory Database Kubernetesオペレータ・ユーザーズ・ガイド
リリース18.1
F33742-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

5 TimesTenデータベースの使用

この章では、ダイレクト・モード・アプリケーションとClient/Serverドライバを使用して、Kubernetesクラスタに存在するTimesTenデータベースにアクセスし、使用する方法について説明します。

トピック:

ダイレクト・モード・アプリケーションの使用

TimesTenClassicデプロイメントでは、ポッドの内部でダイレクト・モード・アプリケーションを実行できます。構成すると、アクティブ・スタンバイ・ペアの各ポッドは2つ以上のコンテナを実行します。1つのコンテナがTimesTenを実行し、TimesTenエージェントと他のコンテナは選択したアプリケーションを実行します。コンテナで実行されているこれらのアプリケーションは、ダイレクト・モードでTimesTenを使用できます。ダイレクト・モード・アプリケーションの詳細は、Oracle TimesTen In-Memory Databaseオペレーション・ガイドのTimesTenデータベースの管理を参照してください。

TimesTenポッドは、KubernetesのshareProcessNamespaceオプションを使用して作成されます。このオプションを使用すると、同じポッド内の他のコンテナで実行されているダイレクト・モード・アプリケーションが機能します。


ノート:

ダイレクト・モードを取り囲む標準のセキュリティ問題は、Kubernetes以外の環境と同様にこの環境に適用されます。アプリケーションをTimesTenとは別のコンテナに分離することは、管理およびアップグレードを容易にするためです。これはセキュリティ障壁のためではなく、追加のセキュリティは提供しません。

TimesTenClassicオブジェクトの.spec.template.spec.containers属性を指定すると、アクティブ・スタンバイ・ペアの各ポッド内に1つ以上のコンテナを作成できます。これらのコンテナは、TimesTenを実行するttコンテナに加えて作成されます。コンテナは、指定したコマンドをコンテナ・イメージで実行します。

次の例では、TimesTenClassicオブジェクト(太字で表示)に.spec.template.spec.containers属性を含める方法を説明します。

apiVersion: timesten.oracle.com/v1
kind: TimesTenClassic
metadata:
  name: directmode
spec:
  ttspec:
    storageClassName: oci
    storageSize: 250G
    image: phx.ocir.io/youraccount/tt1814110:3 
    imagePullSecret: sekret
    dbConfigMap:
    - directmode
  template:
    spec:
      containers:
      - name: yourapp
        image: phx.ocir.io/youraccount/yourapplication:1
        command: ["/bin/yourapp"]
      - name: anotherapp
        image: phx.ocir.io/youraccount/anotherapplication:1
        command: ["/bin/anotherapp"]

これらのコンテナには、Kubernetes StatefulSetオブジェクトの.spec.template.spec.containers属性と同様に、その他のKubernetes構成を指定できます。たとえば、resources属性を使用して、コンテナのCPUおよびメモリー制限を設定できます。resources属性の詳細は、ttおよびdaemonlogコンテナのリソース指定を参照してください。オペレータは、指定したコンテナに適切なマウントを自動的に追加します。これにより、コンテナがTimesTenにアクセスできます。

ダイレクト・モードでTimesTenを使用するには、ttコンテナでのTimesTenの構成方法をアプリケーション・コンテナが認識する必要があります。アプリケーション・コンテナも同様に構成する必要があります。TimesTenコンテナおよび具体的にはttコンテナの詳細は、オペレータが機能する方法の理解を参照してください。

特に、次のとおりです。

  • TimesTenユーザー・グループの名前は、グループID (GID)が333oracleです。TimesTenユーザー・グループの詳細は、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドのTimesTenユーザー・グループの理解を参照してください。

  • TimesTenは、oracleオペレーティング・システム・ユーザーとして実行されます(UIDは333)。このoracleユーザーはTimesTenグループのメンバーです。

  • アプリケーションを、GIDが333のTimesTenグループのメンバーとして実行するように、アプリケーション・コンテナを構成する必要があります。このグループのメンバーのみがダイレクト・モードでTimesTenを実行できます。

  • ダイレクト・モード・アプリケーションは、UIDが333のユーザーとして実行できます。ただし、これにより、TimesTenインスタンスに対するアプリケーション・インスタンス管理者権限が付与されます。または、GIDが333のグループを作成し、プライマリ・グループまたはセカンダリ・グループがそのグループであるが、UIDが333ではないユーザーを作成することもできます。後者の場合、このユーザーとしてアプリケーションを実行し、ダイレクト・モードでTimesTenを使用できます。その後、ADMIN権限までのユーザー権限を付与できます。プライマリ・グループとセカンダリ・グループの詳細は、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドのLinux/UNIXでのインストールの作成を参照してください。TimesTen権限の詳細は、Oracle TimesTen In-Memory Database SQLリファレンスのシステム権限およびオブジェクト権限を参照してください。

  • ダイレクト・モード・アプリケーションでは、/tt/home/oracle/instances/instance1に構成されているTimesTenインスタンスを使用する必要があります。TimesTen環境変数を構成するスクリプトは、/tt/home/oracle/instances/instance1/bin/ttenv.*にあります。

  • TimesTenインスタンスにあるファイルは変更しないでください。また、インスタンスの$TIMESTEN_HOMEディレクトリ・ツリーに新しいファイルは作成しないでください。

  • 構成されたDSNが2つあります。/tt/home/oracle/instances/instance1/conf/sys.odbc.iniファイルにあります。1つのDSNにTimesTenClassicオブジェクトの名前があります。2つ目はttです。いずれか1つを使用できます。これらは同等です。

  • /tt/home/oracle/instances/instance1/conf/sys.odbc.iniファイルにエントリを追加しないでください。これらのファイルは、オペレータが上書きできます。ただし、アプリケーション・コンテナにある$HOME/.odbc.iniファイルに独自のDSNエントリを格納できます。

  • 追加のTimesTenデータベースを作成しないでください。

オペレータではなく、Kubernetesが、ダイレクト・モード・コンテナのライフサイクルの監視および管理を担当します。特に、次のとおりです。

  • アプリケーションは、(独自のコンテナにある)TimesTenの状態に関係なく、Kubernetesによって起動されます。Kubernetesは、コンテナのライフサイクルを個別に管理します。順序付けされません。アプリケーションでは、TimesTenが使用可能になるまで待機する方法を認識している必要があります。

  • ダイレクト・モード・アプリケーションは、アクティブなTimesTenデータベースを含むポッド、およびスタンバイTimesTenデータベースを含むポッドで実行されます。アプリケーションでは、ttRepStateGet組込みプロシージャを使用して、アクティブまたはスタンバイのどちらで実行しているかを判断し、スタンバイ上でそれ自体を停止する必要がある場合があります。ttRepStateGet組込みプロシージャの詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのttRepStateGetを参照してください。

  • Kubernetesは、TimesTenデータベースが存在する前またはメモリーにロードされて使用可能になる前に、アプリケーションを起動できます。ダイレクト・モード・アプリケーションは、ポッド内のTimesTenデータベースの状態を検証し、適切に使用する必要があります。

  • アプリケーションが終了すると、コンテナが終了し、Kubernetesによって別のコンテナが生成されます。これは、ttコンテナで実行されているTimesTenには影響しません。

Client/Serverドライバの使用

Kubernetesクラスタ内の別のポッドで実行されているアプリケーションは、標準のTimesTen Client/Serverドライバを使用してTimesTenデータベースを使用できます。TimesTenクライアント・インスタンスを使用してアプリケーション・コンテナを構成する必要があります。そのインスタンスに構成済の$TIMESTEN_HOME/conf/sys.odbc.iniファイルを含めるか、アプリケーションで適切なClient/Server接続文字列を使用する必要があります。

たとえば、sys.odbc.iniファイルを構成することを選択した場合、sys.odbc.iniのコンテンツにはTimesTenデータベースを実行しているポッドを参照するクライアントDSN定義が含まれます。

この例では、sample DSNを作成し、defaultネームスペース内のsample TimesTenClassicオブジェクトを参照します。

% vi $TIMESTEN_HOME/conf/sys.odbc.ini

[sample]
TTC_SERVER_DSN=sample
TTC_SERVER1=sample-0.sample.mynamespace.svc.cluster.local
TTC_SERVER2=sample-1.sample.mynamespace.svc.cluster.local

アプリケーションは、このDSNを使用してTimesTenデータベースに接続します。アクティブ・スタンバイ・ペア構成では、TimesTenによってアプリケーション接続がアクティブ・データベースに自動的にルーティングされます。(例として、sample-0およびsample-1が使用されています。)

Client/Serverアプリケーションは、定義済のユーザー名とパスワードを使用してデータベースに接続する必要があります。オペレータは、ADMIN権限を持つこのようなユーザーを作成できます。その後、そのユーザーとしてデータベースに接続し、他のユーザーを作成して、CREATE SESSION権限をこれらのユーザーに付与できます。オペレータがADMIN権限を持つ初期ユーザーを作成する方法の詳細は、構成メタデータおよびKubernetes機能の理解を参照してください。

この例では、接続文字列を使用して、sampleデータベースにscottユーザーとして接続します。(必要なすべての接続属性を必要とする接続文字列を使用する場合は、sys.odbc.iniファイルで定義する必要はありません。)scottユーザーはオペレータによって作成され、sampleデータベースにすでに存在しています。接続後、scott.emp表が存在するかどうかを確認できます。(オペレータは以前にこの表も作成しています。オペレータがこの表を作成する方法の詳細は、schema.sqlファイルを参照してください。)

% ttIsqlCS -connstr "TTC_SERVER1=sample-0.sample.mynamespace.svc.cluster.local;
TTC_SERVER2=sample-1.sample.mynamespace.svc.cluster.local;
TTC_SERVER_DSN=sample;UID=scott;PWD=tiger";

 
Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights 
reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
 
 
 
connect "TTC_SERVER1=sample-0.sample.mynamespace.svc.cluster.local;
TTC_SERVER_DSN=sample;uid=scott;pwd=********";
Connection successful: 
DSN=;TTC_SERVER=sample-0.sample.mynamespace.svc.cluster.local;
TTC_SERVER_DSN=sample;UID=scott;DATASTORE=/tt/home/oracle/datastore/sample;
DATABASECHARACTERSET=AL32UTF8;CONNECTIONCHARACTERSET=US7ASCII;PERMSIZE=200;
DDLREPLICATIONLEVEL=3;
(Default setting AutoCommit=1)
Command> tables;
  SCOTT.EMP
1 table found.