※本ページは、”Exascale User Interfaces and Wallets“の翻訳です。
(訳注:本記事はオンプレミス環境のExascaleでの内容になります。Exadata Cloud 環境の Exascale 環境には適用されません。)
Exascale は、データベース・インテリジェントな Exadata ストレージとリモート・ダイレクト・メモリ・アクセス (RDMA) のパフォーマンスを組み合わせたマルチテナンシー、リソース・プーリング、柔軟なデータベース・インフラストラクチャの次世代のストレージ管理です。Exascale には優れた機能が多数ありますが、学習曲線も少しあります。この記事シリーズでは、Exascale の基礎をいくつか紹介して、すぐに使い始められるようにします。この最初の記事では、インフラストラクチャとユーザー インターフェイスの基礎について説明します。
Exascale の動作は、Exadata 管理者が慣れているものとは少し異なります。cellcli などの Exadata ユーザーインターフェイスの多くは、ローカルサービスプロセスと直接通信し、リモートプロセスとはまったく通信しません。そのため、dcli や exacli/exadcli などの追加のユーティリティがあり、1 つ以上のリモートサーバーでコマンドを実行することができました。Exascale は、通信方法として REST インターフェースを使用します。 Exascale ユーザーインターフェースは、この REST インターフェースを使用してクラスターと通信し、すべてのサーバー (より具体的には、サーバー上の Exascale サーバープロセス) は、このインターフェースを使用して相互に通信します。
このアーキテクチャにはさまざまな利点がありますが、複雑さも増し、直感性が少し低下するかもしれません。この記事では、Exascale を管理するための主要なコマンドライン・ユーザーインターフェースである escli の場所と使用方法について説明します。また、Exascale クラスターに接続して管理するために必要な構成のほとんどとすべての認証情報を含む Exascale ウォレットについても説明します。
ユーザー インターフェース
Exascale コマンドラインインターフェース (escli)
escli ユーティリティは、Exascale クラスタを管理する主なコマンドです。Exadata System Software (ESS) 24.1 以降、escli はデータベース・サーバーとストレージ・サーバーの両方にインストールされています。ストレージ サーバーでは、escli は他の多くの Exadata コマンドライン・ユーティリティと同じディレクトリ (/opt/oracle/cell/cellsrv/bin) にあります。データベースサーバーと VM ゲストでは、escli はディレクトリ /opt/oracle/dbserver/dbms/bin にあります。
escli ファイルは、escli.jar と呼ばれる Java ライブラリを実行するシェル・スクリプトです。escli シェル・スクリプトは、環境の設定、いくつかのサポート・ユーティリティの検索、および Java コマンドの実行を行います。
escli には、接続するための制御インターフェースと、構成およびユーザー情報を含むウォレットが提供されることを想定しています。ただし、これらのパラメータの 1 つまたは両方がなくても、限られた機能で動作し、ユーザーは認証キー・ペアやウォレットの作成などのローカル・タスクを実行できます。
$ escli --help
escli [--ctrl
] [--wallet
] [
]
Connects to an ExaCTRL server and executes commands that can be used to manage a Exascale Cluster.
If
is provided, ESCLI executes the command on the cluster and exits. Otherwise, ESCLI enters interactive mode, where you can enter commands at the prompt until you use the EXIT command.
--ctrl Specify the ExaCTRL server to connect to.
--wallet Specify the location of the authentication wallet. The user ID and the private key are read from the wallet and used to authenticate the user for this ESCLI session.Example:
escli --ctrl cluster01host01 ls @DATA/
Exascale Shell (xsh)
xsh ユーティリティは、データベースおよびストレージ・サーバーに配置されているコマンドライン・ツールです。xsh を使用して、Exascale ファイルとExascaleストレージを管理できます。xsh ユーティリティは非対話型であるため、escli のようにログインすることはできません。xsh のコマンドはパラメーターとして追加されます。たとえば、ディレクトリの一覧を返すには、コマンド xsh ls を実行します。xsh は、escli と同じウォレット構成を使用して認証します。次に、admin スーパーユーザー・アカウントを使用して、すべての最上位ディレクトリの一覧を示します。
# xsh ls --wallet /opt/oracle/cell/cellsrv/deploy/config/security/admwallet -1 @$BSTbsmmeta @$EDS_MDBKUP @my-db-vault
構成
クラスターエンドポイント

Exascale クラスタには、Oracle Exadata Deployment Assistant (OEDA) で構成された高可用性を備えた REST インタフェース・エンドポイントを介してアクセスします。
エンドポイントは、構成された後、Exadata システム上の複数の場所でも見つけることができます。ストレージ サーバーへの特権アクセス権がある場合は、cellcli で Exascale クラスター名とエンドポイントを見つけることができます。
# cellcli -e 'list escluster detail'
name: exacluster
leaderHostName: exaclusterep
leaderUrl: 10.10.10.10:5052
Exascale システムは、ストレージ サーバーとデータベース サーバーに複数のウォレットとともに導入されます。ウォレットの詳細については、次のセクションを参照してください。各ウォレットには、Exascale クラスターのエンドポイントが含まれています。
$ escli lswallet --detail --wallet /etc/oracle/cell/network-config/eswallet ... restEndPoint 10.10.10.10:5052 ...
ユーザーアカウント
Exascale には、ユーザーアカウントのシステムがあり、さまざまなユーザーが、割り当てられた権限に従ってアクションを実行し、データにアクセスできます。Exadata システムの管理に使用するほとんどのユーザーインターフェースとは異なり、Exascale ユーザーインターフェースにはパスワード認証機能がありません。認証には SSH と同様に共有キーを使用します。ただし、SSH のように共有キー・ファイルを直接使用するのではなく、キーはウォレットに保存されます。ウォレットには、ユーザー名、信頼できる証明書、およびユーザーまたはサービスへの接続、認証、承認に必要なその他の情報も保存されます。
管理者アカウント
各ストレージ・サーバーには、admin と呼ばれるスーパーユーザー・アカウントと、ストレージ・サーバーのホスト名を共有するノード管理者アカウントの 2 つの管理者ユーザーアカウントがあります。各データベース・サーバーには、データベース・サーバーのホスト名を共有するノード管理者アカウントがあります。
スーパーユーザー・アカウント (admin)
admin ユーザーはスーパーユーザー・アカウントであり、ストレージ・サーバーにのみ存在します。ストレージ・サーバー上のすべての admin ユーザー・ウォレットには、同じシステム生成の秘密鍵が含まれています。admin ユーザーは、暗黙的にすべてのシステム操作を実行でき、実質的にすべてのシステム権限を保持します。admin ユーザー・ウォレットは、/opt/oracle/cell/cellsrv/deploy/config/security/admwallet にあります。
ノード管理者アカウント (<hostname>)
ノード管理者アカウント名は、そのアカウントが存在するサーバーのホスト名と同じです。各ストレージ・サーバーとデータベース・サーバーには、ノード管理者アカウントがあります。ノード管理者アカウントは、Exascale ソフトウェア・サービスを実行するために使用されます。このアカウントは、直接使用したり、いかなる方法でも変更したりしないでください。ストレージ・サーバーでは、ノード管理者アカウント・ウォレットは /opt/oracle/cell/cellsrv/deploy/config/eswallet にあります。データベース・サーバーでは、ノード管理者アカウント・ウォレットは /opt/oracle/dbserver/dbms/deploy/config/eswallet にあります。
ユーザーアカウント
各データベース・サーバーは、1 つ以上のユーザーアカウントを使用してデプロイされます。各データベース・サーバーで作成されるユーザーアカウントの数は、システム・デプロイ構成の詳細によって異なります。ストレージ・サーバーは、スーパーユーザー・アカウント以外のユーザーアカウントを使用してデプロイされません。Exascale は、デプロイ中に作成されたユーザーアカウント、または管理者によって作成されたユーザーアカウントを使用して管理できます。
デフォルトのユーザーアカウント
クラスタが、データベースとグリッド・インフラストラクチャの両方のインストールを所有する単一のユーザーアカウント (oracle) を使用してデプロイされた場合 (ロール分離されていない場合)、Exascale ユーザーアカウントは 1 つだけになります。クラスタがロールが分離された構成でデプロイされ、ユーザーアカウントが 2 つ (oracle と grid) ある場合、Exascale ユーザーアカウントは 2 つになります。Exascale ユーザーアカウント名は、オペレーティング・システムのユーザー名とグリッド クラスタ名を連結したものです。たとえば、ロール分離構成で、クラスタ名が exacluster の場合、2 つの Exascale ユーザーアカウントは oracleexacluster と gridexacluster になります。
ロール分離されていない構成の場合、ユーザーアカウント・ウォレットは /etc/oracle/cell/network-config/eswallet にあります。ロール分離構成の場合、グリッド ユーザー アカウント・ウォレットは /etc/oracle/cell/network-config/eswallet にあり、データベース ユーザー アカウント・ウオレットは $ORACLE_BASE/admin/eswallet (通常は /u01/app/oracle/admin/eswallet) にあります。
カスタム ユーザーアカウント
デフォルトのユーザーアカウントを使用して Exascale を管理できますが、カスタム ユーザー アカウントを作成して使用することもできます。カスタム ユーザー アカウントは 3 つのフェーズで作成されます。最初のフェーズでは、新しいユーザーが共有キー・ペアとウォレットを作成します。このフェーズは、ウォレットが使用されるサーバー上で実行する必要があります。2 番目のフェーズでは、特権ユーザーが Exascale クラスターに新しいユーザーアカウントを作成します。3 番目のフェーズでは、新しいユーザーが Exascale クラスターに接続して、信頼できる証明書を取得します。
フェーズ 1
フェーズ 1 の手順は、この Exascale ユーザーアカウントを所有するオペレーティング・システム・ユーザーによって、ユーザーアカウントが使用されるサーバー上で escli で実行されます。この例では、ユーザー名は user01 で、ウォレットの場所は /home/user01/esuser01wallet です。ウォレットまたは REST エンドポイントなしで escli を実行すると、ローカル・コマンドのみ実行できます。フェーズ 1 のすべてのコマンドはローカル コマンドです。
共有キーを作成します。これにより、現在のディレクトリに espriv.pem と espub.pem という 2 つのファイルが作成されます。
@> mkkey --private-key-file espriv.pem --public-key-file espub.pem
ウォレットを作成します。これにより、/home/user01/esuser01wallet というディレクトリが作成され、そのディレクトリ内のウォレット・ファイルは cwallet.sso と cwallet.sso.lck になります。
@> mkwallet --wallet /home/user01/esuser01wallet
ウォレットにユーザー名を追加します。これは、Exascale クラスタ内で一意である必要があります。オペレーティング・システム・ユーザーの名前と一致する必要はありません。
@> chwallet --wallet /home/user01/esuser01wallet --attributes user=user01
ウォレットに秘密鍵を追加します。秘密鍵ファイルは最初の手順で作成されています。
@> chwallet --wallet /home/user01/esuser01wallet --private-key-file espriv.pem
これで、新しいユーザーにはウォレットと、認証に使用される共有鍵が与えられました。秘密鍵ファイル espriv.pem は再度使用されることはないため、この時点で保護するか削除する必要があります。
新しいユーザーを使用して他のサーバーの escli にアクセスする場合は、それらのサーバー上で同じプロセスを実行する必要があります。
公開キー ファイル espub.pem は、管理者が作成するユーザーアカウントに関連付けることができるように、Exascale クラスター管理者に送信する必要があります。このプロセスが複数のサーバーで実行された場合は、すべての公開キー・ファイルを Exascale クラスター管理者に送信する必要があります。
フェーズ 2
フェーズ 2 の手順は、ユーザー作成権限を持つ Exascale ユーザーアカウントによって escli で実行されます。新しく導入されたシステムでは、ストレージ・サーバー上の管理者スーパーユーザー アカウントが、ユーザー作成権限を持つ唯一のユーザーアカウントになります。
新しいユーザーを作成します。
@> mkuser user01 --id user01
新しいユーザーの公開キーをユーザーのアカウントに関連付けます。
@> chuser user01 --public-key-file1 espub.pem
新しいユーザーアカウントが複数のサーバーで作成された場合は、新しいユーザーのすべての公開キーを新しいユーザーのアカウントに追加する必要があります。
@> chuser user01 --public-key-file1 espub1.pem --public-key-file2 espub2.pem
新しいユーザーが REST エンドポイントを知らない場合は、認証されたユーザーが escli で Exascale クラスターに接続すると、エンドポイントが表示されます。
[root@cell01 ~]# escli Wallet: /opt/oracle/cell/cellsrv/deploy/config/eswallet/cwallet.sso User: admin ExaCTRL server address: 10.10.10.10:5052
フェーズ 3
フェーズ 3 の手順は、ユーザーアカウントが作成された各サーバーで、新しいユーザーが escli で実行する必要があります。これで、ウォレットを使用して Exascale クラスターに認証できます。
ウォレットにはまだ REST エンドポイントが含まれていないため、最初に escli のパラメーターとして指定する必要があります。また、ウォレットをパラメーターとして指定する必要があります。
escli --wallet /home/user01/esuser01wallet --ctrl 10.10.10.10:5052
信頼できる証明書をウォレットに追加します。
@> chwallet --wallet /home/user01/esuser01wallet --fetch-trust-store
オプションで、REST エンドポイントをウォレットに追加することで、接続のたびに escli のパラメーターとしての指定不要ににすることができます。
@> chwallet --wallet /home/user01/esuser01wallet --attributes restEndPoint=10.10.10.10:5052
ウォレットの詳細は lswallet コマンドで表示でき、ユーザーの詳細は lsuser <username> コマンドで表示できます。
@>lswallet --detail id /home/user01/esuser01wallet pubKeyFingerPrint 1234ABCD... restEndPoint 10.10.10.10:5052 trustStoreDigest ABCD1234... user user01 @>lsuser --detail user01 id user01 name user01 category external privilege vlt_inspect pubKeyFingerprint1 4321DCBA...
次のステップ
Exadata Exascale は最初は少し難しそうに思えるかもしれませんが、コンテナ データベース (CDB)、スマート スキャン、Real Application Clusters (RAC)、さらには Exadata 自体などと同様に、最初に導入された画期的な機能や製品すべてに同じことが言えます。Exascale は多くの新機能をもたらしますが、複雑でもあります。この Exascale シリーズの連載記事は、複雑さを抑え、escli コマンドライン管理ユーティリティと基本認証から始めて、Exascale をすぐに使い始めることができるようにすることを目指しています。
| ユーザー |
Storage Server Location |
Database Server Location (Bare Metal and VM) |
| escli |
/opt/oracle/cell/cellsrv/bin/escli |
/opt/oracle/dbserver/dbms/bin/escli |
| xsh |
/opt/oracle/cell/cellsrv/bin/xsh |
/opt/oracle/dbserver/dbms/bin/xsh |
| アカウント |
アカウントタイプ |
Storage Server Wallet Location |
Database Server Wallet Location (Bare Metal and VM) |
| admin |
スーパー |
/opt/oracle/cell/cellsrv/deploy/config/security/admwallet |
N/A |
| <hostname> |
ノード管理ユーザー |
/opt/oracle/cell/cellsrv/deploy/config/eswallet |
/opt/oracle/dbserver/dbms/deploy/config/eswallet |
| oracle<cluster name> |
ユーザー(ロール分離無し) |
N/A |
/etc/oracle/cell/network-config/eswallet |
| oracle<cluster name> |
ユーザー(ロール分離) | N/A |
$ORACLE_BASE/admin/eswallet |
| grid<cluster name> |
ユーザー(ロール分離) |
N/A |
/etc/oracle/cell/network-config/eswallet |
