オンプレミスからAWSへ、Elasticワークロード移行を自動化する10のステップ

blog-thumb-cloud-aws.png

セルフマネージドのワークロードをAmazon Web Services(AWS)のElasticに移行して費用と時間、スケールの効率を高める心の準備ができたら、まずこちら記事をお読みください。AWSとElasticが共同で開発したベストプラクティスとツール群を活用し、移行を確実に、すばやくスムーズに完了させることができます。この記事は、はじめにセルフサービスによる3つの移行パスのオプションについて概説し、その後、シンプルな手順で移行を自動化する手順を説明します。

パスを選択する

オンプレミスのデータセットをAWS環境のElasticに追加する主な方法は、“データの再インジェスト”、“スナップショットと復元”、“クラスターからの再インデックス”の3つです。

1. データソース(アプリやデータベース、インフラなど)も一緒にAWSに移行する場合、そのデータをソースからElastic再インジェストすることができます。ElasticがAWSの人気サービス向けに提供する統合機能群が、データの効率的なインジェストを支援します。クリックするだけでデータを捕捉、格納、検索することができます。

2. 既存のクラスターのデータをElastic Cloudに移す必要があり、かつ既存のクラスターがElastic Cloudよりも古いバージョンのElasticsearchを実行している場合は、“スナップショットと復元”の方法が理想的です。

3. もう1つのオプションが、クラスターからの再インデックスです。データ量が少ないか、スナップショットと復元を使う方法に何らかの制約があり、かつ既存のクラスターがElastic Cloudよりも古いバージョンのElasticsearchを実行している場合は、この方法が理想的です。Reindex APIの使用方法について詳しくは、移行ガイドをご覧ください。

本ブログ記事では、シンプルな手順で移行パスを自動化する“スナップショットと復元”について説明します。

“スナップショットと復元”で自動的に移行させる

本セクションではTerraform(コードソフトウェアとしてのオープンソースインフラ)で“スナップショットと復元”を使った移行を簡単に実行する方法を取り上げます。はじめに前提条件を確認し、その後実際の手順を解説します。

前提条件

  1. 移行先のElastic Cloudが、移行元のElasticsearchと同じ、あるいはそれより新しいバージョンを実行していることを確認します。バージョン互換性に関する詳細な表は、Elasticが提供するスナップショットと復元のガイドに掲載されています。
  2. Elastic Cloudクラスターのインフラキャパシティが、ユースケースのデータ量と演算処理要件を受け入れる上で十分足りることを確認します。
  3. Elastic Cloudへのデプロイ移行に影響する制約が存在しないことを確認するために、Elasticスナップショットと復元ガイド、ならびに、Elasticアップグレードガイドのバージョン固有の破壊的変更のセクションに列挙されている制限事項をチェックしてください。
  4. Terraformソフトウェアの適正なバージョンがインストールされていること、および、Terraformのvault機能が有効化されていることを確認します。
  5. Elasticsearch APIキー(var.apikey)やAWSアクセスキー(var.s3_client_access_key, var.s3_client_secret_key)など、必要な情報を収集します。
  6. オンプレミスと AWS VPC上のElastic間、および他のAWSリソース権限との間のネットワーク接続(ダイレクトな接続)を確認します。
  7. 既存のElasticsearchクラスターでElasticsearch AWS CLIおよびAmazon Simple Storage Service(Amazon S3)プラグインを使用していないユーザーは、次のコマンドを使用してElasticsearchのホームから直接インストールする必要があります。
> sudo bin/elasticsearch-plugin install repository-s3
  1. 既存のElasticsearchクラスターのルートディレクトリで次のコマンドを使用し、ElasticsearchキーストアにAmazon S3アクセスキーを追加します(画面の案内に従い、前出のAmazon S3のバケット作成プロセスで取得した正しいキーを入力します)。
> bin/elasticsearch-keystore add s3.client.default.access_key
> bin/elasticsearch-keystore add s3.client.default.secret_key
Elastic Cloudへの移行アーキテクチャー

移行手順

  1. Amazon S3サービスを使用して、Elastic Cloudスナップショットレポジトリを作成、登録します。
  2. ローカルのスナップショットレポジトリを作成、設定してAmazon S3バケットを指示します。
  3. ローカルのクラスターからスナップショットを作成し、Amazon S3バケットに格納します。
  4. Elastic Cloudクラスターをプロビジョニングします。
  5. Elastic Agentに必要なAWSリソースをプロビジョニングします。
  6. スムーズなログインジェストに必要となるElastic Serverless Forwarderをプロビジョニングします。
  7. きめ細かな権限設定を含む複数のAWS Identity and Access Management(IAM)インスタンスロールを作成し、デプロイのプロセスに必要なAWSサービスへのアクセスを取得します。
  8. Elastic Cloudですべてのインデックスを終了します。
  9. Elastic Cloudでスナップショットからローカルクラスターのデータを復元します。
  10. 最後に、Elastic Cloudですべてのインデックスを開きます。

デプロイの手順

必要なシークレットアクセスキーの収集など、記事冒頭の「前提条件」セクションで簡単に説明した手順の詳しい内容は次の通りです。すでに手元にキーがある場合、手順をスキップして3つ目の手順から開始できます。

  1. Elasticsearch Service(ESS)APIキーを生成します。
    1. ブラウザーを開き、https://cloud.elastic.co/loginにアクセスします。
    2. メールアドレスとパスワードでログインします。
    3. Elasticsearch Service]をクリックします。
    4. [Features]>[API Keys](機能>APIキー)に進み、[Generate API Key](APIキーを生成する)をクリックします。
    5. APIキーの名前を指定します。
    6. APIキーを安全な場所に控えておきます。
  2. AWSアクセスキーを作成する
    1. リスト、読み取り、書き込みを許可するS3バケットポリシーを作成します。
    2. IAMユーザーを作成し、前の手順で作成したポリシーを添付します。
    3. IAMユーザーに[Programmatic access](プログラミングによるアクセス権限)が付与されていることを確認します。
    4. AWSアクセスキーを安全な場所に控えておきます。
  3. 次のコマンドを使用して、Terraform Elastic Cloud移行レポジトリのクローンを作成します。
    1. git clone https://github.com/aws-ia/terraform-elastic-cloud
    2. cd terraform-elastic-cloud
  4. HashiCorp Vaultを使用しているユーザーは、次のようにVault環境変数を設定することができます。
    1. export VAULT_ADDR= "Your Vault URL"
    2. export VAULT_TOKEN= "Your Vault Token"                                                                                  Elasticsearch APIキー(この例では、パスに“ess”を使用)を追加します
vault kv put secret/ess apikey="Your Elastic API Key"

AWS APIキー(この例では、パスに“awsを使用)を追加します

vault kv put secret/aws s3_client_access_key="Your AWS Access Key"     
s3_client_secret_key="Your AWS Secret Key"
  1. キーを提供します。Terraformでは、いくつかの方法でキーを提供することができます。この例ではVariable Definitions(.tfvars)を使用する方法で実行します。新たに追加されたこの機能は、ElasticsearchクラスターからElastic Cloudへの移行を自動化します。(HashiCorp Vaultを使用する場合)ファイルは下のようにになります。

以下の例に示すように、セルフマネージドのElasticsearchのURLを指定するだけでこのステップは完了します。

    var.local_elasticsearch_url (e.g., http://127.0.0.1:9200).

    たとえば(HashiCorp Vaultを使用する場合)、下のように、var.local_elasticsearch_urlを同じtesting.tfvarsに追加することができます。

    name = "Elasticsearch Cluster"
    local_elasticsearch_url = ""
    vault_address = "Your Local Elastic Cluster URL"
    vault_ess_path = "secret/ess"
    vault_aws_path = "secret/aws"
    apikey = "hashicorp/vault"
    s3_client_access_key = "hashicorp/vault"
    s3_client_secret_key  = "hashicorp/vault"

    代わりに、次のように直接キーを入力することもできます。

    name = "Elasticsearch Cluster"
    local_elasticsearch_url = ""
    apikey = "Your Elastic API Key"
    s3_client_access_key = "Your AWS Access Key"
    s3_client_secret_key  = "Your AWS Secret Key"
    1. .tfvarsファイル(この記事の例では、testing.tfvarsという名前のファイルを使用)で一連の変数の指定を完了したら、次のコマンドでTerraformモジュールを実行することができます。
          terraform init
          terraform validate
          terraform apply -var-file="testing.tfvars"

          デプロイを削除する

          Terraformモジュールでプロビジョニングしたインフラがもう用済みである場合は、次のコマンドですべてのリソースを簡単に消去することができます。
          terraform destroy -var-file="testing.tfvars"

          Elastic × AWSの移行リソースをさらに活用する

          ElasticはAWS ISV ワークロード移行プログラム(WMP)の認定パートナーとして、オンプレミス・セルフマネージドのElasticsearch、またはElastic StackのワークロードからAWSのElasticに移行するお客様を支援しています。Elasticが提示するメソドロジーは規範的かつ再現性にすぐれたアプローチを特徴とし、すみやかな移行作業を実現します。またAWS Well-Architected FrameworkAWS Migration Acceleration Programをはじめ、AWSが公開している移行ガイダンスやベストプラクティスとダイレクトに連携しています。AWS WMPプログラムは、ビジネスの目標やクラウド活用の取り組みを支援します。導入ガイダンスや移行リソース、AWSインフラクレジット、資金調達支援などのメリットをぜひ最大限ご活用ください。

          今すぐAWSのElasticへの移行を始める

          おなじみのElasticソリューション群に加えて、クラウドならではの各種機能も最大限に活用しましょう。評価や計画、費用の支援など、Elasticのサポートについて詳しくは移行ガイドクイックスタートガイドWebサイトドキュメントをご参照いただくか、Elasticに直接お問い合わせください。複雑で大規模なワークロードの移行に関しては、ぜひElasticコンサルティングチームのご利用もご検討ください。ElasticのデプロイはAWS Marketplaceから直接、わずか数分で使い始めることができます。まずは7日間の無料トライアルでお試しください。

          本記事に記述されているあらゆる機能ないし性能のリリースおよびタイミングは、Elasticの単独裁量に委ねられます。現時点で提供されていないあらゆる機能ないし性能は、すみやかに提供されない可能性、または一切の提供が行われない可能性があります。