1.10.2 Autonomous Databaseを使用したOracle Graphの3層デプロイメント
3層デプロイメントでは、クライアント・グラフ・アプリケーションが中間層のPGXに接続し、PGXがAutonomous Databaseに接続します。
Oracle Cloudコンソールからダウンロードしたウォレットは、主にルーティング・ウォレットです。つまり、適切なデータベースに接続をルーティングしたり、接続を暗号化したりするために使用されます。ほとんどの場合、これらは自動ログイン・ウォレットではないため、実際の接続のパスワードは含まれません。通常、パスワードはウォレットの場所に個別に提供する必要があります。
グラフ・サーバーでは、クライアント・ファイル・システムに格納されているウォレットや、リモート・ユーザーが直接提供するウォレットはサポートされていません。これによって生じる高レベルでの影響は次のとおりです。
- サーバー管理者はウォレットを提供して、サーバーのファイル・システムにウォレットを安全に格納します。
- Java EE接続プールと同様に、リモート・ユーザーは接続時にそのウォレットを使用します。これは、サーバー管理者は、すべてのリモート・ユーザーがそのウォレットを使用すると信頼することを意味します。本番デプロイメントと同様に、PGXサーバーも、認証および認可を適用して信頼性を確立するように構成する必要があります。
- リモート・ユーザーは依然として、非自律型データベースと同様に、グラフ読取りリクエストを送信するときにユーザー名とパスワードを指定する必要があります。
- 各PGXサーバーには1つのウォレットのみ構成できます。
同じPGXサーバーを複数のAutonomous Databaseに接続することはサポートされていません。このユースケースがある場合、Autonomous Databaseごとに1つのPGXサーバーを起動します。
事前ロード済グラフ
サーバー起動時にAutonomous DatabaseからPGXにグラフを読み取るには、キーストアへのデータベース・パスワードの格納で説明されているステップに従います。
- データベース・パスワードを含むJavaキーストアを作成します
- ロードするグラフの場所およびプロパティを記述したPGXグラフ構成ファイルを作成します
- グラフ構成ファイルを参照するように
/opt/oracle/graph/pgx.conf
ファイルを更新します
/etc/systemd/system/pgx.service
にあるサービス・ファイルを編集し、[Service]ディレクティブの下に環境変数を指定します。Environment="JAVA_OPTS=-Doracle.net.tns_admin=/etc/oracle/graph/wallets"
Oracle Graphユーザー(systemd
の使用時にPGXサーバーを起動するユーザー)がディレクトリ(前のコードでは/etc/oracle/graph/wallets
)を読取り可能なことを確認します。
ExecStart
コマンドを編集して、パスワードを含むキーストアの場所を指定します。
ExecStart=/bin/bash start-server --secret-store /etc/keystore.p12
ノート:
これを機能させるため、/etc/keystore.p12
をパスワードで保護しないでください。かわりに、oraclegraph
ユーザーのみが読取り可能なファイル・システム権限によってファイルを保護します。
systemctl daemon-reload
sudo systemctl start pgx
オンデマンド・グラフ・ロード
PGXのリモート・ユーザーが必要に応じてAutonomous Databaseから読み取ることができるようにするには、次の2つのアプローチから選択できます。
-
oracle.net.tns_admin
システム・プロパティを使用して、サーバー起動時にウォレットへのパスを提供します。リモート・ユーザーは、グラフ構成ファイルにTNSアドレス名、ユーザー名およびキーストア別名(パスワード)を提供する必要があります。ウォレットはグラフ・サーバーのファイル・システムに安全に格納され、サーバー管理者は、すべてのリモート・ユーザーがウォレットを使用してAutonomous Databaseに接続することを信頼します。たとえば、サーバー管理者は
/etc/systemd/system/pgx.service
にあるサービス・ファイルを編集し、[Service]ディレクティブの下に環境変数を指定します。
その後、次を使用してサーバーを起動します。Environment="JAVA_OPTS=-Doracle.net.tns_admin=/etc/oracle/graph/wallets"
systemctl start pgx
/etc/oracle/graph/wallets/tnsnames.ora
ファイルには、次のようなアドレスが含まれています。sombrero_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(connect_data=(service_name=l8lgholga0ujxsa_sombrero_medium.adwc.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adwc.uscom-east-1.oraclecloud.com,OU=Oracle BMCS US,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
これで、リモート・ユーザーは、次の接続プロパティを持つグラフ構成ファイルを送信することにより、サーバーにデータを読み込むことができます。
{ ... "jdbc_url": "jdbc:oracle:thin:@sombrero_medium", "username": "hr", "keystore_alias": "database1", ... }
キーストアはクライアント側に引き続き存在し、構成オブジェクトで参照される
hr
ユーザーのパスワードを含んでいる必要があることに注意してください(キーストアへのデータベース・パスワードの格納を参照)。TomcatまたはWebLogic Serverデプロイメントにも同様のアプローチが適用されます。 -
Webアプリケーション・サーバーでJava EE接続プールを使用します。リモート・ユーザーは、グラフ構成ファイルにデータソース名を指定するだけで済みます。ウォレットおよび接続資格証明はWebアプリケーション・サーバーのファイル・システムに安全に格納され、サーバー管理者は、すべてのリモート・ユーザーがプールから接続を使用してAutonomous Databaseに接続することを信頼します。
このようなデータ・ソースを設定する手順は、次の場所にあります。データソースにadb_dsという名前を付けた場合、次の接続プロパティを持つグラフ構成ファイルを送信してこれらを参照できます。
{ ... "datasource_id": "adb_ds", ... }