Amazon OpenSearch Service ドメインのアップグレード - Amazon OpenSearch Service

Amazon OpenSearch Service ドメインのアップグレード

注記

OpenSearch および Elasticsearch バージョンのアップグレードは、サービスソフトウェア更新とは異なります。OpenSearch Service ドメインのサービスソフトウェアの更新については、「Amazon OpenSearch Service でのサービスソフトウェア更新」を参照してください。

Amazon OpenSearch Service では、OpenSearch 1.0 以降または Elasticsearch 5.1 以降を実行するドメインに対して、インプレースアップグレードを提供しています。Amazon Kinesis Data Firehose や Amazon CloudWatch Logs などのサービスを使用して OpenSearch Service にデータをストリーミングする場合は、移行前にこれらのサービスが OpenSearch の新しいバージョンをサポートしていることを確認します。

サポートされているアップグレードパス

現在、OpenSearch Service は次のアップグレードパスをサポートしています。

元のバージョン 目的のバージョン
OpenSearch 1.x OpenSearch 1.x
Elasticsearch 7.x

Elasticsearch 7.x または OpenSearch 1.x

重要

OpenSearch 1.x では多数の画期的な変更が行われています。詳細については、「」を参照してくださいAmazon OpenSearch Service - 変更の概要

Elasticsearch 6.8

Elasticsearch 7.x または OpenSearch 1.x

重要

Elasticsearch 7.0 と OpenSearch 1.0 には、数多くの大きな変更が含まれています。インプレースアップグレードを開始する前に、6.x ドメインのスナップショットを手動で取得し、それをテスト用の 7.x または OpenSearch 1.x ドメインで復元して、そのテストドメインを使用してアップグレードの潜在的な問題を特定することをお勧めします。OpenSearch 1.0 での変更については、「Amazon OpenSearch Service - 変更の概要」を参照してください。

Elasticsearch 6.x と同様に、インデックスに含めることができるマッピングタイプは1つだけですが、そのタイプには _doc という名前を付ける必要があります。その結果、特定の API では、リクエスト本文にマッピングタイプ (_bulk API など) が不要になりました。

新しいインデックスの場合、セルフホストの Elasticsearch 7.x と OpenSearch 1.x のデフォルトのシャード数は1です。Elasticsearch 7.x以降での OpenSearch Service ドメインでは、以前のデフォルトの 5 のままです。

Elasticsearch 6.x

Elasticsearch 6.x

Elasticsearch 5.6

Elasticsearch 6.x

重要

バージョン 6.x で作成されたインデックスは、複数のマッピングタイプをサポートしなくなりました。バージョン 5.x で作成されたインデックスは、6.x クラスターに復元された場合でも、複数のマッピングタイプをサポートします。クライアントコードによって作成されるマッピングタイプがインデックスごとに 1 種類のみであることを確認します。

Elasticsearch 5.6 から 6.x へのアップグレード中のダウンタイムを最小限に抑えるため、OpenSearch Service は .kibana インデックスを .kibana-6 に再生成し、.kibana を削除して .kibana という名前でエイリアスを作成します。それから、新しいインデックスを新しいエイリアスにマッピングします。

Elasticsearch 5.x Elasticsearch 5.x

アップグレードプロセスには、3 つの手順が含まれます。

  1. アップグレード前の確認 – OpenSearch Service は、アップグレードをブロックする可能性のある問題に対して一連の確認を実行し、これらの確認が成功しない限り、次のステップに進みません。

  2. スナップショット – OpenSearch Service は、OpenSearch または Elasticsearch クラスターのスナップショットを取得し、スナップショットが成功しない限り次のステップに進みません。アップグレードが失敗した場合、OpenSearch Service はこのスナップショットを使用してクラスターを元の状態に復元します。このスナップショットの詳細については、「アップグレード後にダウングレードできない」を参照してください。

  3. アップグレード – OpenSearch Service がアップグレードを開始すると、完了まで 15 分から数時間かかります。OpenSearch Dashboards は、アップグレードの一部または全期間で使用できなくなる場合があります。

アップグレードの開始 (コンソール)

アップグレードプロセスは元に戻せず、一時停止またはキャンセルすることはできません。アップグレード中、ドメインの設定を変更することはできません。アップグレードを開始する前に、続行するかどうかを再度確認します。これらの同じ手順を使用して、アップグレードを実際に開始することなくアップグレード前の確認を実行することができます。

クラスタに専用のマスターノードがある場合、OpenSearch のアップグレードはダウンタイムなしで完了します。ない場合、クラスターがマスターノードを選択している間、アップグレード後数秒間応答しなくなることがあります。

ドメインを新しいバージョンの OpenSearch または Elasticsearch にアップグレードするには

  1. ドメインの手動スナップショットを作成します。以前のバージョンの Opensearch の使用に戻る場合、このスナップショットは、新しいドメインで復元できるバックアップとして機能します。

  2. https://aws.amazon.com にアクセスし、[コンソールにサインイン] を選択します。

  3. [分析] の下で、[Amazon OpenSearch Service] を選択します。

  4. ナビゲーションペインの [Domains] (ドメイン) で、アップグレードするドメインを選択します。

  5. [アクション] から [更新] を選択します。

  6. アップグレードするバージョンを選択します。OpenSearch バージョンにアップグレードする場合、[互換モードを有効にする] オプションが表示されます。この設定を有効にすると、OpenSearch はそのバージョンを 7.10 とレポートし、Elasticsearch の OSS クライアントや Logstash などのプラグインが Amazon OpenSearch Service での使用を継続できるようにします。この設定は後で無効にできます

  7. [アップグレード] を選択します。

  8. ドメインダッシュボードのステータスをチェックし、アップグレードのステータスをモニタリングします。

アップグレードの開始 (CLI)

以下のオペレーションを使用して、ドメイン用の正しい OpenSearch または Elasticsearch バージョンを識別できます。インプレースアップグレードを開始し、アップグレード前のチェックを実行して進捗状況を表示できます。

  • get-compatible-versions (GetCompatibleVersions)

  • upgrade-domain (UpgradeDomain)

  • get-upgrade-status (GetUpgradeStatus)

  • get-upgrade-history (GetUpgradeHistory)

詳細については、「AWS CLI コマンドリファレンス」および「Amazon OpenSearch Service の設定 API リファレンス」を参照してください。

アップグレードの開始 (SDK)

このサンプルでは、AWS SDK for Python (Boto) の OpenSearchService 低レベル Python クライアントを使用して、ドメインが特定のバージョンにアップグレードするための要件を満たしているかどうかを確認し、そのドメインをアップグレードして、アップグレードステータスを継続的にチェックします。

import boto3 from botocore.config import Config import time # Build the client using the default credential configuration. # You can use the CLI and run 'aws configure' to set access key, secret # key, and default Region. DOMAIN_NAME = '' # The name of the domain to upgrade TARGET_VERSION = '' # The version you want to upgrade the domain to. For example, OpenSearch_1.1 my_config = Config( # Optionally lets you specify a Region other than your default. region_name='us-east-1' ) client = boto3.client('opensearch', config=my_config) def check_versions(): """Determine whether domain is eligible for upgrade""" response = client.get_compatible_versions( DomainName=DOMAIN_NAME ) compatible_versions = response['CompatibleVersions'] for i in range(len(compatible_versions)): if TARGET_VERSION in compatible_versions[i]["TargetVersions"]: print('Domain is eligible for upgrade to ' + TARGET_VERSION) upgrade_domain() print(response) else: print('Domain not eligible for upgrade to ' + TARGET_VERSION) def upgrade_domain(): """Upgrades the domain""" response = client.upgrade_domain( DomainName=DOMAIN_NAME, TargetVersion=TARGET_VERSION ) print('Upgrading domain to ' + TARGET_VERSION + '...' + response) time.sleep(5) wait_for_upgrade() def wait_for_upgrade(): """Get the status of the upgrade""" response = client.get_upgrade_status( DomainName=DOMAIN_NAME ) if (response['UpgradeStep']) == 'UPGRADE' and (response['StepStatus']) == 'SUCCEEDED': print('Domain successfully upgraded to ' + TARGET_VERSION) elif (response['StepStatus']) == 'FAILED': print('Upgrade failed. Please try again.') elif (response['StepStatus']) == 'SUCCEEDED_WITH_ISSUES': print('Upgrade succeeded with issues') elif (response['StepStatus']) == 'IN_PROGRESS': time.sleep(30) wait_for_upgrade() def main(): check_versions() if __name__ == "__main__": main()

アップグレードのトラブルシューティング

インプレース アップグレードには、正常なドメインが必要です。ドメインがアップグレードの対象とならなかったり、さまざまな理由でアップグレードに失敗する場合があります。次の表は、最も一般的な問題を示しています。

問題 説明
ノードあたりのシャードが多すぎます OpenSearchだけでなく、7.x バージョンの Elasticsearch のデフォルト設定も、ノードあたり 1,000 シャード以下です。現在のクラスター内のノードがこの設定を超えている場合、OpenSearch Service はアップグレードを許可しません。トラブルシューティングのオプションについては、「シャードの最大制限を超えました」を参照してください。
処理中のドメイン ドメインは、設定変更中です。オペレーション完了後、アップグレードの適格性を確認します。
赤のクラスター状態 クラスター内の 1 つ以上のインデックスが赤です。トラブルシューティングステップについては、「赤のクラスター状態」を参照してください。
高いエラー率 クラスターはリクエストの処理を試みましたが、大量の 5xx エラーを返しています。この問題は通常、同時読み取りまたは書き込みリクエストが多すぎることで起こります。クラスターへのトラフィックを減らすか、ドメインのスケーリングを検討してください。
スプリットブレイン スプリットブレインとは、 クラスターに 1 つ以上のマスターノードがあり、決して独自に再結合することのない 2 つのクラスターに分割されているという意味です。専用マスターノードの推奨値を使用することで、スプリットブレインを回避できます。スプレッドブレインからの復旧方法については、AWS Support にお問い合わせください。
マスターノードが見つからない OpenSearch Service は、クラスターのマスターノードを見つけることができません。ドメインでマルチ AZ を使用している場合、アベイラビリティーゾーンの障害によってクラスターがクォーラムを失い、新しいマスターノードを選択できなくなる可能性があります。問題が自動的に解決されない場合、AWS Support にお問い合わせください。
保留中のタスクが多すぎる マスターノードに高い負荷がかかっており、たくさんの保留中のタスクがあります。クラスターへのトラフィックを減らすか、ドメインのスケーリングを検討してください。
障害が発生したストレージボリューム 1 つ以上のノードのディスクボリュームが正常に機能していません。この問題は、高いエラー率や保留中のタスクが多すぎるなど、他の問題とともに頻繁に発生します。問題が単独で発生し、自動的に解決されない場合は、AWS Support にお問い合わせください。
KMS キーの問題 ドメインの暗号化に使用する KMS キーがアクセス不可能であるか、または存在しません。詳細については、「保管中のデータを暗号化するドメインのモニタリング」を参照してください。
スナップショットを作成中 ドメインは現在、スナップショットを作成しています。スナップショットの完了後に、アップグレードの適格性を確認します。手動スナップショットのリポジトリが一覧表示できること、それらのリポジトリ内のスナップショットが一覧表示できること、および手動スナップショットが作成できることも確認してください。OpenSearch Service が、スナップショットが作成中かどうか確認できない場合、アップグレードは失敗します。
スナップショットのタイムアウトまたは障害 アップグレード前のスナップショットの完了まで時間がかかりすぎたか、失敗しました。クラスター状態を確認して、再度お試しください。問題が解決しない場合は、AWS Support までお問い合わせください。
互換性のないインデックス 1 つ以上のインデックスがターゲットバージョンと互換性がありません。この問題は、以前のバージョンの OpenSearch または Elasticsearch からインデックスを移行した場合に発生する可能性があります。インデックスを再作成して、再試行してください。
高いディスク使用率 クラスターのディスク使用率が 90% を超えています。データを削除またはドメインをスケーリングして、再度お試しください。
高い JVM 使用率 JVM メモリプレッシャーが 75% を超えています。クラスターへのトラフィックを削減するか、ドメインをスケーリングして、再度お試しください。
Opensearch Dashboards エイリアスの問題 .kibana はエイリアスとして既に設定されており、互換性のないインデックスにマッピングされています。おそらく、以前のバージョンの OpenSearch Dashboards からのインデックスです。インデックスを再作成して、再度お試しください。
赤の Dashboards ステータス Opensearch Dashboards のステータスが赤くなっています。アップグレードが完了したら、Dashboards を使用してみてください。赤いステータスが続く場合は、手動で解決してから再度お試しください。
クラスター間の互換性

アップグレードできるのは、アップグレード後にソースドメインとデスティネーションドメインの間で、クラスター間の互換性が維持されている場合のみです。アップグレードプロセス中に、互換性のない接続があれば特定されます。続行するには、リモートドメインをアップグレードするか、互換性のない接続を削除します。ドメインでレプリケーションがアクティブな場合は、接続を削除した後でレプリケーションを再開できないことに注意してください。

OpenSearch Service のサービスに関するその他の問題 OpenSearch Service 自体の問題により、ドメインがアップグレード対象外として表示される可能性があります。前述の条件がドメインに当てはまらず、問題が 1 日以上続く場合は、AWS Support にお問い合わせください。

スナップショットを使用してデータを移行する

インプレースアップグレードは、ドメインを新しい OpenSearch または Elasticsearch バージョンにアップグレードする従来よりも簡単で迅速な、信頼性の高い方法です。スナップショットは、Elasticsearch の 5.1 より前のバージョンから移行する必要がある場合や、まったく新しいクラスターに移行する場合に適しています。

次の表は、スナップショットを使用して、OpenSearch または Elasticsearch の異なるバージョンを使用するドメインにデータを移行する方法を示しています。スナップショットの作成と復元の詳細については、「Amazon OpenSearch Service でのインデックススナップショットの作成」を参照してください。

元のバージョン 目的のバージョン 移行プロセス
Elasticsearch 6.x または 7.x OpenSearch 1.x
  1. OpenSearch 1.0 の重大な変更を確認して、インデックスまたはアプリケーションを調整する必要があるかどうかを確認します。その他の考慮事項については、「Amazon OpenSearch Service ドメインのアップグレード」の表を参照してください。

  2. Elasticsearch 7.x または 6.x ドメインの手動スナップショットを作成します。

  3. OpenSearch 1.x ドメインを作成します。

  4. Elasticsearch ドメインから OpenSearch ドメインにスナップショットを復元します。オペレーション中に、新しい名前で .kibana インデックスを復元することが必要になる場合があります。

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".kibana", "rename_replacement": ".backup-kibana" }

    次に、新しいドメインで .backup-kibana のインデックスを再作成し、エイリアス .kibana を付けることができます。

  5. 元のドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。

Elasticsearch 6.x Elasticsearch 7.x
  1. 7.0 の重大な変更を確認して、インデックスまたはアプリケーションを調整する必要があるかどうかを確認します。その他の考慮事項については、「Amazon OpenSearch Service ドメインのアップグレード」の表を参照してください。

  2. 6.x ドメインの手動スナップショットを作成します。

  3. 7.x ドメインを作成します。

  4. 元のドメインのスナップショットを 7.x ドメインに復元します。オペレーション中に、新しい名前で .kibana インデックスを復元することが必要になる場合あります。

    POST _snapshot/<repository-name>/<snapshot-name>/_restore { "indices": "*", "ignore_unavailable": true, "rename_pattern": ".kibana", "rename_replacement": ".backup-kibana" }

    次に、新しいドメインで .backup-kibana のインデックスを再作成し、エイリアス .kibana を付けることができます。

  5. 元のドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。

Elasticsearch 6.x Elasticsearch 6.8
  1. 6.x ドメインの手動スナップショットを作成します。

  2. 6.8 ドメインを作成します。

  3. 元のドメインのスナップショットを 6.8 ドメインに復元します。

  4. 元のドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。

Elasticsearch 5.x Elasticsearch 6.x
  1. インデックスやアプリケーションを調整する必要があるかどうかを確認するには、「6.0 の重要な変更」を参照します。その他の考慮事項については、「Amazon OpenSearch Service ドメインのアップグレード」の表を参照してください。

  2. 5.x ドメインの手動スナップショットを作成します。

  3. 6.x ドメインを作成します。

  4. 元のドメインのスナップショットを 6.x ドメインに復元します。

  5. 5.x ドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。

Elasticsearch 5.x Elasticsearch 5.6
  1. 5.x ドメインの手動スナップショットを作成します。

  2. 5.6 ドメインを作成します。

  3. 元のドメインのスナップショットを 5.6 ドメインに復元します。

  4. 元のドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。

Elasticsearch 2.3 Elasticsearch 6.x

Elasticsearch 2.3 のスナップショットは 6.x とは互換性がありません。データを 2.3 から 6.x に直接移行するには、新しいドメインでインデックスを手動で再作成する必要があります。

または、この表の 2.3 から 5.x のステップに従い、新しい 5.x ドメインで _reindex オペレーションを実行して、2.3インデックスを5.x インデックスに変換してから、5.x から 6.x のステップに従うこともできます。

Elasticsearch 2.3 Elasticsearch 5.x
  1. 5.0 の重大な変更を確認して、インデックスまたはアプリケーションを調整する必要があるかどうかを確認します。

  2. 2.3 ドメインの手動スナップショットを作成します。

  3. 5.x ドメインを作成します。

  4. 2.3 ドメインのスナップショットを 5.x ドメインに復元します。

  5. 2.3 ドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。

Elasticsearch 1.5 Elasticsearch 5.x

Elasticsearch 1.5 のスナップショットは 5.x とは互換性がありません。データを 1.5 から 5.x に移行するには、新しいドメインでインデックスを手動で再作成する必要があります。

重要

1.5 のスナップショットには 2.3 との互換性がありますが、OpenSearch Service 2.3 のドメインでは _reindex オペレーションがサポートされていません。それらのインデックスを再作成できないため、1.5 ドメインで作成されたインデックスは、2.3 スナップショットから 5.x ドメインへの復元に失敗します。

Elasticsearch 1.5 Elasticsearch 2.3
  1. 移行プラグインを使用して、バージョン 2.3 に直接アップグレードできるかどうかを確認します。移行前にデータの変更が必要になる場合もあります。

    1. ウェブブラウザで、http://domain-endpoint/_plugin/migration/ を開きます。

    2. [今すぐ確認を実行] を選択します。

    3. 結果を確認し、必要に応じて、手順に従いデータを変更します。

  2. 1.5 ドメインの手動スナップショットを作成します。

  3. 2.3 ドメインを作成します。

  4. 1.5 ドメインのスナップショットを 2.3 ドメインに復元します。

  5. 1.5 ドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。