外部OpenSearchクラスタのインポート
既存のクラスタを外部のOpenSearchインストールからOracle Cloud Infrastructureに持ち込むことができます。これにより、Searchによって提供されるマネージド・サービス機能をOpenSearchで利用できます。
このトピックでは、既存のOpenSearchクラスタをOracle Cloud Infrastructureに取り込むプロセスについて説明します。次のタスクが含まれます。
- クラスタのスナップショットの取得。
- Object Storageにスナップショットをアップロードします。
- OpenSearchを使用した検索で宛先クラスタを作成します。
- 必要な権限を使用して動的ポリシーを構成します。
- リポジトリを登録します。
- スナップショットを復元します。
事前設定
このトピックで説明するステップに進む前に、作業できるテナンシが必要です。テナンシへのログインに使用するユーザー・アカウントには、Oracle Cloud Infrastructureサービスおよびリソースのサービスおよびユーザー権限を構成するための十分なアクセスが必要です。Oracle Cloud Infrastructureの使用開始方法の詳細は、次のリソースを参照してください:
これらの手順を完了するには、オブジェクト・ストレージ・バケットを作成し、バケットにファイルをアップロードするためのアクセス権が必要です。特定のユーザーに対してこれらの権限を構成する必要がある場合は、オブジェクト・ストレージ管理者によるバケットおよびオブジェクトの管理およびユーザーによるオブジェクト・ストレージ・バケットへのオブジェクトの書込みのポリシーの例を参照してください。
また、OpenSearchクラスタの作成に必要なサービスおよびユーザー権限も構成する必要があります。
次のポリシーの例には、必要な権限が含まれています。
Allow service opensearch to manage vnics in compartment <YOUR_COMPARTMENT>
Allow service opensearch to manage vcns in compartment <YOUR_COMPARTMENT>
Allow service opensearch to use subnets in compartment <YOUR_COMPARTMENT>
Allow service opensearch to use network-security-groups in compartment <YOUR_COMPARTMENT>
Allow <YOUR_USER> to manage opensearch-family in compartment <YOUR_COMPARTMENT>
この例に含まれるサービス権限は、指定どおりに必要です。この例の最後の行で指定されたユーザー権限を構成し、より粒度が高い場合は、「サンプル・ポリシー」でこれを示すポリシー・ステートメントの例を検索できます。
クラスタのスナップショットの作成
外部のOpenSearchインストールからクラスタのスナップショットを生成します。クラスタスナップショットの概要とそれらの生成方法については、OpenSearch - Take and restore snapshotを参照してください。
オブジェクト・ストレージ・バケットへのスナップショットのアップロード
スナップショットの生成後、テナンシのオブジェクト・ストレージ・バケットにスナップショット・ファイルをアップロードします。バケットを作成してバケットにファイルをアップロードする方法を示すチュートリアルは、オブジェクト・ストレージへのデータの配置を参照してください。
スナップショットをアップロードしたバケットの次の情報をノートにとります。この情報は、コンソールの「バケットの詳細」ページにあります。
- ネームスペース
- コンパートメント名
- バケット名
- リポジトリ名
- スナップショット・ファイル名
また、コンパートメントOCIDもノートにとります。
コンパートメントOCIDを取得するには:
- 「バケットの詳細」ページで、「クラスタ情報」の「コンパートメント」のリンクをクリックします。
- 「コンパートメント情報」のOCIDの「コピー」をクリックします。
宛先クラスタの作成
外部のOpenSearchインストールからのスナップショットをOracle Cloud Infrastructureにインポートする前に、OpenSearchを使用してSearchでOpenSearchクラスタを作成する必要があります。このクラスタは、スナップショットがインポートされる宛先クラスタになります。
必要な前提条件など、クラスタの作成方法を説明する手順については、OpenSearchクラスタの作成を参照してください。
クラスタを作成するときは、スナップショットをインポートするソース・クラスタと同じノード構成でクラスタを構成してください。
クラスタに関する次の情報をノートにとります。
- OCID
- コンパートメント名
この情報は、コンソールの「クラスタの詳細」ページで確認できます。OpenSearchクラスタの詳細の取得を参照してください。また、コンパートメントのOCIDもノートにとります。
コンパートメントOCIDを取得するには:
- 「クラスタ詳細」ページで、「クラスタ情報」>の「コンパートメント」のリンクをクリックします。
- 「コンパートメント情報」のOCIDの「コピー」をクリックします。
IAMポリシー
テナンシのオブジェクト・ストレージ・バケットへのOpenSearchクラスタ・アクセス権を付与する権限を構成する必要があります。
次のポリシーの例には、必要な権限が含まれています。
DEFINE tenancy opensearch-tenancy as <OpenSearch_Tenancy_ID>
ADMIT resource opensearch opensearchsnapshots of tenancy opensearch-tenancy to manage object-family in compartment <snapshot_bucket_compartment> where ALL {request.principal.clusterid='<cluster_OCID>', request.principal.ownertenant='<customer_tenancy_OCID>', request.principal.ownercompartment='<customer_compartment_OCID>', target.bucket.name='<snapshot_bucket_name>'}
<OpenSearch_Tenancy_ID>は、OpenSearchテナンシを使用したOCI検索のOCIDです。この値は、クラスタの「クラスタ詳細」ページで、「追加情報」セクションの「OpensearchテナンシOCID」フィールドで確認できます。
<customer_tenancy_OCID>は、OpenSearchクラスタを作成したテナンシのOCIDです。
<customer_compartment_OCID>は、OpenSearchクラスタが配置されているコンパートメントのOCIDです。
リポジトリ登録
次の例に示すように、リポジトリを登録します。
PUT _snapshot/<repository_name>
{
"type": "oci",
"settings": {
"client": "default",
"endpoint": "<objectstorage_endpoint>",
"bucket": "<bucket_name>",
"namespace": "<namespace>",
"authType": "RESOURCE_PRINCIPAL",
"bucket_compartment_id": "<bucket_compartment_OCID>",
"forceBucketCreation": true
}
}
次の表では、リポジトリの登録時に指定するパラメータについて説明します。
Parameter | 摘要 |
---|---|
リポジトリ名 |
スナップショットのリポジトリに割り当てる名前。 |
エンドポイント |
オブジェクト・ストレージ・バケットのエンドポイント。 たとえば、米国東部(アッシュバーン)リージョンのオブジェクト・ストレージ・エンドポイントはhttps://objectstorage.US-ashburn-1.oraclecloud.comです。 |
ネームスペース |
バケットのオブジェクト・ストレージ・ネームスペース。 |
authType |
OpenSearchによる検索がユーザーのかわりに機能することを許可するリソース・プリンシパルを使用する場合に指定します。 |
bucket_compartment_id |
バケットが配置されているコンパートメントのOCID。 |
forceBucketCreation |
オブジェクト・ストレージ・バケットが存在しない場合は作成することを指定します。デフォルトはfalseです。 |
スナップショットのリストア
スナップショットをリストアする前に、クラスタの既存のスナップショットをすべて取得できます。最初に、次の例に示すように、クラスタに登録されているすべてのリポジトリを取得します。
GET _snapshot/_all?pretty
次に、次の例に示すように、リポジトリ内のすべてのスナップショットを取得します。
GET _snapshot/<repository_name>?pretty
次の例に示すように、スナップショットを復元します。
POST _snapshot/<repository_name>/<snapshot_name>/_restore
{
"indices": "<index_name_to_include>,-<index_name_to_exclude>",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "(.+)",
"rename_replacement": "restored_$1",
"include_aliases": true
}
含める1つ以上の索引、<index_name_to_include>
および除外する1つ以上の索引、-<index_name_to_exclude>
を指定できます。
このAPI操作の詳細は、スナップショットのリストアを参照してください。