外部OpenSearchクラスタのインポート

既存のクラスタを外部のOpenSearchインストールからOracle Cloud Infrastructureに持ち込むことができます。これにより、Searchによって提供されるマネージド・サービス機能をOpenSearchで利用できます。

このトピックでは、既存のOpenSearchクラスタをOracle Cloud Infrastructureに取り込むプロセスについて説明します。次のタスクが含まれます。

  1. クラスタのスナップショットの取得
  2. Object Storageにスナップショットをアップロードします。
  3. OpenSearchを使用した検索で宛先クラスタを作成します
  4. 必要な権限を使用して動的ポリシーを構成します。
  5. リポジトリを登録します
  6. スナップショットを復元します

事前設定

このトピックで説明するステップに進む前に、作業できるテナンシが必要です。テナンシへのログインに使用するユーザー・アカウントには、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を取得するには:

  1. 「バケットの詳細」ページで、「クラスタ情報」「コンパートメント」のリンクをクリックします。
  2. 「コンパートメント情報」OCID「コピー」をクリックします。

宛先クラスタの作成

外部のOpenSearchインストールからのスナップショットをOracle Cloud Infrastructureにインポートする前に、OpenSearchを使用してSearchでOpenSearchクラスタを作成する必要があります。このクラスタは、スナップショットがインポートされる宛先クラスタになります。

必要な前提条件など、クラスタの作成方法を説明する手順については、OpenSearchクラスタの作成を参照してください。

重要

クラスタを作成するときは、スナップショットをインポートするソース・クラスタと同じノード構成でクラスタを構成してください。

クラスタに関する次の情報をノートにとります。

  • OCID
  • コンパートメント名

この情報は、コンソールの「クラスタの詳細」ページで確認できます。OpenSearchクラスタの詳細の取得を参照してください。また、コンパートメントのOCIDもノートにとります。

コンパートメントOCIDを取得するには:

  1. 「クラスタ詳細」ページで、「クラスタ情報」>「コンパートメント」のリンクをクリックします。
  2. 「コンパートメント情報」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操作の詳細は、スナップショットのリストアを参照してください。