外部OpenSearchクラスタのインポート
既存のクラスタは、外部のOpenSearchインストールからOracle Cloud Infrastructureに持ち込むことができます。これにより、OpenSearchを使用した検索で提供されるマネージド・サービス機能を利用できます。
このトピックでは、既存のOpenSearchクラスタをOracle Cloud Infrastructureに持ち込むプロセスについて説明します。次のタスクが含まれます:
- クラスタのスナップショットを取得する。
- オブジェクト・ストレージへのスナップショットのアップロード。
- 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 - スナップショットの取得およびリストアを参照してください。
オブジェクト・ストレージ・バケットへのスナップショットのアップロード
スナップショットが生成されたら、スナップショット・ファイルをテナンシのオブジェクト・ストレージ・バケットにアップロードします。バケットの作成およびバケットへのファイルのアップロード方法を説明するチュートリアルは、オブジェクト・ストレージへのデータの配置を参照してください。
スナップショットをアップロードしたバケットに関する次の情報をノートにとります。この情報は、コンソールの「バケット詳細」ページで確認できます。
- ネームスペース
- コンパートメント名
- バケット名
- リポジトリ名
- スナップショット・ファイル名
コンパートメント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
}
}
次の表に、リポジトリの登録時に指定するパラメータを示します。
パラメータ | 摘要 |
---|---|
リポジトリ名前 |
スナップショットのリポジトリに割り当てる名前。 |
エンド・ポイント |
オブジェクト・ストレージ・バケットのエンドポイント。 たとえば、米国東部(アッシュバーン)リージョンのオブジェクト・ストレージ・エンドポイントは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操作の詳細は、スナップショットのリストアを参照してください。